编译开源LibreOffice的Android版本——开源Office文档查看器

2023-05-16

项目近期需要用到文档查看器,现有的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,欢迎关注微信公众号“编程阳光”

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

编译开源LibreOffice的Android版本——开源Office文档查看器 的相关文章

  • 本地策略不允许您使用交互式登录

    此系统的本地策略不允许您采用交互式登录解决方法 如果计算机是一台不在域中的单独的Windows 2000计算机 xff0c 参考以下步骤 xff1a 1 启动故障计算机至登录状态 xff1b 2 登录到网络中的另外一台Windows 200
  • 用ipmitool管理服务器

    service ip mi start ip mitool I open shell 可以直接进入本地BMC shell ip mitool I lan H U shell 输入password 进入IP MI交互模式 当然这里也可以把sh
  • 命令行设置raid:MegaCli一些简单用法

    查看raid级别 xff1a MegaCli LDInfo Lall aALL 查看raid卡信息 xff1a MegaCli AdpAllInfo aALL 查看硬盘信息 xff1a MegaCli PDList aALL 查看电池信息
  • Cache写机制:Write-through与Write-back

    参考http en wikipedia org wiki Cache Writing Policies上的说明 xff0c Cache写机制分为write through和write back两种 Write through Write i
  • Windows 2008 部署服务之客户端安装

    作者 xff1a 罗国荣 日期 xff1a 2010 05 27 在 Windows 2008 部署服务之Windows XP映像捕获 中我介绍了如何利用捕获映像从已使用 Sysprep exe 准备的参考计算机捕捉计算机的映像 xff0c
  • Windows 2008 部署服务之Windows 7 应答文件创建

    Windows 2008 部署服务之Windows 7 应答文件创建 作者 xff1a 罗国荣 日期 xff1a 2010 05 27 前面我们介绍了如何创建Windows XP的应答文件 xff0c 在这一章中我将给大家介绍如何使用Win
  • Windows 2008 部署服务之Windows 7 映像捕获

    作者 xff1a 罗国荣 日期 xff1a 2010 05 27 在 Windows 2008 部署服务之Windows XP映像捕获 中我介绍了如何利用捕获映像从已使用 Sysprep exe 准备的参考计算机捕捉计算机的映像 xff0c
  • 部署Vista – 第1部分:理解Windows AIK

    原创作品 xff0c 允许转载 xff0c 转载时请务必以超链接形式标明文章 原始出处 作者信息和本声明 否则将追究法律责任 http iwantfly blog 51cto com 1048259 234142 最近在学习Windows
  • 部署Vista – 第2部分:理解Windows安装程序和Windows映像文件格式

    标签 xff1a 部署Vista WINDOWS安装程序 映像 原创作品 xff0c 允许转载 xff0c 转载时请务必以超链接形式标明文章 原始出处 作者信息和本声明 否则将追究法律责任 http iwantfly blog 51cto
  • 部署Vista – 第3部分:理解配置传送

    标签 xff1a 部署Vista 配置传送 原创作品 xff0c 允许转载 xff0c 转载时请务必以超链接形式标明文章 原始出处 作者信息和本声明 否则将追究法律责任 http iwantfly blog 51cto com 104825
  • 无线信号的调制方式 OOK、ASK、FSK、GFSK

    一 OOK OOK On Off Keying 通断键控 如上图所示 xff0c Vm t 是需要发送的数字信号 xff0c Acos 2 fct 是未经过调制的载波 xff0c VAM t 是经过OOK调制的载波信号 OOK的调制原理就是
  • Collections类方法详解____(一)排序操作类

    Collections类对于java集合的学习至关重要 xff0c 这里简单收录了Collections类的基本方法和详解 xff0c 下面先给出汇总列表 Collections类常用方法 分类方法用法 排序操作 sort Collecti
  • 部署Vista – 第4部分:理解部署场景

    标签 xff1a 部署Vista 部署场景 原创作品 xff0c 允许转载 xff0c 转载时请务必以超链接形式标明文章 原始出处 作者信息和本声明 否则将追究法律责任 http iwantfly blog 51cto com 104825
  • 部署Vista – 第6部分:使用Windows SIM

    标签 xff1a 部署Vista Windows SIM 原创作品 xff0c 允许转载 xff0c 转载时请务必以超链接形式标明文章 原始出处 作者信息和本声明 否则将追究法律责任 http iwantfly blog 51cto com
  • 部署Vista – 第7部分:创建一个最小化的应答文件

    标签 xff1a 部署Vista 应答文件 原创作品 xff0c 允许转载 xff0c 转载时请务必以超链接形式标明文章 原始出处 作者信息和本声明 否则将追究法律责任 http iwantfly blog 51cto com 104825
  • 部署Vista – 第8部分:从DVD无人参与安装

    原创作品 xff0c 允许转载 xff0c 转载时请务必以超链接形式标明文章 原始出处 作者信息和本声明 否则将追究法律责任 http iwantfly blog 51cto com 1048259 236477 上篇文章使用Windows
  • 部署Vista – 第9部分:自动化系统全新体验

    原创作品 xff0c 允许转载 xff0c 转载时请务必以超链接形式标明文章 原始出处 作者信息和本声明 否则将追究法律责任 http iwantfly blog 51cto com 1048259 236996 在前两篇文章中 xff0c
  • 部署Vista – 第10部分:理解Windows预安装环境

    原创作品 xff0c 允许转载 xff0c 转载时请务必以超链接形式标明文章 原始出处 作者信息和本声明 否则将追究法律责任 http iwantfly blog 51cto com 1048259 237445 本部分内容介绍Window
  • 部署Vista – 第11部分:使用Windows PE

    原创作品 xff0c 允许转载 xff0c 转载时请务必以超链接形式标明文章 原始出处 作者信息和本声明 否则将追究法律责任 http iwantfly blog 51cto com 1048259 237865 介绍创建可启动Window
  • 部署Vista – 第12部分:理解基于映像的部署

    原创作品 xff0c 允许转载 xff0c 转载时请务必以超链接形式标明文章 原始出处 作者信息和本声明 否则将追究法律责任 http iwantfly blog 51cto com 1048259 238440 介绍基于映像部署的工作原理

随机推荐