[原]编译开源LibreOffice的Android版本

   2016-09-18 0
核心提示:项目近期需要用到文档查看器,现有的WPS之类确实比较好用,无奈还需要对应用做些处理,只好寻找开源的实现。开源的文档查看器主要两种方式,一种是完整的Android版本实现,直接拿来即用,如LibreOffice的Android版本;一种是提供了Java库之类,能够解析标准的

项目近期需要用到文档查看器,现有的WPS之类确实比较好用,无奈还需要对应用做些处理,只好寻找开源的实现。开源的文档查看器主要两种方式,一种是完整的Android版本实现,直接拿来即用,如LibreOffice的Android版本;一种是提供了Java库之类,能够解析标准的office文档,但需要移植或自己实现应用界面,文档的展示,如openoffice,POI等(基于openoffice有android版的移植实现,但不开源)。至于其它的各种将文档转成pdf再查看的方式,我没有去尝试。有鉴于实现简单和项目情况,第一种方式成为必然选择,但也了解了其可能出现文档解析不全(如有时图片无法显示)的问题。本文正是基于此记录编译开源LibreOffice的Android版本的步骤,减少后来人的错误尝试,同时也在github上提供能够简单编译使用的版本。

一、先给出一些基本信息:

本人编译环境Ubuntu 14.04,编译的版本5.3.0.0.alpha0+/05c89af

1.LibreOffice的官方网站:https://www.libreoffice.org/

可以方便的查找到官方Android版本使用,以及源代码下载和编译

2.ubuntu上编译

https://wiki.ubuntu.com/BuildingLibreOffice

https://wiki.documentfoundation.org/Development/BuildingForAndroid

3.如下摘录官方的编译说明:

libreoffice文档查看器的编译

官方说明非常简单

(1)获取代码

git clone git://anongit.freedesktop.org/libreoffice/core libreoffice

cd libreoffice

(2)将Android SDK and NDK放置external/目录,如 external/android-sdk-linux/和external/android-ndk/目录

(3)编译

创建autogen.input文件,调用make

# create your autogen.input, so that it looks like:

cat autogen.input

--with-distro=LibreOfficeAndroid

# configure (and install packages as needed)

./autogen.sh

# start the build

make

实际编译过程中会出现各种问题,缺少各种依赖。

考虑到会是交叉编译获得so文件,所以可以先配置好编译libreoffice在linux上的环境,再编译Android版本

二、实际的编译过程如下,同时由于国内网络原因,考虑了修改成自己的gradle版本和sdk中buildtools等相关版本

(1)源码获取

直接通过git获取源码  经常出现获取到一半无法获取的情况,而且不支持断点续传

官网给出了其它方法:https://www.libreoffice.org/about-us/source-code/

因此直接通过http下载,解压后再通过git补全

(2)配置ubuntu上编译环境

源码获取的官方方法里,也给出了编译链接:https://wiki.documentfoundation.org/Development/BuildingOnLinux

具体就是安装依赖sudo apt-get build-dep libreoffice

(3)编译Android版本

https://wiki.documentfoundation.org/Development/BuildingForAndroid

a.首先指定Android SDK和NDK目录,external/android-sdk-linux/和external/android-ndk/目录

b.修改build tools

如果build tools不符合,执行autogen.sh时就会提示

但是编译过程中提示在ant编译时aapt无法找到一个文件,此时需要确定下自己的build tools是否在24.0.0以上

提示Cannot run program "/home/user/Android/Sdk/build-tools/23.0.2/aapt": error=2 No such file or directory"

stackoverflow上给出的方法http://stackoverflow.com/questions/33427893/can-not-run-android-sdk-build-tools-23-0-2-aapt

c.根据自己的需要选择gradle版本

将build.gradle中的 改成

dependencies {

classpath 'com.android.tools.build:gradle:2.0.0'

}

不行到时候会让下载gradle-2.10-all,注意替换android/source/gradle/wrapper/gradle-wrapper.properties的下载地址

d.安装了oracle-jdk-8

重新执行./autogen.sh才生效,否则报version不识别

此后,再按照官方提供的BuildingForAndroid方法(上文有介绍)即编译通过,在build的output目录中生成apk,但是对某些文档的显示包括其中的图片仍然会有问题。

e.后来发现stripui的版本可以使用 fullui的版本无法打开文档

测试将makefile文件中的disable_ui的值改为false 不行,强行编译fullui版,还是会崩溃,具体原因不知道

三、提供方便的编译版本

在github上地址:git@github.com:w7849516230/libreoffice_android.git

克隆好后,修改android/source/liboSettings.gradle文件中ext的定义,如liboSrcRoot的路径信息,改写成实际的路径信息

此版本只是修改配置文件信息,提供了so库(没有源文件),因此也只能完成上层的修改优化。

后续有需要了再及时同步LibreOffice最新版本。

转载请注明出处:http://blog.csdn.net/w7849516230,欢迎关注微信公众号“编程阳光”

 
标签: OpenOffice 开源
反对 0举报 0 评论 0
 

免责声明:本文仅代表作者个人观点,与乐学笔记(本网)无关。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
    本网站有部分内容均转载自其它媒体,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责,若因作品内容、知识产权、版权和其他问题,请及时提供相关证明等材料并与我们留言联系,本网站将在规定时间内给予删除等相关处理.

点击排行