提问人:JoeP 提问时间:10/8/2021 更新时间:7/20/2022 访问量:309
Android Studio 应用 Build,但未安装或运行某些版本
Android Studio App Builds but doesn't install or run for some flavors
问:
我在 Android Studio 项目中遇到了一个非常奇怪的问题,我完全不知所措。
这个项目有它的核心,然后有多个重新命名的版本,这些版本通过他们自己的 中分配,例如:Flavor
productFlavor
build.gradle
productFlavors {
mainBrand {
applicationId('my.main.brand.app')
buildConfigField "String", "CUSTOM_BRAND_STRING", "I am the main brand"
}
secondBrand {
applicationId('my.second.brand.app')
buildConfigField "String", "CUSTOM_BRAND_STRING", "I am the second brand"
}
thirdBrand {
applicationId('my.third.brand.app')
buildConfigField "String", "CUSTOM_BRAND_STRING", "I am the third brand"
}
fourthBrand {
applicationId('my.fourth.brand.app')
buildConfigField "String", "CUSTOM_BRAND_STRING", "I am the fourth brand"
}
}
每个品牌都可以拥有自己的文件夹和自己的资源,并且文件夹的名称与名称相同。如果品牌没有自己的文件夹,或者其文件夹中未包含资源,则它只使用主文件夹中的所需资源。Flavor
这一切都已经工作了一年多,直到最近我才遇到任何问题,当时我准备在创建签名的 APK 之前对每个品牌的调试版本进行最终测试。我一直在对第二个品牌进行更改,然后切换到第三个品牌以确保一切正常,但是当我来测试时,我突然无法将其安装到物理设备或模拟器上。mainBrand
切换到并按下按钮后,它会成功构建而不会出现任何错误,但永远不会在设备上打开。最终,大约 300 秒后,窗口上会出现一条消息,上面写着mainBrand
Flavor
Run
Run
Timed out waiting for process (my.main.brand.app) to appear on *device-name*
我在构建或 logcat 中没有收到任何错误报告,它似乎甚至没有尝试安装。
实际上大约有 7 个设置,虽然只使用了 4 个,但我检查了所有这些设置,除了 和 之外,一切都正常。Flavors
mainBrand
sixthBrand
在采取删除 Android Studio 的步骤之前,我提交并推送了我的项目,并将它们合并到我的笔记本电脑中。在我的笔记本电脑上,工作正常,就像大多数其他计算机一样,但表现出与我的主计算机上完全相同的问题!git
mainBrand
fourthBrand
fifthBrand
mainBrand
我花了几个小时在我的笔记本电脑上进行测试,复制“工作”及其相关文件,并重命名它们。最初,带有新名称的直接副本可以工作,并且随着我逐渐更改所有文件和设置而继续工作,但是一旦我将其名称放回 .它也不适用于其他几个我以前从未使用过的名称。最终,我注意到我所有带有短名称的测试都失败了,在我的笔记本电脑上,我通过将它们全部重命名为他们自己名称的较长版本(例如 .我拒绝相信这是合法的修复,但我认为它会同时起作用,当我有更多时间时,我会尝试弄清楚为什么它会“修复”它。Flavor
secondBrandCopyTest
gradle
Flavor
secondBrand
Flavor
Flavors
secondBrandLongerName
我回到我的主计算机并应用了相同的逻辑 - 重命名了所有 s 和关联的文件夹名称,但它仍然不起作用!Flavor
关于我如何开始找出导致这种情况的原因的任何想法?我尝试过的其他事情:
- 清洁和重建
- 使缓存失效并重新启动
- 完全删除Android Studio并重新安装(必须手动完成,因为它无法通过控制面板工作)
- 重命名项目
- 手动删除所有 、 、 文件夹。
build
gradle
idea
- 将 and 更改为 28、29 和 30
minSdkVersion
targetSdkVersion
- 将版本更改为 7
gradle
- 构建 APK 并单独安装(也不起作用)
答:
这是因为不同的风格有不同的密钥库。
所以,你需要小心。Android 操作系统认为它们不同。
评论