[英]Adding release keys in the experimental Gradle plugin for Android
嘿,我在添加簽名我的發布版本變體時遇到了一些問題。 目前我正在使用實驗gradle 2.5和新的android gradle插件版本0.1.0。
的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'])
}
我的root build.gradle:
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle-experimental:0.1.0'
}
}
allprojects {
repositories {
jcenter()
}
}
我在運行./gradlew assembleRelease
時遇到的錯誤是:
> 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插件有類似的問題? 非常感謝幫助。 :)
此解決方法適用於我,不需要-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
}
}
}
但是,它僅在您只有一個signingConfig時才有效。
您應該能夠使用如下腳本添加發布密鑰:
model {
android.buildTypes {
release {
signingConfig = $("android.signingConfigs.signed")
}
}
android.signingConfigs {
create("signed") {
keyAlias = "meow"
keyPassword = "**"
storeFile = file("meow-key.keystore")
storePassword = "**"
storeType = "jks"
}
}
}
目前它似乎是插件中的一個錯誤。
運行gradle命令時,需要指定-Dorg.gradle.model.dsl=true
。
你也應該對proguard有疑問。 在這種情況下,您可以使用new File("path/to/proguard-rules.pro")
而不是file('proguard-rules.pro')
使用最新版本的Android插件( 0.6.0-alpha3 )執行此操作的正確方法如下:
android.signingConfigs {
create("release") {
storeFile = file("../keys.keystore")
storePassword = "st0r3pa$$"
keyAlias = "SecretKey"
keyPassword = "k3ypa$$"
}
}
android.buildTypes {
release {
signingConfig = $.android.signingConfigs.get("release")
}
}
在此版本插件使用的Gradle 2.9中,聲明的規則可以使用特殊語法相互依賴: $.<path-to-element>
。 訣竅是像往常一樣創建簽名配置,然后使用此語法將其分配給不同規則中的字段。 Gradle將意識到簽名配置是一個輸入依賴項,並允許您訪問它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.