2013-01-17 19 views
9

Mục tiêu: Tôi muốn sao chép nhiều txt file trong/hệ thống (của thiết bị Android) sử dụng Android.mkSao chép nhiều file txt trong/hệ thống sử dụng Android.mk

Kết quả của tôi:

Chúng ta có thể sao chép tệp bằng hai cách tiếp cận 1) Sử dụng PRODUCT_COPY_FILES. Này được thực hiện từ các thiết bị// makefile.mk

ví dụ:

PRODUCT_COPY_FILES := \ 
    frameworks/base/data/etc/telephony.gsm.xml:system/etc/permissions/telephony.gsm.xml \ 
    some/other/sourc/file:some/destination \ 
    some/other/sourcefile2: some/destination 

2) Sử dụng BUILD_PREBUILD

ví dụ:

##############copy txt file################## 
include $(CLEAR_VARS) 
#LOCAL_MODULE := mydata.txt 
LOCAL_MODULE_TAGS := optional 
LOCAL_MODULE_CLASS := ETC 
LOCAL_MODULE_PATH := $(TARGET_OUT)/myfolder 
LOCAL_SRC_FILES := mydata.txt 
include $(BUILD_PREBUILT) 

cho ở trên để làm việc thực nhập cảnh của mydata.txt trong build/target/product/core.mk

Truy vấn cụ thể của tôi là: Bây giờ tôi có thể sao chép nhiều tập tin bằng cách sử dụng phương pháp thứ 2 bằng cách viết lại mã trên cái khác. Nhưng tôi muốn sử dụng phương pháp thứ 2 (BUILD_PERBUILD) để sao chép nhiều tệp txt mà không cần viết lại mã cho tất cả các tệp.

1) Tôi có thể làm điều đó chỉ với một lệnh gọi $ (BUILD_PREBUILT) không?

2) BUILD_MULTI_PREBUILD có thể được sử dụng để giải quyết mục đích không? làm sao ?

Trả lời

12

Ok, tôi đã tìm thấy một bản hack (mà tôi biết đã tồn tại), mà tôi không tìm kiếm nhưng nó hoạt động và giải quyết được vấn đề của tôi một cách rất đơn giản.

Bạn có thể chạy lệnh shell trong tệp mk.

Vì vậy, nếu bạn muốn sao chép nhiều tệp chỉ bằng một lần, hãy sử dụng mã sau và đặt nó vào tệp mk của bạn.

Trong kịch bản sau, các tệp tôi cần sao chép có trong tệp tin_folder (thư mục), nằm trong cùng thư mục chứa tệp mk của tôi. Và tôi wan để sao chép tất cả các tập tin có trong file_folder vào system/file_folder.

#create a directory in /system/ 
    $(shell mkdir -p $(TARGET_OUT)/file_folder/) 
#copy stuff 
    $(shell cp $(LOCAL_PATH)/file_folder/* `pwd`/$(TARGET_OUT)/file_folder/) 

Điều này làm việc tốt. Vì vậy, bây giờ trong tất cả chúng ta có 3 cách để làm điều đó. Hy vọng nó sẽ giúp một người như tôi.

Các vấn đề liên quan