无法使用proguard生成已签名的apk
问题描述:
当我尝试生成已启用proguard的已签名apk时,出现以下错误。无法使用proguard生成已签名的apk
Error:Uncaught translation error: com.android.dx.cf.code.SimException: com.android.dx.rop.cst.CstMethodRef cannot be cast to com.android.dx.rop.cst.CstInterfaceMethodRef
Possible causes for this unexpected error include:<ul><li>Gradle's dependency cache may be corrupt (this sometimes occurs after a network connection timeout.)
<a href="syncProject">Re-download dependencies and sync project (requires network)</a></li><li>The state of a Gradle build process (daemon) may be corrupt. Stopping all Gradle daemons may solve this problem.
<a href="stopGradleDaemons">Stop Gradle build processes (requires restart)</a></li><li>Your project may be using a third-party plugin which is not compatible with the other plugins in the project or the version of Gradle requested by the project.</li></ul>In the case of corrupt Gradle processes, you can also try closing the IDE and then killing all Java processes.
这是我使用了/做什么:
- 的Android Studio 2.2中
- 播放服务版本9.6.1
-
proguard-rules.pro
dontwarn okio.
dontwarn retrofit2.Platform$Java8
keep public class com.google.android.gms.
dontwarn com.google.android.gms.
keepattributes InnerClasses,EnclosingMethod
-
gradle这个(APP)
defaultConfig { applicationId "com.something.something" minSdkVersion 15 targetSdkVersion 23 versionCode 3 versionName "3.0" // Enabling multidex support. multiDexEnabled true testInstrumentationRunner "com.android.test.runner.MultiDexTestRunner" } buildTypes { release { minifyEnabled true proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } productFlavors { }
-
库,我使用的是:
com.radiusnetworks:proximitykit-android:[email protected]
com.squareup.retrofit2:retrofit:2.0.2
com.google.firebase:firebase-messaging:9.6.1
答
从这个SO answer基础,下面的代码应该工作,只要你不需要任何特殊的ProGuard配置。
buildTypes { release { minifyEnabled true proguardFiles getDefaultProguardFile('proguard-android.txt') } }
如果这样做,使用原来的
proguardFiles
条目并创建该文件/Users/franek/Documents/Android_Studio_Melange/app/proguard-rules.txt
然后把您的自定义规则,在这个文件中。
这thread也可能有所帮助。将以下行添加到proguard-rules.pro
文件中,以解决使用Proguard (Minify Enabled = true)
无法生成已签名APK的问题。
保持类org.apache.http。**
保持类android.net.http。**
dontwarn com.google.android.gms。**
我曾经到设置minifyEnabled = false为我的工作! – Eenvincible