Android11 系统裁剪

在QCS6125硬件平台上运行Android11系统时,通过修改build文件添加自定义变量定义裁剪APP。主要步骤包括在core/main.mk和core/product.mk中添加规则,然后在device目录下的qssi.mk中指定要删除的包名,如PrintSpooler、Stk等。完成修改后,编译系统以验证APP是否已移除。

硬件平台:QCS6125

软件平台:Android11

    系统裁剪APP的方式,定义一个build变量,赋予裁剪的APP名字,具体修改如下:

1、build添加变量定义。

diff --git a/core/main.mk b/core/main.mk
index 3bfd8326e..ffe6e44d5 100644
--- a/core/main.mk
+++ b/core/main.mk
@@ -1076,6 +1076,8 @@ define product-installed-files
   $(eval ### Filter out the overridden packages and executables before doing expansion) \
   $(eval _pif_overrides := $(call module-overrides,$(_pif_modules))) \
   $(eval _pif_modules := $(filter-out $(_pif_overrides), $(_pif_modules))) \
+  $(eval _pif_dels := $(call get-product-var,$(1),PRODUCT_DEL_PACKAGES)) \
+  $(eval _pif_modules := $(filter-out $(_pif_dels), $(_pif_modules))) \
   $(eval ### Resolve the :32 :64 module name) \
   $(eval _pif_modules_32 := $(patsubst %:32,%,$(filter %:32, $(_pif_modules)))) \
   $(eval _pif_modules_64 := $(patsubst %:64,%,$(filter %:64, $(_pif_modules)))) \
diff --git a/core/product.mk b/core/product.mk
index d691617c7..0e78421e1 100644
--- a/core/product.mk
+++ b/core/product.mk
@@ -287,6 +287,9 @@ _product_single_value_vars += PRODUCT_ODM_BASE_FS_PATH
 # The first API level this product shipped with
 _product_single_value_vars += PRODUCT_SHIPPING_API_LEVEL
 
+# delete product packages
+_product_single_value_vars += PRODUCT_DEL_PACKAGES
+
 _product_list_vars += VENDOR_PRODUCT_RESTRICT_VENDOR_FILES
 _product_list_vars += VENDOR_EXCEPTION_MODULES
 _product_list_vars += VENDOR_EXCEPTION_PATHS

2、修改device目录下的makefile,添加具体的package

diff --git a/qssi.mk b/qssi.mk
index c037c97..3cbfd41 100644
--- a/qssi.mk
+++ b/qssi.mk
@@ -32,6 +32,27 @@ BOARD_AVB_ENABLE := true
 # SHIPPING_API_LEVEL to 28 if it was not set earlier (this is generally set earlier via build.sh per-target)
 SHIPPING_API_LEVEL := 30
 
+PRODUCT_DEL_PACKAGES += \
+    PrintSpooler \
+    Stk \
+    Mms \
+    MusicFX \
+    Dialer \
+    Contacts \
+    EasterEgg \
+    QuickSearchBox \
+    com.qualcomm.location \
+    FM2 \
+    NQNfcNci \
+    SimAppDialog \
+    LiveWallpapersPicker \
+    DocumentsUI \
+    Cam2test \
+    SnapdragonMusic \
+    DeskClock \
+    QDCMMobileApp \
+    Calendar
+
 $(call inherit-product-if-exists, vendor/qcom/defs/product-defs/system/cne_url*.mk)

修改后,编译一次,看out下相关app是否已经不存在即生效了。

<think>好的,我现在需要回答用户关于如何裁剪Tinker Board的Android 11系统的问题。首先,用户提到了参考引用中的内容,其中提到了使用裁剪过的img镜像和Etcher工具进行烧录。我需要结合这些信息,给出具体的步骤和方法。 首先,我应该回忆一下Android系统裁剪的一般流程。通常,系统裁剪需要获取源代码,然后进行定制,比如修改系统组件、内核配置,或者移除不必要的应用和服务。接着,用户需要编译修改后的代码,生成镜像文件,最后烧录到设备上。不过,用户提到的是Tinker Board,这可能涉及到特定的硬件适配,所以可能需要参考华硕Tinker Board的官方文档或社区资源。 接下来,根据引用中的信息,用户已经有一个裁剪过的img镜像,并使用Etcher或Win32DiskImager进行烧录。这说明系统裁剪的步骤可能包括制作自定义镜像的过程。但用户可能不知道如何从头开始裁剪,所以需要详细说明步骤。 系统裁剪的常见步骤包括: 1. 环境准备:安装必要的编译工具,配置开发环境。 2. 获取Android源代码:可能需要从官方或Tinker Board的仓库获取适配的Android 11源码。 3. 修改系统组件:比如移除预装应用,调整系统服务,修改内核配置。 4. 编译系统:生成系统镜像。 5. 测试和调试:在设备上刷入镜像,检查功能是否正常。 6. 打包和分发:生成img文件,方便批量烧录。 需要注意,Tinker Board可能有特定的硬件驱动和BSP(板级支持包),所以在裁剪时要确保这些关键组件不被破坏,否则可能导致硬件无法正常工作。此外,Android系统裁剪需要熟悉AOSP(Android Open Source Project)的结构和编译系统,比如使用lunch命令选择设备配置,使用make进行编译。 用户可能遇到的问题包括如何确定哪些组件可以安全移除,如何配置内核选项,以及如何处理依赖关系。这时候可能需要参考Tinker Board的文档,或者社区的经验分享。例如,引用中提到的WIFI AP功能可能需要特定的驱动和配置,裁剪时要注意保留相关模块。 最后,需要确保回答结构清晰,分步骤说明,并提到可能的注意事项和参考资料。同时,生成的相关问题应该围绕系统裁剪的扩展话题,比如优化启动时间、备份恢复方法或常见问题解决。</think>### Tinker Board Android 11 系统裁剪方法及教程 #### 1. **环境准备** - **安装编译工具**:需配置Linux环境(推荐Ubuntu 20.04),安装JDK、Android SDK、Git等工具。 - **获取源代码**:从华硕官方或Tinker Board开源仓库下载适配的Android 11源码[^1],例如: ```bash repo init -u https://github.com/TinkerBoard/android_manifest.git -b android-11 repo sync ``` #### 2. **系统组件裁剪** - **移除预装应用**:在`packages/apps`目录中删除不需要的系统应用(如Email、Browser)。 - **禁用服务模块**:修改`build/target/product`下的`.mk`文件,注释掉冗余服务(如LiveWallpaper)。 - **内核配置优化**:进入`kernel/`目录,通过`make menuconfig`关闭不必要的驱动或模块(如未使用的传感器)。 #### 3. **编译与生成镜像** - **选择设备配置**: ```bash lunch tinker_board_android-11 ``` - **执行编译**: ```bash make -j$(nproc) ``` - **生成镜像文件**:编译完成后,输出文件位于`out/target/product/tinker_board/`,包含`system.img`, `boot.img`等。 #### 4. **烧录与测试** - **使用Etcher工具**:将生成的镜像写入SD卡或eMMC(参考引用中的批量烧录方法)。 - **功能验证**:启动设备后检查WiFi、蓝牙等硬件功能是否正常,确认裁剪未破坏关键模块。 #### 5. **高级定制** - **修改开机动画**:替换`frameworks/base/core/res/assets/images`中的启动画面文件。 - **调整系统参数**:在`device/asus/tinker_board/`目录下修改设备专属配置(如分辨率、电源管理)。 #### 注意事项 - **保留关键驱动**:Tinker Board的GPU、WiFi芯片(如RTL8723BS)需确保驱动未被移除。 - **依赖关系检查**:使用`mm`命令单独编译模块时,注意依赖项完整性。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值