【问题标题】:Building an AOSP app that uses shared libraries构建使用共享库的 AOSP 应用程序
【发布时间】:2018-10-14 15:24:11
【问题描述】:

如何从源代码构建 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 中)还是我需要以艰难的方式做到这一点?

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-06-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多