由於標題不言自明,在生成system.img
之前,我想替換system/bin/
和system/lib/
中的一些文件。在將系統文件夾打包到system.img之前替換一些文件
更確切地說,我有一些預建.so
文件,這shuold在現有的複製。例如libart.so
。請注意,用修改過的藝術源代碼替換art/
(源代碼藝術)是而不是的一個選項。
要做到這一點,這mk
文件,我應該調查,並把我的代碼替換成?
由於標題不言自明,在生成system.img
之前,我想替換system/bin/
和system/lib/
中的一些文件。在將系統文件夾打包到system.img之前替換一些文件
更確切地說,我有一些預建.so
文件,這shuold在現有的複製。例如libart.so
。請注意,用修改過的藝術源代碼替換art/
(源代碼藝術)是而不是的一個選項。
要做到這一點,這mk
文件,我應該調查,並把我的代碼替換成?
您可以遵循相同的結構,在此other question提議的,但使用這個宏:
PRODUCT_COPY_FILES += \
device/common/my_bin.bin:cache/my_bin.bin \
device/common/my_so.so:system/art/my_so.so
這種工作方式如下:
cache
或system
,將它與包含在這些文件夾中的文件產生。system.img
時,將包含我們的文件。此外,命令在此文件被複制,事務。例如,如果您正在複製已存在的文件,那麼您希望它被替換。 (如您的libart.so
),您需要您撥打該副本的電話才能在默認電話之前完成。
對於這一點,我建議這樣做:
source build/envsetup.sh
lunch <<device>>
mgrep libart.so
- >這確實通過mk
文件的grep,這樣你就可以看到默認的複製完成。mk
文件插入$(info whatever)
呼籲追查是個好去處添加PRODUCT_COPY_FILES
。這並不容易回答在哪裏添加。我自己從來沒有修改過libart.so
,但我已經用這種方法複製了很多文件,並且它像一個魅力一樣工作。
我希望它適用於您的情況。
也有增加的二進制.so庫作爲產品包裝的選項,使用.mk文件PREBUILT_SHARED_LIBRARY
選項:Include prebuilt shared library in Android AOSP或BUILD_PREBUILT
https://stackoverflow.com/a/25682674/1028256
一個快速骯髒的方式,以這樣的:
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-prebuilt
到PRODUCT_PACKAGES