2013-01-17 15 views
9

cel: Chcę skopiować wielokrotność w plikach txt/systemu (Android Device) za pomocą Android.mkKopiowanie wielu plików txt w/system używając Android.mk

moje wyniki:

Możemy skopiuj plik, używając dwóch metod: 1) Użyj PRODUCT_COPY_FILES. Odbywa się to z urządzeń// makefile.mk

ex:

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) Korzystanie BUILD_PREBUILD

ex:

##############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) 

dla wyżej pracować dokonać wpisu mojedane.txt w kompilacji/obiekt docelowy/produkt/core.mk

Moje konkretne zapytanie to: Teraz mogę skopiować wiele plików przy użyciu drugiego podejścia, ponownie przepisując powyższy kod jeden po drugim. Ale chcę użyć 2nd podejście (BUILD_PERBUILD) do kopiowania wielu plików txt bez ponownego pisania kodu dla wszystkich plików.

1) Czy mogę to zrobić z jednym połączeniem $ (BUILD_PREBUILT)?

2) Czy BUILD_MULTI_PREBUILD może być użyty do rozwiązania celu? w jaki sposób ?

Odpowiedz

12

Ok, znalazłem jednego hacka (o którym wiedziałem, że istnieje), którego nie szukałem, ale zadziałało i rozwiązałem mój problem w bardzo prosty sposób.

Można uruchamiać polecenia powłoki w pliku mk.

Jeśli chcesz skopiować wiele plików za jednym razem, użyj poniższego kodu i umieść go w swoim pliku mk.

W poniższym scenariuszu pliki, które należy skopiować, znajdują się w folderze file_folder (directory), który znajduje się w tym samym katalogu, w którym znajduje się mój plik mk. I chciałbym skopiować wszystkie pliki obecne w file_folder do 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/) 

To zadziałało dobrze. Więc teraz we wszystkich mamy 3 sposoby na zrobienie tego. Mam nadzieję, że pomoże to komuś takiemu jak ja.

Powiązane problemy