This page was moved to [L1 ].
Here, it will be deleted soon.
I hope this is ok for anybody. I only want to maintain one page...
Thank you,
Harald
MG 27-09-2016 I am, once again, trying my clueless hand at building AndroWish on Windows. For anyone else trying (and for me in the future, as I'll forget in 10 minutes;), I'm going to try and document everything I'm doing, up to wherever I get stuck (or, more optimistically, where it works;). I'm following the link above, and muddling through with further info from a couple of other sources.
I'm putting everything in E:\android-build\ for simplicity, and the dir names for the various downloads reflect the latest versions as of today
So, here's what I've done so far:
e:\android-build\androwish-a05b615f58>ant debug Unable to locate tools.jar. Expected to find it in C:\Program Files (x86)\Java\j re1.8.0_101\lib\tools.jar Buildfile: e:\android-build\androwish-a05b615f58\build.xml -set-mode-check: -set-debug-files: -check-env: [checkenv] Android SDK Tools Revision 25.2.2 [checkenv] Installed at E:\android-build\android-sdk-windows -setup: [echo] Project Name: AndroWish [gettype] Project Type: Application -set-debug-mode: -debug-obfuscation-check: -pre-build-links: -pre-build-copies: ndk-build: BUILD FAILED e:\android-build\androwish-a05b615f58\custom_rules.xml:82: Execute failed: java.io.IOException: Cannot run program "ndk-build" (in directory "e:\android-build\androwish-a05b615f58"): CreateProcess error=2, The system cannot find the file specified at java.lang.ProcessBuilder.start(Unknown Source) at java.lang.Runtime.exec(Unknown Source) at org.apache.tools.ant.taskdefs.launcher.Java13CommandLauncher.exec(Java13CommandLauncher.java:58) at org.apache.tools.ant.taskdefs.Execute.launch(Execute.java:426) at org.apache.tools.ant.taskdefs.Execute.execute(Execute.java:440) at org.apache.tools.ant.taskdefs.ExecTask.runExecute(ExecTask.java:629) at org.apache.tools.ant.taskdefs.ExecTask.runExec(ExecTask.java:670) at org.apache.tools.ant.taskdefs.ExecTask.execute(ExecTask.java:496) at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:293) at sun.reflect.GeneratedMethodAccessor4.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106) at org.apache.tools.ant.Task.perform(Task.java:348) at org.apache.tools.ant.Target.execute(Target.java:435) at org.apache.tools.ant.Target.performTasks(Target.java:456) at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1405) at org.apache.tools.ant.Project.executeTarget(Project.java:1376) at org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:41) at org.apache.tools.ant.Project.executeTargets(Project.java:1260) at org.apache.tools.ant.Main.runBuild(Main.java:854) at org.apache.tools.ant.Main.startAnt(Main.java:236) at org.apache.tools.ant.launch.Launcher.run(Launcher.java:285) at org.apache.tools.ant.launch.Launcher.main(Launcher.java:112) Caused by: java.io.IOException: CreateProcess error=2, The system cannot find the file specified at java.lang.ProcessImpl.create(Native Method) at java.lang.ProcessImpl.<init>(Unknown Source) at java.lang.ProcessImpl.start(Unknown Source) ... 24 more Total time: 0 seconds
There are ndk-build.cmd scripts in both E:\android-build\android-ndk-r12b (which is in my path) and E:\android-build\android-ndk-r12b\build (the former simply runs the latter). I've tried putting the \build dir in my path instead/as well, but get the same result.
I then tried running "ndk-build" manually, which gave me separate errors:
e:\android-build\androwish-a05b615f58>ndk-build jni/tcl-pkgs/itcl4.0.5/Android.mk:13: jni/tcl-pkgs/itcl4.0.5/../../tcl-config.mk: No such file or directory jni/tcl-pkgs/sqlite3.14.1/Android.mk:13: jni/tcl-pkgs/sqlite3.14.1/../../tcl-config.mk: No such file or directory jni/tcl-pkgs/tdbc1.0.4/Android.mk:13: jni/tcl-pkgs/tdbc1.0.4/../../tcl-config.mk: No such file or directory jni/tcl-pkgs/thread2.8.0/Android.mk:13: jni/tcl-pkgs/thread2.8.0/../../tcl-config.mk: No such file or directory jni/tcl-pkgs/itcl4.0.5/Android.mk:13: jni/tcl-pkgs/itcl4.0.5/../../tcl-config.mk: No such file or directory jni/tcl-pkgs/sqlite3.14.1/Android.mk:13: jni/tcl-pkgs/sqlite3.14.1/../../tcl-config.mk: No such file or directory jni/tcl-pkgs/tdbc1.0.4/Android.mk:13: jni/tcl-pkgs/tdbc1.0.4/../../tcl-config.mk: No such file or directory jni/tcl-pkgs/thread2.8.0/Android.mk:13: jni/tcl-pkgs/thread2.8.0/../../tcl-config.mk: No such file or directory make: *** No rule to make target `jni/tcl-pkgs/thread2.8.0/../../tcl-config.mk'. Stop.
Hrm. That only happens for a few packages, and they're all in the tcl-pkgs error. That seems curious. Opening up those Android.mk files, they all have the lines
tcl_path := $(LOCAL_PATH)/../.. include $(tcl_path)/tcl-config.mk LOCAL_ADDITIONAL_DEPENDENCIES += $(tcl_path)/tcl-config.mk
which is the wrong path. Changing all of those tcl_path lines to
tcl_path := $(LOCAL_PATH)/../../tcl
gets around that error, and it starts building all the packages. Guessing this is an AndroWish issue in the current version?
After a lot of successful builds along the lines of the first few shown below, it then errors:
[armeabi] Compile thumb : crypto_tls <= v3_pku.c [armeabi] Compile thumb : crypto_tls <= v3_pmaps.c [armeabi] Compile thumb : crypto_tls <= v3_prn.c [armeabi] Compile thumb : crypto_tls <= v3_purp.c [armeabi] Compile thumb : crypto_tls <= v3_skey.c [armeabi] Compile thumb : crypto_tls <= v3_sxnet.c [armeabi] Compile thumb : crypto_tls <= v3_utl.c [armeabi] Compile thumb : crypto_tls <= v3err.c [armeabi] SharedLibrary : libcrypto_tls.so arm-linux-androideabi-g++: error: CreateProcess: No such file or directory make: *** [obj/local/armeabi/libcrypto_tls.so] Error 1
And at this point I'm at a loss again. Anyone with more experience have any ideas?
chw 2016-09-27: the path issue with the tcl_path macro should have been resolved by one of the ant targets -pre-build-links and -pre-build-copies. The first makes some symbolic links, the second physical file copies depending on the support of the development system with respect to symbolic links. So you're on Windows which I thought won't do symlink but can copy files. Well, now it seems it can't even do that, bummer (a new Windows 10 feature?). The ant rules for these operations are in custom_rules.xml in the top level directory. And maybe for Windows the ndk-build target has to execute ndk-build.cmd instead of the plain ndk-build. Regarding the problem of building LibreSSL: maybe you should ndk-build with the option V=1 in order to see more of the failing command line. Regarding the "android update project" stuff: it is IMO no good idea to build against API 24 but to install an older SDK platform with the Android SDK manager, AndroWish prefers API 15 (which is Android 4.1).
chw 2016-09-28: things become clearer now. The custom_rules.xml needed some changes which can be found in check-in http://www.androwish.org/index.html/info/68819df035980aae . However, the ndk-build breaking on LibreSSL can't be easily solved, since it hits the Windows 32768 chars command line limit. Your only option now is to leave out libressl, curl, TclCurl, and tls from your build by simply renaming the respective Android.mk files to e.g. Android.nomk and rebuild everything from scratch, and then lay back patiently hoping for the next decade either Microsoft or Google fixing their operating systems or their tools to overcome this limitation.