Version 49 of Build Androwish

Updated 2016-09-28 21:51:08 by chw

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:

  1. Download the Android SDK. From https://developer.android.com/studio/index.html download the latest version under "Get just the command line tools" - currently android-sdk_r24.4.1-windows.zip
  2. Unpack the SDK (E:\android-build\android-sdk-windows), run "SDK Manager.exe", and click Install Packages with the selected items. This'll take a while.
  3. Download the NDK from https://developer.android.com/ndk/downloads/index.html (Windows 32- or 64-bit, as appropriate), extract to E:\android-build\android-ndk-r12b
  4. Download the latest Apache Ant .zip archive from http://ant.apache.org/bindownload.cgi and extract to E:\android-build\apache-ant-1.9.7
  5. Download AndroWish source from http://www.androwish.org/download/index.html and extract to E:\android-build\androwish-a05b615f58
  6. Add the following to your path: E:\android-build\apache-ant-1.9.7\bin;E:\android-build\android-sdk-windows\tools;E:\android-build\android-ndk-r12b
  7. Start -> Run, type "cmd.exe" to open the Command Prompt. In the prompt, type "e:" to switch to the E drive (been so long since I've used the command prompt much that I had to look this up, since "cd" won't do it;) then "cd e:\android-build\androwish-a05b615f58". Using Tab for path completion is your friend (androwish-<tab>).
  8. As per the docs above, I tried "android update project", and got an error that said I needed to include a path. "android update project --path e:\android-build\androwish-a05b615f58" then gave me an error that there was no target specified. Some Googling gave the solution:
  9. Type "android list targets". It'll list at least two with the default SDKs you installed earlier via "SDK Manager.exe" - the latest Android API (v24 for me), and the same again with some Google APIs (Google USB Driver). The first line for each listed is: id: X, or "YYYYY". You can specify either X or YYYYY for --target. For me, that's either "1" or "android-24". So:
  10. android update project --path e:\android-build\androwish-a05b615f58 --target 1
  11. Run "ant debug". And this is where I hit a problem. It fails with the following error:
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.