相关疑难解决方法(0)

如何使用Gradle创建一个发布签名的apk文件?

我想让我的Gradle构建使用Gradle创建一个发布签名的apk文件.

我不确定代码是否正确或者我在做gradle build什么时缺少参数?

这是我的gradle文件中的一些代码:

android {
    ...
    signingConfigs {
          release {
              storeFile file("release.keystore")
              storePassword "******"
              keyAlias "******"
              keyPassword "******"
         }
     }
}
Run Code Online (Sandbox Code Playgroud)

gradle构建完成SUCCESSFUL,在我的build/apk文件夹中我只看到...-release-unsigned.apk...-debug-unaligned.apk文件.

关于如何解决这个问题的任何建议?

android release gradle apk android-gradle-plugin

493
推荐指数
20
解决办法
24万
查看次数

Gradle在Android上使用不同的密钥签名

我的Android应用程序有很多种,我希望除了一个以外的所有应用程序都使用相同的密钥.有一个需要使用不同的密钥.

如何覆盖signingConfig应用程序的1种风格(但在相同的构建类型中,例如"发布")?

  • 我希望默认情况下所有构建都使用主要版本配置.
  • 我只想覆盖1种味道
  • 我希望能够使用单个gradlew assembleRelease命令运行所有发布版本

最后一点非常重要,因为我目前有超过120种不同的口味和成长.为了单独定制每一种风味,需要做很多额外的工作.


相关帖子我试过:

使用单个构建类型的不同键生成多个构建

  • 这需要配置每种口味
  • 它似乎并没有使用个性化的signingConfig反正

用gradle签署产品口味

  • 接受的解决方案不起作用(对我而言)
  • 根据评论,这可能是通过放入buildTypes内部,productFlavors但我不明白如何做到这一点.

在Gradle产品口味上调试签名配置

总的来说,每个解决方案似乎仍然使用默认的发布配置,而不是我的自定义配置.


我的重要部分build.gradle看起来像这样:

signingConfigs {
    releaseConfig {
        storeFile file('key')
        storePassword "pass"
        keyAlias "alias"
        keyPassword "pass"
    }

    custom {
        storeFile file('custom_key')
        storePassword "pass"
        keyAlias "alias"
        keyPassword "pass"
    }
}

productFlavors {
    apple {
        applicationId "demo.apple"
    }
    banana {
        applicationId "demo.banana"
    }

    // …
Run Code Online (Sandbox Code Playgroud)

android code-signing gradle android-gradle-plugin

43
推荐指数
2
解决办法
1万
查看次数

使用flavor签名配置覆盖调试构建类型签名配置

我有一个有2种口味的Android应用程序:internal而且production,还有2种构建类型:debugrelease.

我正在尝试根据风格分配签名配置,根据文档是可行的.我看了之后发现了其他答案,但似乎都没有.所有内容都会编译,但应用程序正在使用本机的本地调试密钥库进行签名.

这是我的gradle文件:

android {
    compileSdkVersion 22
    buildToolsVersion "22.0.1"

    defaultConfig {
        minSdkVersion 14
        targetSdkVersion 22
        versionCode 1
        versionName "1.0.0"
    }

    signingConfigs {
        internal {
            storeFile file("../internal.keystore")
            storePassword "password"
            keyAlias "user"
            keyPassword "password"
        }
        production {
            storeFile file("../production.keystore")
            storePassword "password"
            keyAlias "user"
            keyPassword "password"
        }
    }

    productFlavors {
        internal {
            signingConfig signingConfigs.internal
            applicationId 'com.test.test.internal'
        }
        production {
            signingConfig signingConfigs.production
            applicationId 'com.test.test'
        }
    }

    buildTypes {
        debug {
            applicationIdSuffix ".d"
        }
        release {
            minifyEnabled …
Run Code Online (Sandbox Code Playgroud)

android android-gradle-plugin

13
推荐指数
1
解决办法
3258
查看次数

Android Studio 0.8.6更改默认构建变体

我最近将Android Studio从0.6更新到0.8.6,似乎已经删除了指定默认"运行"配置的能力(或者移动到我需要帮助查找的位置).我可以在调试或发布模式下生成签名的APK(生成向导已更改为允许我在此时选择构建变体)但似乎无法找到如何选择一般的构建变体使用.换句话说,当我单击"运行"时,gradle会assembleRelease在我需要运行时执行assembleDebug.知道怎么改变这个吗?

编辑:当我选择"调试"而不是"运行"gradle仍然选择运行assembleRelease,所以我得到这个错误

Cannot debug application com.caseybrooks.scripturememory on device lge-vs985_4g-VS9854Gc824b3f1.
This application does not have the debuggable attribute enabled in its manifest.
If you have manually set it in the manifest, then remove it and let the IDE automatically assign it.
If you are using Gradle, make sure that your current variant is debuggable.
Run Code Online (Sandbox Code Playgroud)

但是,如果我将debuggable="true"属性添加到清单中,则构建将失败.我的build.gradle是否正确?

apply plugin: 'android'

android {
compileSdkVersion 19
buildToolsVersion '19.1.0'
defaultConfig {
    minSdkVersion 8
    targetSdkVersion 19
} …
Run Code Online (Sandbox Code Playgroud)

android gradle android-studio

5
推荐指数
2
解决办法
7966
查看次数

通过 Kotlin DSL 从 local.properties 读取值

我想从如下local.properties文件中检索密钥:

sdk.dir=C\:\\Users\\i30mb1\\AppData\\Local\\Android\\Sdk
key="xxx"
Run Code Online (Sandbox Code Playgroud)

并将这个值保存在我的BuildConfig.javavia gradle Kotlin DSL 中。稍后可以从我的项目中访问此字段。

android gradle kotlin gradle-kotlin-dsl

5
推荐指数
2
解决办法
3602
查看次数

Android 风格签名未按预期工作

我需要使用特定的签名配置来签署产品风格。我在 stackoverflow 上找到了一些参考资料,例如thisthis。它适用于我的风味发布版本,但不适用于调试版本。我在 gradle 中有这样的配置:

...
signingConfigs {
    release {
        storeFile file("../config/keystores/release_keystore")
        storePassword "mysecurepassword"
        keyAlias "myultrasecurealias"
        keyPassword "myreallysecurekeypassword"
    }

    debug {
        storeFile file("../config/keystores/debug.keystore")
        storePassword "mysecurepassword"
        keyAlias "myultrasecurealias"
        keyPassword "myreallysecurekeypassword"
    }

    other {
        storeFile file("../config/keystores/other")
        storePassword "mysecurepassword"
        keyAlias "myultrasecurealias"
        keyPassword "myreallysecurekeypassword"
    }
}

flavorDimensions "dim"

productFlavors {
    production {
        dimension "dim"
    }

    other {
        dimension "dim"
    }
}

buildTypes {
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'        
        productFlavors.other.signingConfig signingConfigs.other
        productFlavors.production.signingConfig signingConfigs.release
    }

    debug {
        productFlavors.other.signingConfig signingConfigs.other
        productFlavors.production.signingConfig …
Run Code Online (Sandbox Code Playgroud)

android code-signing gradle build.gradle android-gradle-plugin

2
推荐指数
1
解决办法
514
查看次数