Hi,

I'm still struggling to compile BRLTTY for Android on Windows. I tried few different ways how to do that, but all failed. I will describe my attempts here. Note I followed the help in Documents/README.Android file.

1) Using Cygwin or MinGW - this path was a dead end. I was able to install the required tools like autogen, make, etc. but I got stuck at weird errors I don't even remember now. I don't think this is good way anyway.

2) On Windows 10 there is now Linux Subsystem feature which we can use directly instead of Cygwin / MinGW. I enabled it, installed Ubuntu, and tried compilation of BRLTTY there. It went much more easily, but I got stuck at the final "make -s" in Android/Application folder anyway.

Also it is worth mentioning there are various difficulties regarding this way: - It is available only on Windows 10 and it requires some work to enable it and install it. - When getting sources via Git checkout, repository must be configured with /autocrlf = false/, so files will have LF (not CRLF as default on Windows) line endings. Otherwise /autogen/ and other tools fails to work. - We must download both Android SDK and Android NDK for linux and have it separate from our normal Android SDK/NDK for Windows which we are using for example in Android Studio. - Just note that we must also use /"/mnt/c//some-directory" paths instead of "C:\some-directory" paths everywhere.

So /./autogen/ and /./cfg-andorid -q/ commands finished successfully, but there were configure warning which I don't know if are ok to ignore. See below:

/configure: WARNING: no commonly used jni installation directory//
//configure: WARNING: Cannot find ocamlc.//
//configure: WARNING: OCaml BrlAPI bindings not included//
//configure: WARNING: Tcl configuration script not found: tclConfig.sh//
//configure: WARNING: Tcl packages directory not found//
//configure: WARNING: Tcl BrlAPI bindings not included//
//configure: WARNING: dbus support not available//
//configure: WARNING: polkit support not available//
//configure: WARNING: louis support not available//
//configure: WARNING: dbus support not available/

Then when I tried /make -s/ in Android/Application directory and it failed with:

/make: android: Command not found//
//../../Android/common.mk:16: recipe for target 'local.properties' failed//
//make: *** [local.properties] Error 127/

So I created empty /local.properties/ file, and run command again. It started compiling and showed some warnings in C code and then whole build failed at this error:

/brltty/Android/Core/build.xml:55: sdk.dir is missing. Make sure to generate local.properties using 'android update project' or to inject it through the ANDROID_HOME environment variable./

So I tried to run /android update project/ and it failed with:

/The "android" command is deprecated.//
//For manual SDK, AVD, and project management, please use Android Studio.//
//For command-line tools, use tools\bin\sdkmanager.bat////and tools\bin\avdmanager.bat
Invalid or unsupported command "update project"/

I find out that all that command does is it creates /local.properties/ file with /sdk.dir/ property set to path to SDK directory. So for example /sdk.dir=/mnt/c/Android/SDK /So I created this file in both Android/Application and Android/Core directories.
//

Then I run /make -s/ again and it failed with
//

/brltty/Android/Core/build.xml:90: Cannot find Android/SDK/tools/ant/build.xml imported from brltty/Android/Core/build.xml/

I find this question: https://stackoverflow.com/questions/42912824/the-ant-folder-is-suddenly-missing-from-android-sdk-did-google-remove-it where they say ant scripts were removed from SDK tools 25.3.0 (about year ago). That means you are using some old SDK if building with your scripts still works ok for you. Note before I had also some similar problem with NDK, but since you started using latest version of NDK already, there was no problem at this time.

So I downloaded older SDK tools (version 25.2.5 as mentioned in the link above), then I had to install rest of Android SDK things like build tools 21.1.2 and android-16 and android-21 platforms.

Then I run /make -s/ again and it failed with this error:

/(...)
-code-gen:
[mergemanifest] No changes in the AndroidManifest files.
     [echo] Handling aidl files...
     [aidl] No AIDL files to compile.
     [echo] ----------
     [echo] Handling RenderScript files...
     [echo] ----------
     [echo] Handling Resources...
     [aapt] Generating resource IDs...
     [aapt] /mnt/d/Android/SDK-linux/build-tools/21.1.2/aapt: 1: /mnt/d/Android/SDK-linux/build-tools/21.1.2/aapt: Syntax error: "(" unexpected (expecting ")")
BUILD FAILED
/mnt/d/Android/SDK-linux/tools/ant/build.xml:649: The following error occurred while executing this line:
/mnt/d/Android/SDK-linux/tools/ant/build.xml:694: null returned: 2
/

I don't understand what is wrong now or how to continue.

3) Having standard Android Studio project with Gradle build system + CMake for native libraries would be perfect (and multiplatform) way to build BRLTTY for Android.

I am able to import BRLTTY Android/Application and Android/Core sources into new Android studio project and compile the Java code easily (after fixing some warnings/errors in some files). Then if I take compiled /brltty_core.so/ and /brltty_jni.so/ and other assets from your APK and include it into my APK, the final application works correctly. But problem is with compiling the native code. Android Studio uses CMake for building native code (also they still support /ndk-build/, but it's only for compatibility with old projects and they recommend to use CMake). I was able to prepare CMake script for compiling /brltty_jni.so/ and it worked correctly as it's source is only pretty simple /brltty_jni.c/ file. But I wasn't able to compile the /brltty_core.so/ file for 2 reasons. Firstly I don't know what source files are compiled into /brltty_core.so/, as I'm not familiar with the Make and Ant scripts you use here. Secondly I tried to include at least some files like /brltty.c, core.c/ and some others I found in one makefile, but during compiling it showed various warnings and errors, which felt like I'm using incompatible compiler or something.


Can you help me with these issues somehow? Have you thought about using CMake for building whole BRLTTY project?

Thanks,
Robert Pösel

_______________________________________________
This message was sent via the BRLTTY mailing list.
To post a message, send an e-mail to: [email protected]
For general information, go to: http://brltty.com/mailman/listinfo/brltty

Reply via email to