[英]Android ProGuard Building a signed apk fails with gradle plugin 3.0.1 (4.1?)
[英]Gradle Release build (with Proguard) continuous running Android 3.0.1
Gradle 构建持续运行,我用 3.0.1 更新了 Android Studio,其中包含所有依赖项的更新 gradle 插件。 没有 Proguard 的 Build Release 版本工作正常。 我没有在代码中使用 crashlytics 而是使用 firebase,它在最后几行卡在这里。 如何解决这个问题?
:app:compileReleaseNdk NO-SOURCE
:app:compileReleaseSources UP-TO-DATE
:app:processReleaseJavaRes NO-SOURCE
:app:transformResourcesWithMergeJavaResForRelease UP-TO-DATE
:app:transformClassesAndResourcesWithProguardForRelease UP-TO-DATE
Inlining subroutines...
Obfuscating...
Printing mapping to [..outputs\mapping\release\mapping.txt]...
Preverifying...
Writing output...
Preparing output jar [..intermediates\transforms\proguard\release\0.jar]
Printing classes to [..outputs\mapping\release\dump.txt]...
:app:crashlyticsStoreDeobsRelease
:app:crashlyticsUploadDeobsRelease
混淆规则
-keepattributes Signature
-keepattributes *Annotation*
-keepnames class * implements java.io.Serializable
-keepclassmembers class * implements java.io.Serializable {
static final long serialVersionUID;
private static final java.io.ObjectStreamField[] serialPersistentFields;
!static !transient <fields>;
private void writeObject(java.io.ObjectOutputStream);
private void readObject(java.io.ObjectInputStream);
java.lang.Object writeReplace();
java.lang.Object readResolve();
}
-keep class com.onesignal.** { *; }
项目梯度
buildscript {
repositories {
jcenter()
maven { url 'https://maven.fabric.io/public' }
}
dependencies {
classpath 'com.android.tools.build:gradle:3.0.1'
classpath 'io.fabric.tools:gradle:1.25.1'
classpath 'com.google.gms:google-services:3.1.1'
}
}
allprojects {
repositories {
jcenter()
maven { url "https://maven.google.com" }
}
}
应用程序摇篮
buildscript {
repositories {
maven { url 'https://maven.fabric.io/public' }
}
dependencies {
classpath 'io.fabric.tools:gradle:1.25.1'
}
}
apply plugin: 'com.android.application'
apply plugin: 'io.fabric'
repositories {
maven { url 'https://maven.fabric.io/public' }
}
android {
compileSdkVersion 27
defaultConfig {
applicationId "com.myproject"
resConfigs "auto"
minSdkVersion 16
targetSdkVersion 24
versionCode 2
versionName "1.1"
}
buildTypes {
release {
debuggable true
useProguard true
shrinkResources true
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
debug {
debuggable true
minifyEnabled true
useProguard false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
useLibrary 'org.apache.http.legacy'
}
dependencies {
implementation 'com.google.firebase:firebase-auth:11.8.0'
implementation 'com.google.firebase:firebase-core:11.8.0'
implementation 'com.android.support:appcompat-v7:27.0.2'
implementation 'com.firebaseui:firebase-ui-auth:3.2.1'
implementation 'com.android.support:design:27.0.2'
implementation 'com.google.android.gms:play-services-gcm:11.8.0'
implementation 'com.google.android.gms:play-services-auth:11.8.0'
implementation 'com.onesignal:OneSignal:3.7.1'
implementation 'com.google.android.gms:play-services-analytics:11.8.0'
implementation 'com.google.android.gms:play-services-location:11.8.0'
implementation 'com.google.code.gson:gson:2.8.0'
implementation 'com.android.support.constraint:constraint-layout:1.0.2'
}
apply plugin: 'com.google.gms.google-services'
gradle 属性
org.gradle.daemon=true
org.gradle.parallel=true
org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -
XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
不小心我让它运行了 1 个多小时,然后用
minifyEnabled true
准备好了。 我收到以下消息
:app:crashlyticsStoreDeobsRelease
:app:crashlyticsUploadDeobsRelease
WARN - Crashlytics had a problem uploading the deobs file. Please check network connectivity and try again.
java.net.UnknownHostException: cm.crashlytics.com
at java.net.Inet6AddressImpl.lookupAllHostAddr(Native Method)
at java.net.InetAddress$2.lookupAllHostAddr(InetAddress.java:928)
at java.net.InetAddress.getAddressesFromNameService(InetAddress.java:1323)
at java.net.InetAddress.getAllByName0(InetAddress.java:1276)
at java.net.InetAddress.getAllByName(InetAddress.java:1192)
at java.net.InetAddress.getAllByName(InetAddress.java:1126)
那是什么意思呢? 无论您是否使用 crashlytics 代码,它都会将反混淆文件上传到 cm.crashlytics.com !!
有什么办法可以禁用这个..uploading deobfuscating files?
编辑:我在发布构建类型中使用了它,现在在几秒钟内签名发布构建就准备好了!
ext.enableCrashlytics = false
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.