1. 程式人生 > 其它 >Android 系統 APP 裁剪

Android 系統 APP 裁剪

技術標籤:androidmakefile

系統環境;

目標系統: 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))

即可實現對刪除。