Android Studio 3.0.1生成测试APK问题:如何构建非测试APK?
-t才能安装的问题 嘿,我来帮你搞定这个问题!先给你吃个定心丸:这个情况绝对不是因为你项目里的原生C++代码导致的,主要是Android Studio的构建配置、签名或者默认运行行为搞的鬼,下面一步步教你排查解决:
1. 先确认你选对了构建变体
首先看Android Studio右侧的Build Variants面板,确保你当前选中的是debug或者release变体——千万别选androidTest相关的测试变体!要是不小心选了测试变体,生成的APK本身就是测试包,自然得加-t才能装。
2. 把testOnly配置在gradle里(光改Manifest没用)
你只在Manifest的application标签加android:testOnly="false"是不够的,gradle的配置会覆盖Manifest的设置。得在模块的build.gradle(如果是KTS就是build.gradle.kts)里明确加上:
android { // 其他配置... defaultConfig { // 其他默认配置... testOnly false } }
加完后点一下Sync按钮同步gradle,然后重新构建APK试试。
3. 检查签名配置有没有问题
- 如果你构建的是debug包:Android Studio默认用debug签名,但有时候签名配置出问题也会导致APK被标记为测试包。你可以在
build.gradle里确认debug签名的配置是否正常:
android { signingConfigs { debug { storeFile file('debug.keystore') storePassword 'android' keyAlias 'androiddebugkey' keyPassword 'android' } } buildTypes { debug { signingConfig signingConfigs.debug // 其他debug配置... } } }
- 如果你构建的是release包:一定要用正式的签名密钥来签名!未签名的release包也会出现需要
-t才能安装的情况,记得在buildTypes的release块里配置好正确的签名。
4. 别用Run按钮构建,手动生成APK
平时点Run按钮的时候,Android Studio为了快速部署测试,默认会带-t和-r参数,生成的其实是测试用的临时APK。要生成正常的APK,得走这个路径:Build > Build Bundle(s) / APK(s) > Build APK(s)。
构建完成后,APK会存在你的模块名/build/outputs/apk/debug或者release目录下,直接用adb install 你的APK路径/xxx.apk安装,不用加-t参数就可以正常装了。
5. 清掉Android Studio缓存试试
有时候AS的缓存会导致配置不生效,你可以试试:File > Invalidate Caches...,选择Invalidate and Restart,重启后重新构建项目,说不定就能解决问题。
最后说下原因
Android Studio 3.x版本里,当你构建测试变体,或者gradle配置中隐式开启了testOnly时,生成的APK会被标记为测试包,必须用-t参数安装。而Manifest里的android:testOnly="false"单独设置没用,得和gradle的配置配合才能生效。
内容的提问来源于stack exchange,提问作者RanSh

