在 Android 的实验性 Gradle 插件中添加发布密钥 [英] Adding release keys in the experimental Gradle plugin for Android

查看:19
本文介绍了在 Android 的实验性 Gradle 插件中添加发布密钥的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

嘿,我在添加签名我的发布版本变体时遇到了一些问题.目前我正在使用实验性的 gradle 2.5 和新的 android gradle 插件版本 0.1.0.

Hey I am having some issues adding a signing my release build variant. Currently I am using the experimental gradle 2.5 with the new android gradle plugin version 0.1.0.

build.gradle:

build.gradle:

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

model {
    android {
        compileSdkVersion = 15
        buildToolsVersion = "22.0.1"

        defaultConfig.with {
            applicationId = "com.testcom.test"
            minSdkVersion.apiLevel = 14
            targetSdkVersion.apiLevel = 14
            versionCode = 1
            versionName = "1.0"
        }

        compileOptions.with {
            sourceCompatibility JavaVersion.VERSION_1_6
            targetCompatibility JavaVersion.VERSION_1_6
        }
    }

    android.ndk {
        ...
    }

    android.signingConfigs {
        signed {
            keyAlias = "meow"
            keyPassword = "**"
            storeFile = file("meow-key.keystore")
            storePassword = "**"
        }
    }

    android.buildTypes {
        release {
            isMinifyEnabled = false
            proguardFiles += file('proguard-rules.pro')
            signingConfig  = signingConfigs.signed
        }
        debug {
            isDebuggable = true
            isJniDebuggable = true
        }
    }

    // You can modify the NDK configuration for each variant.
    components.android {
        binaries.afterEach { binary ->
            binary.mergedNdkConfig.cppFlags.add(
                    "-DVARIANT=\"" + binary.name + "\"")
        }
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
}

我的根 build.gradle:

My root build.gradle:

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle-experimental:0.1.0'
    }
}

allprojects {

    repositories {
        jcenter()
    }
}

我在运行 ./gradlew assembleRelease 时遇到的错误是:

The error that I am getting when running ./gradlew assembleRelease is:

> Exception thrown while executing model rule: model.android.buildTypes > named(release)
   > Attempt to read a write only view of model of type 'java.lang.Object' given to rule 'model.android.buildTypes'

有没有人对实验性的 gradle 插件有类似的问题?帮助将不胜感激.:)

Has anyone had a similar issue with the experimental gradle plugin? Help would be greatly appreciated. :)

推荐答案

这个解决方法对我有用,不需要 -Dorg.gradle.model.dsl=true

This workaround works for me and does not require -Dorg.gradle.model.dsl=true

model {
    def signConf

    android.buildTypes {
        release {
            signingConfig = signConf
        }
    }

    android.signingConfigs {
        create("signed") {
            keyAlias = "meow"
            keyPassword = "**"
            storeFile = file("meow-key.keystore")
            storePassword = "**"
            storeType = "jks"

            signConf = it
        }
    }
}

但是,它仅在您只有一个签名配置时才有效.

However, it only works if you only have one signingConfig.

这篇关于在 Android 的实验性 Gradle 插件中添加发布密钥的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆