【问题标题】:Unable to Generate Signed APK无法生成签名的 APK
【发布时间】:2016-10-13 12:43:16
【问题描述】:

我的代码在设备上运行良好,但是当我尝试生成签名 APK 时,它开始报错;

Information:Gradle tasks [:assembleRelease]
Error:UNEXPECTED TOP-LEVEL ERROR:
Error:java.lang.OutOfMemoryError: GC overhead limit exceeded
Error:Execution failed for task ':transformClassesWithDexForRelease'.
> com.android.build.api.transform.TransformException:com.android.ide.common.process.ProcessException:java.util.concurrent.ExecutionException: 
java.lang.UnsupportedOperationException
Information:BUILD FAILED

在我的 Gradle 文件中,唯一引起问题的是这一行,如果我删除这一行,它将生成签名的 APK。

compile 'com.google.android.gms:play-services:9.6.1'

这是我的 Gradle 文件;

buildscript {
repositories {
    mavenCentral()
}
dependencies {
    classpath 'com.android.tools.build:gradle:2.2.1'
}
}

apply plugin: 'com.android.application'

android {
compileSdkVersion 23
buildToolsVersion "23.0.1"
useLibrary 'org.apache.http.legacy'
defaultConfig {
    minSdkVersion 15
    targetSdkVersion 23
    versionCode = 2
    versionName = "1.0.2"
    multiDexEnabled true
}
sourceSets {
    main {
        manifest.srcFile 'AndroidManifest.xml'
        java.srcDirs = ['src']
        resources.srcDirs = ['src']
        aidl.srcDirs = ['src']
        renderscript.srcDirs = ['src']
        res.srcDirs = ['res']
        assets.srcDirs = ['assets']
        jniLibs.srcDirs = ['libs']
        jni.srcDirs = []
    }

    instrumentTest.setRoot('tests')
}

signingConfigs {
    release
}

buildTypes {
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
}
packagingOptions {
    exclude 'META-INF/DEPENDENCIES'
    exclude 'META-INF/NOTICE'
    exclude 'META-INF/LICENSE'
    exclude 'META-INF/LICENSE.txt'
    exclude 'META-INF/NOTICE.txt'
}
}


// ~/.gradle/gradle.properties 
if (project.hasProperty('keystoreFile') &&
    project.hasProperty('keystorePassword') &&
    project.hasProperty('keystoreAliasPassword')) {
android.signingConfigs.release.storeFile = file(keystoreFile)
android.signingConfigs.release.storePassword = keystorePassword
android.signingConfigs.release.keyPassword = keystoreAliasPassword
android.signingConfigs.release.keyAlias = keystoreAlias
} else {
android.buildTypes.release.signingConfig = null
}

dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
compile 'com.android.support:support-v4:23.0.1'
compile 'com.google.android.gms:play-services:9.6.1'
}

这些是我在项目的 lib 文件夹中拥有的库;

【问题讨论】:

    标签: android android-gradle-plugin google-play-services signed-apk


    【解决方案1】:

    有一种单独的方法可以提高 dexing 操作的堆限制。将此添加到您的 build.gradle 文件中的 android 闭包中:

        dexOptions {
             javaMaxHeapSize "4g"
        }
    

    看看有没有帮助。

    【讨论】:

      【解决方案2】:

      尝试,将此行添加到您的 Project gradle 文件的末尾。

      apply plugin: 'com.google.gms.google-services'
      

      并在您的Module gradle 中添加类路径依赖项

       dependencies {
              classpath 'com.android.tools.build:gradle:2.2.1'
              classpath 'com.google.gms:google-services:3.0.0'
              // NOTE: Do not place your application dependencies here; they belong
              // in the individual module build.gradle files
          }
      

      【讨论】:

      • 我正在研究一个现有的,奇怪的是它只有一个 gradle 文件,我共享的那个,所以我添加到上面的东西,但它给出了错误;错误:任务“:processDebugGoogleServices”执行失败。 > 请通过更新 google-services 插件的版本(有关最新版本的信息可在 bintray.com/android/android-tools/… 获得)或将 com.google.android.gms 的版本更新到 9.0.0 来解决版本冲突。
      猜你喜欢
      • 1970-01-01
      • 2017-12-16
      • 2020-06-29
      • 1970-01-01
      • 2019-05-29
      • 1970-01-01
      相关资源
      最近更新 更多