无法创建签名APK

时间:2018-05-18 18:36:13

标签: android apk android-proguard signed

我一直在使用Android Studio开发应用程序,经过测试,我已准备好发布到Google Play。

当我尝试创建已签名的APK时,在创建密钥后,gradle构建将停止,并显示以下消息:

Please correct the above warnings first.

经过大量研究后,我发现问题可能出在build.gradle(Module:app)中,而且我读到的内容是缺少这一行:

lintOptions {
    checkReleaseBuilds false
    abortOnError false
}

但是,即使有了这条线,它也无法运作。以下是信息:

Error

编辑:

继承人我的build.gradle:

apply plugin: 'com.android.application'

android {
    compileSdkVersion 27
    defaultConfig {
        applicationId "br.com.companyname.appname"
        minSdkVersion 15
        targetSdkVersion 27
        versionCode 1
        versionName "2018.05.11 v2"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
    lintOptions {
        checkReleaseBuilds false
        abortOnError false
    }
}

dependencies {
    implementation project(path: ':componentsutils')
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'com.android.support:appcompat-v7:27.1.1'
    implementation 'com.android.support.constraint:constraint-layout:1.1.0'
    implementation 'de.hdodenhof:circleimageview:2.2.0'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.android.support.test:runner:1.0.2'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'


    implementation group: 'org.apache.commons', name: 'commons-text', version: '1.2'
    implementation group: 'commons-io', name: 'commons-io', version: '2.4'
    implementation 'com.android.support:design:27.1.1'
    implementation 'com.android.support:appcompat-v7:27.1.1'
    implementation 'com.android.support:palette-v7:27.1.1'
    implementation 'com.squareup.retrofit:retrofit:1.9.0'
    implementation 'com.squareup.okhttp:okhttp:2.7.5'
    implementation 'com.github.d-max:spots-dialog:0.4@aar'
    implementation 'com.github.barteksc:android-pdf-viewer:2.8.2'
    implementation 'br.com.livroandroid:android-utils:1.0.2'
    implementation 'com.android.support:exifinterface:27.1.1'
}

编辑2

深入了解构建错误,我发现了这个Stacktrace:

StackTrace error

2 个答案:

答案 0 :(得分:2)

我今天遇到这个错误,浪费了几个小时。我这样做了

  
      
  1. 更新了所有应用依赖关系,例如google.gmsgoogle.support库。
  2.   
  3. 更新了gradle-wrapper.properties文件中的gradle包装器版本。
  4.   
  5. 更新了项目级build.gradle中的gradle插件版本。
  6.   

如果你问我在哪里找到最新版本

您将在所有这三个方面得到建议,只需接受alt + enter密钥的建议。

答案 1 :(得分:1)

看起来您的ProGuard配置存在问题。

Here是Android开发者网站上ProGuard的描述,基本上它是一个工具,可以做一些事情,包括删除它认为不必要的代码。问题是,它通常会删除运行甚至构建所必需的代码,就像你的情况一样。 要解决此问题,您可以做两件事。

  1. 禁用ProGuard:
  2. 添加

    android {
        ...
        buildTypes {
            release {
                minifyEnabled false
                ...
            }
        }
        ...
    }
    

    到您的应用级build.gradle文件。

    1. 提供规则,因此ProGuard会保留必要的文件。
    2. 在这种情况下,您可以保留设置

      buildTypes {
          release {
              minifyEnabled true
              proguardFiles getDefaultProguardFile('proguard-android.txt'), 
                  'proguard-rules.pro'
          }
      }
      

      您需要编辑proguard-rules.pro文件。它应与您的应用级build.gradle文件位于同一目录中。通常,每个库都会在其网站上提供proguard规则,例如retrofit将它们放在页面底部。浏览所有库并将所有必要的规则添加到proguard-rules.pro文件中。