✪LibreOffice-Android README

这篇博客详细介绍了Android版LibreOffice的实现,包括Bootstrap引导过程、多线程架构(UI线程、OpenGL线程、LOKit线程、soffice线程)、文档视图的瓦片渲染、编辑功能和事件处理。LibreOfficeKit通过JNI与LibreOffice核心交互,使用OpenGL进行文档渲染,同时支持触摸事件、滚动和缩放。文档视图利用瓦片渲染技术提高性能,动态和固定缩放瓦片层管理着文档的显示。编辑功能涉及输入事件的传递和内容更改后的瓦片刷新。

Bootstrap(引导)

包含在Android上引导LibreOffice([ˈliːbreɪ])的所有工程的通用代码。此外,它是LibreOfficeKit(LOK)的JNI类的主目录。

Stuff in Source Directory(源目录中的内容)

LibreOffice安卓应用的代码基于Fennec(Firefox浏览器针对移动电话和非个人计算机设备推出的一个浏览器版本)。它使用OpenGL ES 2去渲染文档瓦片(这些瓦片使用LOK去聚集)。应用程序在一个共享库(liblo-native-code.so,它与应用程序捆绑在一起)中包含LibreOffice核心。

Architecture and Threading(体系结构与线程)

应用程序使用4个线程实现编辑支持:

  • 安卓UI线程,我们不能在这里执行任何操作,因为这会需要相当长的时间。
  • 一个OpenGL线程,它包含OpenGL上下文并且负责绘制所有图层(包含瓦片)到屏幕上。
  • 一个执行LibreOfficeKit调用的线程(LOKitThread),它的完成可能需要花费更多时间。此外,当回调发出一个事件时,它也从soffice线程(见下文)接收事件。事件存在于一个阻塞队列中(线程按FCFS[First Come First Served]顺序处理事件,当没有更多事件时休眠,当队列中再次有事件时唤醒)。
  • 一个本地线程(native thread)经由LibreOffice创建(我们称它为soffice线程),LibreOffice自身运行于这个线程。它接受来自LOKitThread的调用,并根据需要发出回调事件。
LOKitThread(LOK线程)

LOKitThread(org.

### 解决 `dpkg` 在配置 `libreoffice-base-core` 时因依赖关系问题导致的错误 在 Ubuntu 中,当使用 `dpkg` 进行软件包配置时,可能会因为未满足的依赖关系而导致失败。这种情况下,可以按照以下方法逐步排查并解决问题。 #### 1. **检查未满足的依赖关系** 首先,查看具体的错误日志以了解哪些依赖项未能满足。可以通过以下命令获取更多信息: ```bash cat /var/log/dpkg.log | grep libreoffice-base-core ``` 这条命令会显示与 `libreoffice-base-core` 相关的日志记录,帮助定位具体问题所在[^1]。 #### 2. **尝试修复破损的依赖关系** 如果发现有未满足的依赖关系,可以运行以下命令来尝试自动修复这些问题: ```bash sudo apt-get update sudo apt-get -f install ``` `-f` 参数会让 APT 尝试修复任何已知的依赖性问题,包括安装缺失的依赖项或移除冲突的软件包[^3]。 #### 3. **强制重新配置软件包** 有时即使依赖关系看似正常,仍然可能出现配置失败的情况。这时可以尝试强制重新配置受影响的软件包: ```bash sudo dpkg --configure -a ``` 此命令会对所有尚未完成配置的软件包进行再次尝试,适用于部分由于意外中断造成的半成品状态[^1]。 #### 4. **手动解决特定依赖问题** 假如上述通用方法无法奏效,则需要针对具体情况采取措施。例如,在引用中提到的一个例子涉及到了版本不匹配的问题(如 `[libssl-dev](#)`),此时应仔细核对所需版本号以及当前可用版本之间的差异,并决定是否降级/升级相关组件。对于 LibreOffice 类似情况也可以采用相同思路去验证是否存在类似矛盾需求。 假设问题是由于某个过高或过低版本引起的,那么可以显式指定兼容版本来规避冲突: ```bash sudo apt-get install libreoffice-base-core=specific-version-number ``` #### 5. **清除残留数据再重装** 最后一种极端手段是在其他办法均告失效之后才考虑使用的方案——先彻底删除有问题的应用及其关联文件然后再干净地重新部署它: ```bash sudo apt-get purge libreoffice-base-core sudo apt-get autoremove sudo apt-get autoclean sudo apt-get install libreoffice-base-core ``` --- ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

itzyjr

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值