2014-01-21 29 views
2

我已经从源代码构建了自己的androidrom并修改了一些内容。 但现在我wan't一个预置的.apk文件添加到项目, 读,我应该做的文件夹/封装/应用/ 并添加.apk文件和Android.mk将其与下面的代码从源代码构建Android - 使用共享库添加预构建应用程序

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中找到了另一个.apks,并将其添加到设备中,并添加了我的应用程序并在没有错误的情况下运行早午餐。

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

干杯 Moritz的

回答

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) 
+0

好感谢:)所以我必须提取每个是.so并作出MK吧:) 如果。所以在一个文件夹中,例如 /lib/folder/*.so 是否足以将其复制到/system/lib/*.so 或者我必须将其复制到/system/lub/folder/*.so? – user3123324

+0

它已经足够把它放在/ system/lib中。也意识到你可以在一个Android.mk中构建多个工件。不要忘记在每个工件的块之前始终调用'include $(CLEAR_VARS)'。 –

+0

@ user3123324是否有效? –