android {
...
buildTypes {
release {
shrinkResources false # this was key
minifyEnabled false # seems that it can't be set to true if shrinkResources is false
proguardFiles getDefaultProguardFile('proguard-android.txt'),
'proguard-rules.pro'
}
}
}
java.lang.RuntimeException: Unable to instantiate application co.mycompany.app.MyApp: java.lang.ClassNotFoundException: Didn't find class "co.mycompany.app.MyApp" on path: DexPathList...
7条答案
按热度按时间kxkpmulp1#
在您的gradle文件中,您必须在您的版本风格中添加可调试功能。
signingConfig
是发布配置,必须将其添加到android{}块的gradle文件中,如下所示:yfjy0ee72#
在我的例子中,我已经创建了与以前版本构建相同的调试配置,并开始调试。这意味着您必须在调试版本中也在构建Gradle中给予签名构建。
因此,它将具有与发布版本相同的符号,您可以在它运行时进行调试。
ovfsdjhp3#
快乐的编码。标记这个答案..如果它有助于..:)
cczfrluj4#
给新来的几个便士。
即使在release区块中加入debuggable true之后,您的两柴点也不会命中。
从释放块中移除以下代码。
nwsw7zdq5#
没有“发布模式”。你指的是构建类型,这意味着在构建过程中采取的步骤(如缩小等)。设置
android:debuggable="true"
不会自动帮助,因为当你“运行”应用程序而不是“调试”时,你没有连接调试器,所以它不会因为特定的原因而停止。这样你就可以
将您的调试版本设置为以与发布相同的方式生成
但是很不清楚你的需求背后的原因是什么,我有一种感觉,你试图走错路(即调试通常不使用ProGuard,而发布版本是和ProGuard改变结果二进制,所以你的断点从源代码将不会真正工作)。
pn9klfpd6#
我认为Marcin's argument above是有意义的(就像有些情况需要调试发布版本一样),所以下面是一个对我有用的公认答案的微小变化:
改编自官方文件
注意事项:
当我设置
minifyEnabled true
时,应用程序启动时发生以下崩溃:nkkqxpd97#
在2022年,或至少在我的情况下
我尝试了许多解决方案,但没有工作,最后解决方案是创建一个新的签名密钥,并使用它与所有构建类型和变体。
步骤
1 -转到AndroidStudio顶部菜单,选择
Build>Generate Signed Bundle /APK > (choose APK )
但是请注意,当您创建密钥时,请选择构建类型
debug
,然后继续2 -再次进入AndroidStudio顶部菜单,选择
Build > Generate Signed Bundle /APK > (choose APK)
,但这次选择现有密钥(我们在上一步中创建的密钥)在上一步中,我们选择了构建类型
debug
,这次选择release
并继续。3 -使用
AAB
重复步骤1和2(发布和调试)这基本上是确保所有构建类型都使用相同配置进行签名。
注意事项
也许你需要添加下面的代码到
app build.gradle