使用gradle-experimental签署android apk:0.2.0

时间:2015-10-01 23:53:54

标签: android gradle java-native-interface android-gradle build.gradle

我已成功修改build.gradle以使用gradle-experimental但是在尝试添加signingConfigs块时它失败了。我尽可能地按照http://tools.android.com/tech-docs/new-build-system/gradle-experimental的说明操作,但我总是收到以下错误:

  

配置项目':app'。

时出现问题      
    

以下型号规则未绑定:         model.android.signingConfigs>命名(释放)           易变的:              - android.signingConfigs.release(com.android.build.gradle.managed.SigningConfig)

  

我搜索错误但无法找到任何相关信息。什么"以下模型规则未绑定"意思?

这是我的signatureConfig块看起来像什么,它在android块之外并修改为使用=就像使用gradle-experimental时那样。

android.signingConfigs {
    release {
        storeFile = file("myreleasekey.keystore")
        storePassword = "password"
        keyAlias = "MyReleaseKey"
        keyPassword = "password"
    }
}

2 个答案:

答案 0 :(得分:3)

虽然对于提出这个问题的用户来说已经很晚了,但它仍然可以帮助其他人。

以下代码示例对我来说工作正常。我使用以下设置对其进行了测试 - Gradle-experimental-0.4.0,Gradle wrapper - 2.8,Android Studio 2.0预览版。

apply plugin: 'com.android.model.application'

model {
    def signConf // <-- Note the changes made here

    android {
        compileSdkVersion = 23
        buildToolsVersion = "23.0.0"

        defaultConfig.with {
            applicationId = "in.atultiwari.helloandroidjni"
            minSdkVersion.apiLevel = 15
            targetSdkVersion.apiLevel = 23
            versionCode = 1
            versionName = "1.0"
        }
    }
    android.buildTypes {
        release {
            minifyEnabled = false
            proguardFiles.add(file("proguard-rules.pro"))
            signingConfig = signConf // <-- Note the changes made here
        }
    }
    android.signingConfigs { // <-- Note the changes made here
        create("signRelease") { // <-- Note the changes made here
            keyAlias = 'myKeyAlias'
            keyPassword = 'myKeyPassword'
            storeFile = file('myKestoreFile.jks')
            storePassword = 'myKeystorePassword'
            signConf = it
        }
    }
    android.ndk {
        moduleName = "hello-android-jni"
    }
}

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    testCompile 'junit:junit:4.12'
    compile 'com.android.support:appcompat-v7:23.1.1'
    compile 'com.android.support:design:23.1.1'
}

P.S。 - 使用minifyEnabled = true,在这种情况下发生与transformClassesAndResourcesWithProguardForRelease相关的错误。

修改 - 1。 minifyEnabled = true正在使用上述设置。事实证明我的proguard规则文件是空的,不知怎的,它导致了上述错误。

答案 1 :(得分:3)

以下是如何为gradle实验添加签名0.7:
apply plugin:&#34; com.android.model.application&#34;

model {
    android {
        compileSdkVersion 23
        buildToolsVersion "23.0.2"
        buildTypes {
            release {
                signingConfig = $("android.signingConfigs.myConfig")
            }
        }
    }
    android.signingConfigs {
        create("myConfig") {
            storeFile "/path/to/debug.keystore"
            storePassword "android"
            keyAlias "androiddebugkey"
            keyPassword "android"
            storeType "jks"
        }
    }
}  

了解有关gradle experimental的更多信息:0.7.0 here:
Experimental Plugin User Guide