2

我已经从源代码构建了自己的 androidrom 并修改了一些东西。但是现在我不想在项目中添加预构建的 .apk,请阅读我应该在 /packages/apps/ 中创建一个文件夹并使用以下代码将 .apk 和 Android.mk 添加到其中

LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := <folder name>
LOCAL_SRC_FILES := $(LOCAL_MODULE).apk
LOCAL_MODULE_CLASS := APPS
LOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX)
LOCAL_CERTIFICATE := PRESIGNED
include $(BUILD_PREBUILT)

并且在我的情况下将模块添加到 /device/sony/honami/full_honami.mk 当我现在运行早午餐时,我在一段时间后收到错误,没有针对目标的规则* 所以我尝试了一些更改,但对我没有任何作用,我找不到除此之外的其他内容...

所以我将 .apk 添加到 /vendor/cm/prebuilts 文件夹和 *.mk 中,我在其中找到了复制到设备的其他 .apk 我添加了我的应用程序并运行早午餐没有错误。

但是当我现在启动设备上的应用程序时,它崩溃了。通过 Logcat,我发现这个 apk 中有一些 .so 文件,并且找不到它们。这是因为我只复制了应用程序而不是 lib 目录中的 .so 文件。但我找不到解决我的问题的方法。我现在应该提取 .so 文件并将其像 .apk 一样复制到应用程序看起来的路径吗?或者有更好的解决方案吗?

干杯莫里茨

4

1 回答 1

2

AOSP 构建系统处理共享库的方式与 Eclipse-ADT 不同。

您需要从您的 apk 中提取该 .so 并为其创建一个 Android.mk。

要提取 .so,只需解压缩 apk 并从libs文件夹中获取它。

以下是 Android.mk 到 libfoo.so 共享库的示例:

LOCAL_PATH:= $(call my-dir)

# prebuilt shared library
include $(CLEAR_VARS)
LOCAL_MODULE := libfoo
LOCAL_SRC_FILES := libfoo.so
LOCAL_MODULE_SUFFIX := .so
LOCAL_MODULE_CLASS := SHARED_LIBRARIES
LOCAL_MODULE_PATH := $(TARGET_OUT)/lib
LOCAL_MODULE_TAGS := optional

include $(BUILD_PREBUILT)
于 2014-01-21T22:09:52.480 回答