将APK加入AOSP编译后在Android Studio模拟器中不可见的问题
解决APK加入AOSP编译后模拟器不显示的方案
先确认模块是否真的被编译到镜像里
- 编译完成后,前往
out/target/product/generic_x86/data/app/目录,查看是否存在MyApp文件夹或MyApp.apk,如果没有,说明模块未被正确打包:- 核对
core.mk里的PRODUCT_PACKAGES,确保MyApp的大小写和模块名完全一致(AOSP模块名区分大小写) - 单独编译模块排查:执行
make MyApp -j32,观察是否能生成对应文件。如果报错,大概率是APK文件名和LOCAL_SRC_FILES不匹配——你模块名是MyApp,但放入的是myApp.apk,大小写不一致导致编译时找不到文件,要么把APK重命名为MyApp.apk,要么修改LOCAL_SRC_FILES := myApp.apk
- 核对
修正Android.mk的配置问题
- 文件名大小写必须匹配:模块名和APK文件名的大小写要统一,否则编译时无法识别文件,自然不会打包进镜像
- 调整安装路径:你当前将APK放在
TARGET_OUT_DATA(对应data/app目录),属于用户级应用,系统首次启动可能不会自动触发安装。可以改为TARGET_OUT_APPS(对应/system/app目录),让它成为系统应用,系统启动时会自动扫描安装,修改后的配置如下:LOCAL_MODULE_PATH := $(TARGET_OUT_APPS) - 移除不必要的配置:
LOCAL_UNINSTALLABLE_MODULE := true更适合系统应用,放在data目录的话可以先注释掉,避免潜在冲突
确保模拟器加载的是新编译的镜像
- 不要使用旧镜像启动!可以通过命令指定新镜像:
或者前往Android Studio的AVD管理器,删除旧镜像后重新导入刚编译的emulator -avd <你的AVD名称> -system out/target/product/generic_x86/system.img -data out/target/product/generic_x86/userdata.imgsystem.img(路径为out/target/product/generic_x86/system.img)
检查应用是否真的安装,以及launcher图标配置
- 启动模拟器后,用adb命令查询应用包名:
注意这里是APK本身的包名,不是模块名adb shell pm list packages | grep <你的APK实际包名>MyApp - 如果找不到包名,回到编译步骤排查;如果能找到但launcher不显示,说明是APK本身的配置问题:检查它的AndroidManifest.xml里是否存在带有
android.intent.category.LAUNCHER的Activity,没有的话launcher不会显示图标,必须添加类似以下的配置:<activity android:name=".MainActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity>
内容的提问来源于stack exchange,提问作者Samarth
相关产品推荐
相关产品推荐

