Скопируйте несколько файлов txt в /system с помощью Android.mk

Цель: я хочу скопировать несколько txt-файлов в /system (устройства Android) с помощью Android.mk

Мои выводы:

Мы можем скопировать файл, используя два подхода: 1) Используйте PRODUCT_COPY_FILES. Делается это из devices//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) Использование 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)

для того, чтобы вышеизложенное работало, введите mydata.txt в build/target/product/core.mk

Мой конкретный запрос: теперь я могу скопировать несколько файлов, используя второй подход, переписав приведенный выше код один за другим. Но я хочу использовать второй подход (BUILD_PERBUILD) для копирования нескольких текстовых файлов без перезаписи кода для всех файлов.

1) Могу ли я сделать это всего одним вызовом include $(BUILD_PREBUILT)?

2) Можно ли использовать BUILD_MULTI_PREBUILD для решения этой задачи? как ?


person Akshay    schedule 17.01.2013    source источник


Ответы (2)


Хорошо, я нашел один хак (о котором я знал, что он существует), который я не искал, но он сработал и решил мою проблему очень простым способом.

Вы можете запускать команды оболочки в файле mk.

Поэтому, если вы хотите скопировать несколько файлов за один раз, используйте следующий код и поместите его в свой файл mk.

В следующем сценарии файлы, которые мне нужно скопировать, находятся в папке file_folder (каталог), которая находится в том же каталоге, где находится мой файл mk. И я хочу скопировать все файлы, находящиеся в папке file_folder, в папку 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/)

Это сработало нормально. Итак, теперь всего у нас есть 3 способа сделать это. Надеюсь, это поможет кому-то вроде меня.

person Akshay    schedule 18.01.2013

См. следующий пример обработки шрифтов Android: https://android.googlesource.com/platform/frameworks/base/+/master/data/fonts/Android.mk#66

Это создает функцию makefile для одного файла шрифта и использует цикл foreach для перебора нескольких файлов: https://android.googlesource.com/platform/frameworks/base/+/master/data/fonts./Android.mk#79

Вы можете использовать любой механизм для заполнения font_src_files

person Jeff Johnson    schedule 20.05.2019