【问题标题】:Gradle Release build (with Proguard) continuous running Android 3.0.1Gradle Release build (with Proguard) 持续运行 Android 3.0.1
【发布时间】:2018-02-12 12:24:43
【问题描述】:

Gradle 构建持续运行,我已将 Android Studio 更新为 3.0.1,并使用更新的 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

Proguard 规则

-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

【问题讨论】:

  • 来自 Crashlytics 的 Mike。尝试从您的调试变体中删除minifyEnabled true,看看是否可以修复它。
  • 感谢您的帮助,但没有运气。从调试变体中删除,但在发布变体中产生相同的结果(生成签名的 APK)。现在我使用了 shrinkResources false 和 minifyEnabled false ,然后毫不拖延地成功创建了它。但是我想在发布版本中使用收缩和缩小选项。
  • 你的提示 (minifyEnabled) 将我带到了这个 link ,不幸的是同样的问题。
  • @MikeBonnell ..在构建过程中禁止将 deobs 文件上传到 cm.crashlytics.com 的任何方法?
  • build.gradle 在其中引用了 Fabric,这就是上传发生的原因。如果您没有在调试版本中使用 Fabric,我建议您按照以下步骤操作:docs.fabric.io/android/crashlytics/… 如果您使用 ext.enableCrashlytics = false,那么如果 Fabric 在其他点仍处于启用状态,您可能会收到错误。

标签: android crashlytics


【解决方案1】:

我不小心让它运行了 1 个多小时,然后用

签署了发布版本

minifyEnabled 为真

准备好了。我收到以下消息后

: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

源代码:How to disable Crashlytics while developing

【讨论】:

  • 禁用后,你的应用会崩溃吗?
猜你喜欢
  • 1970-01-01
  • 2013-09-20
  • 2018-10-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-12
  • 2018-06-30
相关资源
最近更新 更多