Android studio-向gradle添加签名配置

Vas*_*K V 5 android code-signing android-install-apk android-studio

我对 android 世界很陌生,我试图在我的手机上运行一个简单的 hello world 应用程序。当我尝试这个时,我了解到由 android studio 生成的 APK 是未签名的。所以为了签署这个,我经历了创建一个密钥存储的过程,然后是一个私钥,它的别名,我成功地签署了 APK 并安装在我的手机上并运行它。

然后我通过这个链接将签名配置添加到 gradle 以使用新创建的密钥存储文件自动签署版本。我已经正确地按照上述链接的步骤操作并且没有遗漏任何东西,但是当我完成我的签名配置时,我有一个错误说

Gradle 项目同步失败。基本功能(例如编辑、调试)将无法正常工作。

错误:(19, 0) 在 SigningConfig 容器上找不到属性“config”。

我吃了一惊!现在我也无法手动签署我的 APK。现在,当我尝试手动签名时,它说 gradle不同步

我想这个文件将有助于帮助我解决这个错误。项目的 build.gradle。我试图理解这里提到的内容与我在进行签名配置时通过 Android Studio UI 配置的内容相同。

apply plugin: 'com.android.application'

android {
    signingConfigs {
        release {
            storeFile file("<path>\\firstKeystore.jks")
            storePassword "******"
            keyAlias "usual password"
            keyPassword "******"
        }
    }
    compileSdkVersion 19
    buildToolsVersion '20.0.0'
    defaultConfig {
        applicationId 'com.tech.vasanth.newsfeed'
        minSdkVersion 19
        targetSdkVersion 19
        versionCode 1
        versionName '1.0'
    }
    buildTypes {
        release {
            runProguard false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            signingConfig signingConfigs.config
            debuggable false
            jniDebugBuild false
            renderscriptDebugBuild false
            zipAlign true
        }
        debug {
            signingConfig signingConfigs.config
        }
    }
    productFlavors {
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
}
Run Code Online (Sandbox Code Playgroud)

And*_*eky 9

我一直在使用以下配置进行调试/发布。

signingConfigs {
            release {
                keyAlias 'keyAlias'
                keyPassword 'keyPassword'
                storePassword 'storePassword'
                storeFile file("${rootDir}/keystores/app.keystore")
            }

            debug {
                storeFile file("${rootDir}/keystores/debug.keystore")
                keyAlias 'androiddebugkey'
                keyPassword 'android'
                storePassword 'android'
            }
        }
Run Code Online (Sandbox Code Playgroud)

定义发布模块时:

 buildTypes {
        release {
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'other-rules.pro'
            signingConfig signingConfigs.release
        }
        debug {
            signingConfig signingConfigs.debug
        }
    }
Run Code Online (Sandbox Code Playgroud)

注意:rootDir是您的项目根目录。请将您的密钥库存储在上述目录中。


Hen*_*nry 7

buildTypes.release块中有错误。签名配置应该是:

signingConfig signingConfigs.release
Run Code Online (Sandbox Code Playgroud)

请注意,这就是您在signingConfigs上面的块中命名配置的方式。

还要省略buildTypes.debug块中的签名配置(或者,如果你真的想要它,像上面那样设置)。