1.編譯環(huán)境ubuntu系統(tǒng)
sudo apt-get install git build-essential zip ccache junit4 libkrb5-dev nasm graphviz python3 python3-dev
qtbase5-dev libkf5coreaddons-dev libkf5i18n-dev libkf5config-dev libkf5windowsystem-dev libkf5kio-dev autoconf
libcups2-dev libfontconfig1-dev gperf default-jdk doxygen libxslt1-dev xsltproc libxml2-utils libxrandr-dev bison
flex libgtk-3-dev libgstreamer-plugins-base1.0-dev libgstreamer1.0-dev ant ant-optional
2.下載項目(libreoffice父目錄不能包含中文)
git clone git://gerrit.libreoffice.org/core libreoffice
cd libreoffice
3.在libreoffice目錄下創(chuàng)建autogen.input,內容為:
ARM Android
--with-distro=LibreOfficeAndroid
or Android x86 ( preferable if using an AVD Emulator )
--with-distro=LibreOfficeAndroidX86
以下是NDK環(huán)境配置
--with-android-sdk=~/Android/Sdk
--with-android-ndk=~/Android/Sdk/ndk-bundle
4.git分支切換到 cp-6.4-19(commit id 5c603abc13b78dd7fd072249c9692dfc207a33c2)
git checkout 5c603abc13b78dd7fd072249c9692dfc207a33c2
5.編譯
./autogen.sh
make
編譯collaboraonline參考鏈接
6.安裝 POCO for Android
在LibreOffice同級目錄下下載poco-android `git clone https://github.com/pocoproject/poco poco-android
cd poco-android
使用 1.10.1 分支
git checkout -b poco-1.10.1 origin/poco-1.10.1
configure
./configure --config=Android --no-samples --no-tests --omit=Crypto,NetSSL_OpenSSL,Zip,Data,Data/SQLite,Data/ODBC,Data/MySQL,MongoDB,PDF,CppParser,PageCompiler,JWT
make 編譯
~/Android/Sdk/ndk-bundle對應的是自己的NDK目錄
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++
安裝到 /opt/poco-android。
~/Android/Sdk/ndk-bundle對應的是自己的NDK目錄
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
7.下載項目
在LibreOffice同級目錄下下載CollaboraOnline
git clone https://github.com/CollaboraOnline/online.git online
cd online
切換分支
git checkout eec532f9df94d65da5ce260ececf81295e3542ab 8.編譯CollaboraOnline
/Local/libreoffice是自己目錄路徑`</pre>
./autogen.sh
./configure --enable-androidapp \
--with-lo-builddir=/Local/libreoffice \
--with-poco-includes=/opt/poco-android/include --with-poco-libs=/opt/poco-android/lib \
--disable-setcap \
--enable-silent-rules --enable-debug
make
`9.踩坑日記
bug1:在編譯LibreOffice的過程中提示Ant does not work - Some Java projects will not build!
checking if /usr/share/ant/bin/ant works... configure: error: Ant does not work - Some Java projects will not build!
configure: error: Running the configure script for BUILD side failed, see CONF-FOR-BUILD/config.log
configure: error: setup/configure for BUILD side failed, see CONF-FOR-BUILD/config.log
Error running configure at ./autogen.sh line 322.
解決方案:在autogen.input文件中禁用java:--without-java
bug2:在編譯CollaboraOnline提示
警告: [options] 源值6已過時, 將在未來所有發(fā)行版中刪除
警告: [options] 要隱藏有關已過時選項的警告, 請使用 -Xlint:-options。
/home/ls/office/libreoffice/android/source/src/java/org/libreoffice/overlay/CalcHeadersController.java:238: 錯誤: 不兼容的類型: long無法轉換為Float
headerInfo.rowDimens.add(rowResult.getJSONObject(i).getLong("size"));
^
/home/ls/office/libreoffice/android/source/src/java/org/libreoffice/overlay/CalcHeadersController.java:243: 錯誤: 不兼容的類型: long無法轉換為Float
headerInfo.columnDimens.add(columnResult.getJSONObject(i).getLong("size"));
解決方案:
在CalcHeadersController文件中將
rowResult.getJSONObject(i).getLong("size")
columnResult.getJSONObject(i).getLong("size")
替換為:(添加頭文件import java.math.BigDecimal;)
headerInfo.rowDimens.add(BigDecimal.valueOf(rowResult.getJSONObject(i).getLong("size")).floatValue());
headerInfo.columnDimens.add(BigDecimal.valueOf(columnResult.getJSONObject(i).getLong("size")).floatValue());
bug3:運行App,編輯頁面空白
將/libreoffice/android/jniLibs/armeabi-v7a文件下載so文件替換成功線上App的so即可
--without-java --without-java--without-java` </pre>