构建使用共享库的AOSP应用

时间:2018-10-13 18:59:51

标签: android build keyboard android-source android-library

怎么可能从源代码构建AOSP应用程序(使用mma进行构建,这样就只有所需的模块,而不是完整的系统映像)并可以访问共享库?

我正在对LatinIME进行一些修改。 因为我想轻松安装和调试,所以更改了程序包名称。现在,我可以轻松地将该应用程序安装为用户应用程序,但是它无法访问系统分区中的.so文件。如果我尝试使用原始程序包名称安装该应用程序,则由于安装了旧版应用程序而无法。

library "/system/lib64/libjni_latinimegoogle.so" ("/system/lib64/libjni_latinimegoogle.so") needed or dlopened by "/system/lib64/libnativeloader.so" is not accessible for the namespace

我可以想到的另一种方法是将软件包名称保留为原始名称,但是要么创建一个可刷新的zip,要么每次将apk复制到系统分区。

是否可以允许访问此文件(或将其包含在apk中),还是我需要用困难的方式做到这一点?

1 个答案:

答案 0 :(得分:1)

最简单的方法是在lib/arm64-v8a或其他相关ABI下的APK中拥有所有必需的非公共系统本机库的副本。 libjni_latinimegoogle.so 可能取决于其他库,并且您也必须将它们与APK打包在一起。确保使用这些库的正确版本。您可以通过adb将它们从 system / lib64 中拉出。

但是,替换系统分区中的APK是处理这种情况的更干净的方法。这确实涉及每次重新启动,但我可能会选择此轨道,以避免系统应用程序和用户应用程序之间可能存在的行为差异。