Android 系統 APP 裁剪
阿新 • • 發佈:2020-12-19
系統環境;
目標系統: Android 8.1
目標硬體: RK3399Pro , rockchip toybrick。
參考文獻:
Makefile中filter-out的函義:
https://www.jianshu.com/p/4837a05b9082
Makefile中foreach的函義:
https://blog.csdn.net/u012554768/article/details/46043193
裁剪文件:
https://blog.csdn.net/qq_23327993/article/details/90768627
步聚:
1. 新增編譯環境變數PRODUCT_DEL_PACKAGES,新增位置:build/make/core/product.mk中的_product_var_list:
_product_var_list := \ PRODUCT_NAME \ PRODUCT_MODEL \ PRODUCT_LOCALES \ PRODUCT_AAPT_CONFIG \ PRODUCT_AAPT_PREF_CONFIG \ PRODUCT_AAPT_PREBUILT_DPI \ PRODUCT_PACKAGES \ PRODUCT_PACKAGES_DEBUG \ PRODUCT_PACKAGES_ENG \ PRODUCT_PACKAGES_TESTS \ PRODUCT_DEL_PACKAGES \ PRODUCT_DEVICE \ PRODUCT_MANUFACTURER \ PRODUCT_BRAND \ PRODUCT_PROPERTY_OVERRIDES \ PRODUCT_DEFAULT_PROPERTY_OVERRIDES \ PRODUCT_CHARACTERISTICS \ PRODUCT_COPY_FILES \ PRODUCT_OTA_PUBLIC_KEYS \ PRODUCT_EXTRA_RECOVERY_KEYS \ PRODUCT_PACKAGE_OVERLAYS \ DEVICE_PACKAGE_OVERLAYS \
2. 在相應的mk檔案中給PRODUCT_DEL_PACKAGES賦值,如在device\rockchip\rk3399pro\rk3399pro.mk對PRODUCT_DEL_PACKAGES進行賦值;其值為要刪除的APK。
PRODUCT_DEL_PACKAGES += \ SoundRecorder \ Camera2 \ Lightning \ Email \ Gallery2 \ Music \ NfcNci \ MusicFX \ Contacts \ Calendar \ ExactCalculator \ Browser2 \ DeskClock \ EasterEgg
3. 在編譯指令碼中,增加對PRODUCT_PACKAGES的中字串處理,刪除掉PRODUCT_DEL_PACKAGES相應的字串。
# The base list of modules to build for this product is specified
# by the appropriate product definition file, which was included
# by product_config.mk.
product_MODULES := $(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_PACKAGES)
# Filter out the overridden packages before doing expansion
product_MODULES := $(filter-out $(foreach p, $(product_MODULES), \
$(PACKAGES.$(p).OVERRIDES)), $(product_MODULES))
# Filter out executables as well
product_MODULES := $(filter-out $(foreach m, $(product_MODULES), \
$(EXECUTABLES.$(m).OVERRIDES)), $(product_MODULES))
#Add by denglijun 20201202 for 裁剪App
# Filter out executables as well
#$(warning First product_MODULES:$(product_MODULES))
product_sub_MODULES := $(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_DEL_PACKAGES)
#product_MODULES := $(filter-out $(foreach z, $(product_sub_MODULES), \
# $($(z))), $(product_MODULES))
product_MODULES := $(filter-out $(product_sub_MODULES), $(product_MODULES))
#$(warning product_sub_MODULES:$(product_sub_MODULES))
#$(error product_MODULES:$(product_MODULES))
即可實現對刪除。