在android.mk系统应用程式android中包含.so

时间:2018-08-21 03:27:05

标签: android android-source android-build android.mk

我有一个包含Java代码和一些.so文件的APK。我已经在Android Studio中构建了APK,现在此APK需要成为自定义ROM上/ system / app /文件夹的一部分。

Java代码+ .so = APK

要将其包含在system / app /中,我将以下构建脚本包含在Android.mk文件中,并从device.mk文件中调用它。

LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE := utility
LOCAL_MODULE_CLASS := APPS
LOCAL_CERTIFICATE := platform
LOCAL_SRC_FILES := utility.apk
include $(BUILD_PREBUILT)

构建图像后,我发现我的APK崩溃了,日志显示“无法链接可执行文件”,所有.so文件似乎都丢失了。 但是,如果我使用adb install utility.apk,则APK可以正常工作。

有人可以告诉我,导致.so文件不可用的构建脚本中缺少什么吗?

P.S .:我在/data/data/com.org.utility/、/system/lib/文件夹中进行搜索,但未找到.so文件。 但是,如果我使用adb install,则会在/data/data/com.org.utility/lib/x86/文件夹中找到.so文件。

1 个答案:

答案 0 :(得分:1)

我不记得L或M,构建系统中存在错误。

内置于system / app或system / priv-app的apk中的so无法释放到系统中。但是第三方应用程序可以通过PackageManagerService在此处发布库。

一种解决方案: 1.手动释放apk中的so。 2.添加与Android.mk相关的内容,例如:

    LOCAL_PATH := $(call my-dir)
    include $(CLEAR_VARS)
    LOCAL_MODULE := test
    LOCAL_SRC_FILES := libtest.so
    include $(PREBUILT_SHARED_LIBRARY)
  1. 将此模块名称添加到PRODUC_PACKAGES micro。

您的应用中的这些内容将因此构建到您的系统/ lib或lib64中。

祝你好运。