Android AOSP 9.0 Launcher开发(一)Launcher基础知识

Android AOSP 9.0 Launcher开发(一)Launcher基础知识

1.什么是Launcher

Launcher,也就是我们平时所说的“桌面”,本质上与其他Android应用一样,都是apk应用程序,可以独立安装运行,我们平常使用的系统Launcher都是手机厂商定制后预制到系统里面的。

  1. 为什么按Home健就会启动Launcher,Launcher有什么不同?
  2. 为什么桌面应用列表不显示Launcher自身图标?
    看一下Launcher的主Activity配置
<activity
            android:name="com.android.launcher3.Launcher"
            android:launchMode="singleTask"
            android:clearTaskOnLaunch="true"
            android:stateNotNeeded="true"
            android:windowSoftInputMode="adjustPan"
            android:screenOrientation="unspecified"
            android:configChanges="keyboard|keyboardHidden|mcc|mnc|navigation|orientation|screenSize|screenLayout|smallestScreenSize"
            android:resizeableActivity="true"
            android:resumeWhilePausing="true"
            android:taskAffinity=""
            android:enabled="true">
            <intent-filter>
                <action android:name="android.int
<think>我们正在处理用户关于在Android 14 AOSP中完整编译Launcher3的问题。根据引用内容,我们有些关于AOSP编译的参考信息,但需要结合Launcher3的具体编译步骤。 注意:用户要求的是Android 14版本,但引用中提到的版本有7.0、10.0等,我们需要调整到Android 14。 步骤: 1. 初始化repo并选择android-14分支 2. 同步代码 3. 设置编译环境 4. 选择编译目标(lunch) 5. 编译整个AOSP(或者单独编译Launcher3) 6. 运行模拟器或刷机 但是,用户特别要求“完整编译Launcher3”,可能有两种情况: a. 重新编译整个AOSP,其中包含Launcher3(即全编) b. 只单独编译Launcher3模块,然后推送更新到设备 由于引用[4]提到了CarLauncher的编译调试,我们可以借鉴其步骤,但Launcher3是默认的桌面应用,在AOSP中位于`packages/apps/Launcher3`目录。 全编步骤(包含Launcher3): 1. 初始化仓库(如果还没有): ```bash repo init -u https://android.googlesource.com/platform/manifest -b android-14.0.0_rX # 请替换X为具体版本号 ``` 2. 同步代码: ```bash repo sync -j4 ``` 3. 设置环境: ```bash source build/envsetup.sh ``` 4. 选择目标: ```bash lunch aosp_x86_64-eng # 或者选择其他目标,如arm64等 ``` 5. 编译: ```bash make -j16 ``` 单独编译Launcher3并推送到设备: 1. 进入Launcher3目录: ```bash cd packages/apps/Launcher3 ``` 2. 使用mm编译当前模块(需要先设置好环境): ```bash mm ``` 或者 ```bash mmm packages/apps/Launcher3 ``` 3. 将生成的APK推送到设备(如果设备是模拟器或已连接的设备): ```bash adb root adb remount adb push out/target/product/generic_x86_64/system/priv-app/Launcher3/Launcher3.apk /system/priv-app/Launcher3/ ``` 或者如果设备支持,也可以使用`adb install -r`,但系统应用通常需要推送到系统分区。 注意:在Android 14中,Launcher3可能已经改名为Launcher3QuickStep,或者有其他变化,需要确认目录。 但是,引用[4]中提到CarLauncher的编译和推送步骤,我们可以参考: - 编译后,将生成的APK push到系统目录,然后重启。 然而,对于Launcher3,它通常作为系统应用(system/priv-app)存在,所以需要重新挂载系统分区为可写。 重要:在Android 10及以上,由于动态分区和安全增强,直接推送系统分区可能比较困难,尤其是在非eng或userdebug版本上。因此,建议在编译时使用eng或userdebug版本,并启用adb root。 步骤总结: 全编(完整编译AOSP): - 按照上述全编步骤,编译完成后,启动模拟器或刷入设备,Launcher3会自动包含在内。 单独编译Launcher3: - 前提:已经完成过次全编,并且环境已经设置好(source和lunch)。 - 使用`mmm`编译Launcher3模块。 - 然后,使用`adb`推送更新(需要设备有可写的系统分区,并且adb root可用)。 但是,在Android 14中,由于项目可能有所变化,我们需要确认模块名称和路径。在AOSP中,Launcher3的模块名可能为`Launcher3`或`Launcher3QuickStep`,可以通过查看`packages/apps/Launcher3/Android.bp`或`Android.mk`来确定模块名。 另外,编译后生成的文件可能是APK,也可能是APK和odex/vdex等,但在Android 10之后,通常使用module名生成个APK。我们可以使用`adb sync`命令来同步更新,但更直接的方法是找到生成的APK并推送。 生成的文件路径:`out/target/product/<设备名>/system/priv-app/Launcher3/Launcher3.apk`(或类似的路径,模块名可能不同)。 如果用户是在模拟器上测试,可以重新启动模拟器,或者使用以下命令重启桌面: ```bash adb shell am force-stop com.android.launcher3 ``` 注意:包名通常是`com.android.launcher3`。 因此,我们给出两种方式的步骤。 由于用户要求“完整编译”,可能更倾向于全编,但单独编译更快捷。 我们按照用户问题,给出完整编译Launcher3的两种方式,并说明注意事项。 注意:引用[2]中提到了编译源码的命令(source, lunch, make),引用[4]提到了编译后push到系统并启动。 我们结合这些信息,给出回答。</think>### 如何在 Android 14 AOSP 中完整编译 Launcher3 #### 步骤 1:初始化 AOSP 仓库 首先下载 Android 14 分支的源代码(请替换 `_rX` 为具体版本号): ```bash repo init -u https://android.googlesource.com/platform/manifest -b android-14.0.0_rX repo sync -j8 # 同步代码 ``` #### 步骤 2:配置编译环境 ```bash source build/envsetup.sh # 初始化环境变量 lunch aosp_x86_64-eng # 选择编译目标(按需替换为 arm64 等) ``` #### 步骤 3:编译 Launcher3 有两种编译方式: 1. **全量编译**(包含 Launcher3): ```bash make -j16 # 编译整个系统 ``` 2. **单独编译 Launcher3 模块**: ```bash mmm packages/apps/Launcher3 # 仅编译 Launcher3 ``` #### 步骤 4:部署到设备 ```bash adb root && adb remount # 获取 root 权限 adb sync system # 同步系统分区 # 或手动推送 APK(路径示例): adb push out/target/product/generic_x86_64/system/priv-app/Launcher3/Launcher3.apk /system/priv-app/Launcher3/ ``` #### 步骤 5:验证结果 ```bash adb shell am force-stop com.android.launcher3 # 重启 Launcher adb shell monkey -p com.android.launcher3 1 # 触发启动 ``` #### 关键注意事项: 1. **依赖检查**: - 确保 `packages/apps/Launcher3/Android.bp` 文件存在 - 依赖库如 `SystemUI` 需提前编译[^2] 2. **版本适配**: - Android 14 中 Launcher3 包名通常为 `com.android.launcher3` - 资源路径:`packages/apps/Launcher3/res/` 3. **常见问题**: ```bash # 若出现 Jack 编译错误(旧版本) export JACK_SERVER_VM_ARGUMENTS="-Dfile.encoding=UTF-8 -XX:+TieredCompilation" ./prebuilts/sdk/tools/jack-admin start-server ``` > **提示**:调试时建议使用 `eng` 或 `userdebug` 构建类型,支持 ADB root 权限[^4]。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值