我有一个包含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文件。
答案 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)
您的应用中的这些内容将因此构建到您的系统/ lib或lib64中。
祝你好运。