AOSP构建中添加APK后新应用未显示的问题求助
解决方法
1. 修正模块名称的引号与空格问题
Android构建系统对带空格的模块名称支持不佳,且mk文件中的引号会导致识别异常。建议:
- 将
/packages/apps/下的文件夹重命名为FolderApp(移除空格) - 修改
android.mk中的模块名称:
LOCAL_MODULE := FolderApp
- 同步修改
handheld_product.mk中的引用:
PRODUCT_PACKAGES += \ Browser2 \ Camera2 \ LatinIME \ Launcher3QuickStep \ Music \ FolderApp \ OneTimeInitializer \ Provision \ Settings \ SettingsIntelligence \ SystemUI \ StorageManager \ WallpaperCropper \ frameworks-base-overlays
2. 调整模块标签,确保全版本编译
LOCAL_MODULE_TAGS := tests仅会让应用在eng/debug等测试版本中编译,若你编译的是user或userdebug版本,应用不会被包含。修改为:
LOCAL_MODULE_TAGS := optional
optional标签表示只要在PRODUCT_PACKAGES中声明,所有版本都会编译该模块。
3. 验证APK是否被正确编译生成
编译完成后,检查out/target/product/<你的设备型号>/system/app/FolderApp/FolderApp.apk路径是否存在对应文件。若不存在,单独编译该模块:
make FolderApp
再重新打包系统镜像。
4. 检查APK的启动配置有效性
确保my_app.apk的AndroidManifest.xml中包含带启动器类别的Activity,示例:
<activity android:name=".MainActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity>
缺少此配置的APK,即使安装成功也不会在启动器中显示。
5. 确认签名兼容性
如果APK需要作为系统应用运行,需确保签名符合要求:
- 若APK是预签名状态,确认
LOCAL_CERTIFICATE := PRESIGNED配置正确,且APK本身的签名与系统兼容; - 若需要系统级签名,将
LOCAL_CERTIFICATE改为platform,并使用对应平台的签名密钥重新签名APK。
内容的提问来源于stack exchange,提问作者Reuel Queiroz
相关产品推荐
相关产品推荐

