You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何为Launcher3默认工作区设置常用应用——Android源码定制问题

嘿,我来帮你搞定Pixel 2上Launcher3默认工作区添加快捷方式的问题!

解决Launcher3默认工作区修改不生效&添加预编译APK的问题

一、先排查修改default_workspace后不生效的原因

  • 确认修改的是对应Pixel 2的文件:Pixel 2的屏幕对应Launcher3的4x5网格布局,你需要修改的是packages/apps/Launcher3/res/xml/default_workspace_4x5.xml,别选错了其他分辨率的版本(比如3x4、5x6这些)。
  • 检查XML语法完整性:你贴的代码片段没写完,这里给你一个正确的Hotseat(底部 dock栏)配置示例,注意标签闭合和属性正确性:
    <!-- Hotseat(底部快捷栏)配置 -->
    <include launcher:workspace="@xml/workspace_screen" launcher:screen="0" />
    <hotseat xmlns:launcher="http://schemas.android.com/apk/res-auto">
        <!-- 添加预编译APK到Hotseat的第一个位置 -->
        <app
            launcher:packageName="com.your.prebuilt.app"
            launcher:className="com.your.prebuilt.app.MainActivity"
            launcher:container="-101" <!-- -101是Hotseat的容器标识,别改 -->
            launcher:screen="0"
            launcher:x="0"
            launcher:y="0" />
    </hotseat>
    
  • 清理编译缓存重新构建:旧缓存很容易导致修改不生效,执行以下命令清理后再编译:
    make clean && make launcher3 -j$(nproc)
    
    如果用Android Studio编译,直接点Build > Clean Project再重新构建即可。
  • 确认刷入的是最新编译的ROM包:刷入前可以检查Launcher3 APK的修改时间,或者对比签名信息,确保刷的不是旧版本。

二、正确添加预编译APK到默认工作区

如果要把预编译APK放到主工作区(不是底部栏),可以这样配置:

<workspace xmlns:launcher="http://schemas.android.com/apk/res-auto">
    <screen launcher:screenId="0">
        <!-- 把预编译APK放到主屏幕第2列第1行(坐标从0开始) -->
        <app
            launcher:packageName="com.your.prebuilt.app"
            launcher:className="com.your.prebuilt.app.MainActivity"
            launcher:container="-100" <!-- -100是主工作区的容器标识 -->
            launcher:screen="0"
            launcher:x="1"
            launcher:y="0" />
    </screen>
</workspace>

几个关键细节要注意:

  • 准确填写包名和主Activity:预编译APK的包名和主Activity类名不能错,你可以用aapt dump badging your_prebuilt_app.apk命令获取,输出里的package: name='xxx'launchable-activity: name='xxx'就是你需要的值。
  • 容器标识别写错:主工作区是-100,Hotseat是-101,填错会导致图标不显示。
  • 坐标要在网格范围内:Pixel 2主工作区是4列5行,所以x范围是0-3,y范围是0-4;Hotseat是5个位置,x范围0-4,y固定为0。

三、额外排查技巧

  • 检查权限配置:如果是Android 11及以上版本,要确保Launcher3的AndroidManifest.xml里添加了android.permission.QUERY_ALL_PACKAGES权限,不然可能无法识别预编译APK。
  • 查看Logcat日志:刷入后启动Launcher时,过滤Launcher相关日志,看有没有Package not foundActivity not found的报错,这能快速定位问题根源。

内容的提问来源于stack exchange,提问作者HyperionX

火山引擎 最新活动