2017-06-13 45 views
0

由於標題不言自明,在生成system.img之前,我想替換system/bin/system/lib/中的一些文件。在將系統文件夾打包到system.img之前替換一些文件

更確切地說,我有一些預建.so文件,這shuold在現有的複製。例如libart.so。請注意,用修改過的藝術源代碼替換art/(源代碼藝術)是而不是的一個選項。

要做到這一點,這mk文件,我應該調查,並把我的代碼替換成?

回答

2

您可以遵循相同的結構,在此other question提議的,但使用這個宏:

PRODUCT_COPY_FILES += \ 
    device/common/my_bin.bin:cache/my_bin.bin \ 
    device/common/my_so.so:system/art/my_so.so 

這種工作方式如下:

  • 從左(該文件被複制: ) 對。
  • 當生成圖像,在這種情況下cachesystem,將它與包含在這些文件夾中的文件產生。
  • 由於我們已將文件複製到該目的地,因此生成system.img時,將包含我們的文件。

此外,命令在此文件被複制,事務。例如,如果您正在複製已存在的文件,那麼您希望它被替換。 (如您的libart.so),您需要您撥打該副本的電話才能在默認電話之前完成。

對於這一點,我建議這樣做:

  • source build/envsetup.sh
  • lunch <<device>>
  • mgrep libart.so - >這確實通過mk文件的grep,這樣你就可以看到默認的複製完成。
  • 在所需mk文件插入$(info whatever)呼籲追查是個好去處添加PRODUCT_COPY_FILES

這並不容易回答在哪裏添加。我自己從來沒有修改過libart.so,但我已經用這種方法複製了很多文件,並且它像一個魅力一樣工作。

我希望它適用於您的情況。

1

一個快速骯髒的方式,以這樣的:

  1. 複製所需文件輸出(..)/系統/ lib或系統之後。IMG已經使用Android.mk內置
  2. make snod

其他方式。在設備樹中創建一個新的目錄,例如libart-prebuilt。這裏寫您的lib,然後創建內容的Android.mk文件

LOCAL_PATH := $(call my-dir) 

include $(CLEAR_VARS) 

LOCAL_MODULE := libart-prebuilt 
LOCAL_MODULE_TAGS := optional 
LOCAL_MODULE_PATH := $(TARGET_OUT)/lib 
LOCAL_MODULE_STEM := libart 
LOCAL_MODULE_SUFFIX := $(TARGET_SHLIB_SUFFIX) 
LOCAL_SRC_FILES := libart.so 
LOCAL_MODULE_CLASS := SHARED_LIBRARIES 

include $(BUILD_PREBUILT) 

現在只是在你的device.mk添加libart-prebuiltPRODUCT_PACKAGES

相關問題