2014-01-21 58 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是否有效? –