gpt4 book ai didi

android - 将带有共享库的预构建 apk 添加到 AOSP 时出错

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:50:30 25 4
gpt4 key购买 nike

我尝试将预构建的 APK 添加到我的 Android 构建中。 APK 包含多个共享库(*.so 文件)。它编译没有问题,但我仍然从应用程序中收到错误消息,指出找不到库。

为什么会这样?

这是android.mk代码:

LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := apkwithso
LOCAL_SRC_FILES := $(LOCAL_MODULE).apk
LOCAL_REQUIRED_MODULES := libx liby libz
LOCAL_MODULE_CLASS := APPS
LOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX)
LOCAL_CERTIFICATE := PRESIGNED
include $(BUILD_PREBUILT)

libx、y、z 是我的 libx.so、liby.so 和 libz.so

我还尝试将 .so 从 APK 手动复制到 out lib 目录,但没有成功。

我正在为 Galaxy Nexus Maguro 使用 Android 4.1.2 进行编译。

最佳答案

我自己也遇到过这个问题,原因是当 APK 文件包含在构建中时,它们基本上绕过了安装过程。此安装过程是从 apk 中提取任何共享库并将其放置在适当位置的点,因此,如果这从未发生,则库将不可用。这是因为在 AOSP 构建期间从源代码构建的包要么在该构建过程中包含其预构建的共享库,要么它们的库也是从源代码构建的,无论哪种情况,这些库都放在适当的位置。

出于这个原因,除了 apk 模块本身之外,您还应该在同一个 .mk 文件中添加以下内容:

include $(CLEAR_VARS)
LOCAL_MODULE := libapkwithso
LOCAL_SRC_FILES := lib/libapkwithso.so # or wherever your so is
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE_SUFFIX := .so
LOCAL_MODULE_CLASS := SHARED_LIBRARIES
include $(BUILD_PREBUILT)

然后添加:

LOCAL_REQUIRED_MODULES := libapkwithso

关于android - 将带有共享库的预构建 apk 添加到 AOSP 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14687287/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com