1d549fa9dd
Change-Id: I68927593bd17a6ee6de0c1d879d6b05372c1350e |
||
---|---|---|
.. | ||
app | ||
lib | ||
templates | ||
.gitignore | ||
build.gradle | ||
gradle.properties | ||
gradlew | ||
gradlew.bat | ||
Makefile.am | ||
README | ||
settings.gradle |
The development of this Android app has to be done on Linux, it's currently not possible to build the native parts on Windows. * Compile LibreOffice master for Android. Do this in the folder where you cloned the LibreOffice core (e.g master-android). Create an autogen.input file: --build=x86_64-unknown-linux-gnu --with-android-ndk=/home/$USER/Android/Sdk/ndk-bundle --with-android-sdk=/home/$USER/Android/Sdk --with-distro=LibreOfficeAndroid --enable-sal-log Run ./autogen.sh && make * Build the POCO for Android # clone the poco repository in the same folder where LibreOffice core and online folders are placed. git clone https://github.com/pocoproject/poco poco-android cd poco-android # use the 1.9.1 branch git checkout -b poco-1.9.1 origin/poco-1.9.1 # configure ./configure --config=Android --no-samples --no-tests --minimal # make it PATH="$PATH":~/Android/Sdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin make -j8 ANDROID_ABI=armeabi-v7a CC=armv7a-linux-androideabi21-clang CXX=armv7a-linux-androideabi21-clang++ SYSLIBS=-static-libstdc++ # install it to /opt/poco-android PATH="$PATH":~/Android/Sdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin make -j8 ANDROID_ABI=armeabi-v7a CC=armv7a-linux-androideabi21-clang CXX=armv7a-linux-androideabi21-clang++ SYSLIBS=-static-libstdc++ install INSTALLDIR=/opt/poco-android * Configure the online.git (eg. in online-android folder) Don't forget to change --with-lo-builddir in the following: ./autogen.sh && ./configure CC=~/Android/Sdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/armv7a-linux-androideabi21-clang CXX=~/Android/Sdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/armv7a-linux-androideabi21-clang++ --host=arm-linux-androideabi --enable-androidapp --with-lo-builddir=/local/libreoffice/master-android --with-poco-includes=/opt/poco-android/include --with-poco-libs=/opt/poco-android/lib --disable-setcap --enable-silent-rules --enable-debug * Build the JavaScript, HTML and CSS files also in the online-android folder # just run 'make' make * Build the actual app + Start Android Studio + Open this 'android' subdir as a project + Build from Android Studio (Build -> Make Project) == Debugging == To debug the native code in Android Studio, you need the debugging symbols and to setup lldb to actually read & use them. * [Temporary] Cherry pick the following patches in your core.git (if they are not in master yet): https://gerrit.libreoffice.org/70366 https://gerrit.libreoffice.org/70367 https://gerrit.libreoffice.org/70369 https://gerrit.libreoffice.org/70370 https://gerrit.libreoffice.org/70389 * Add debugging symbols for the modules you are interested in To autogen.input, add something like: --enable-symbols="vcl/ desktop/ sal/ svx/ framework/ sfx2/ tools/ cppu/ cppuhelper/ filter/ comphelper/ Library_sw Library_swd Library_swui" clean the appropriate modules, like make vcl.clean desktop.clean sal.clean svx.clean framework.clean sfx2.clean tools.clean cppu.clean cppuhelper.clean filter.clean comphelper.clean sw.clean and rebuild using 'make'. * Add android/source/obj/local/armeabi-v7a from core.git as a Symbol Directory In Android Studio, choose Run -> Debug... -> Edit Configurations... There go to the Android App -> app, choose the Debugger tab, and: Debug type: Auto (or Dual) Symbol Directories: here add the full path, like /local/libreoffice/master-android/android/source/obj/local/armeabi-v7a This path contains the non-stripped version of the liblo-native-code.so, and the debugger will read the symbols from that one (even if the APK contains the stripped version). [Alternatively you can add the following to your ~/.lldbinit instead: settings set target.inline-breakpoint-strategy always settings append target.exec-search-paths /local/libreoffice/master-android/android/source/obj/local/armeabi-v7a ] From now on, you will be able to debug directly in the Android Stuido debugger. Happy debugging! == Tip: How to speed up your core.git build == If you use icecream for parallel building, you can use it for cross-compilation too. # first generate a tarball with the toolchain (once) icecc-create-env ~/Android/Sdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/armv7a-linux-androideabi21-clang ~/Android/Sdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/armv7a-linux-androideabi21-clang++ And add it and the paths to the compiler as the first things to the autogen.input: CC=icecc [here copy what the output of ./autogen.sh without icecream said for C compiler] CXX=icecc [here copy what the output of ./autogen.sh without icecream said for C++ compiler] ICECC_VERSION=/path/to/the/tarball/generated/above/955ceb546ceb7a5715bf0223ddd788fe.tar.gz --with-parallelism=[amount of cpu threads in your icecream farm] --enable-icecream [...the original autogen.input...] So the result will look something like this: CC=icecc /home/$USER/Android/Sdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -mthumb -march=armv7-a -mfloat-abi=softfp -mfpu=neon -Wl,--fix-cortex-a8 -gcc-toolchain /home/$USER/Android/Sdk/ndk-bundle/to> CXX=icecc /home/$USER/Android/Sdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang++ -mthumb -march=armv7-a -mfloat-abi=softfp -mfpu=neon -Wl,--fix-cortex-a8 -gcc-toolchain /home/$USER/Android/Sdk/ndk-bundle> ICECC_VERSION=/local/libreoffice/android/955ceb546ceb7a5715bf0223ddd788fe.tar.gz --with-parallelism=25 --enable-icecream --build=x86_64-unknown-linux-gnu --with-android-ndk=/home/$USER/Android/Sdk/ndk-bundle --with-android-sdk=/home/$USER/Android/Sdk --with-distro=LibreOfficeAndroid --enable-sal-log