相关疑难解决方法(0)

Android gradle build System.getEnv("RELEASE_PASSWORD")返回null

我遇到的问题是System.getenv()为环境变量返回null.我的密码存储在RELEASE_PASSWORD环境变量中.当我做:

$ echo $RELEASE_PASSWORD

它打印出正确的值,所以我知道变量已设置.

我最初signingConfig signingConfigs.release发布版本中设置了类型,一切都运行正常,但我需要不同的签名配置,以适应不同的产品风格.如果我对密码进行硬编码,它的工作原理就像它想象的那样.当我尝试从环境变量中读取密码时,事情就变得很糟糕.

这是某种范围问题吗?

这就是我目前所拥有的build.gradle.

android {

  ...

  signingConfigs {
    release {
      storeFile ...;
      keyAlias ...;
      storePassword System.getenv("RELEASE_PASSWORD");
      keyPassword System.getenv("RELEASE_PASSWORD");
    }

    unsigned {
      keyAlias "";
      storePassword "";
      keyPassword "";
    }
  }

  buildTypes {
    debug {
      versionNameSuffix = "-DEBUG"
    }

    release {
    }
  }

  flavorGroups "storeFront"

  productFlavors {
    def googleVariable = signingConfigs.release
    def amazonVariable = signingConfigs.unsigned

    google {
        flavorGroup "storeFront"
        signingConfig googleVariable
    }

    amazon {
        flavorGroup "storeFront"
        signingConfig amazonVariable …
Run Code Online (Sandbox Code Playgroud)

android gradle android-gradle-plugin

27
推荐指数
3
解决办法
2万
查看次数

使用Android Studio在gradle中使用系统环境变量的正确方法

我正在使用Android Studio在Ubuntu 14.04系统上构建我的项目.

我在build.gradle文件中写了以下内容,以避免在我的git仓库中硬编码storeFile,storePassword,keyAlias和keyPassword:

signingConfigs {
 debug {

    storeFile file(System.getenv("KEYSTORE"))
    storePassword System.getenv("KEYSTORE_PASSWORD")
    keyAlias System.getenv("KEY_ALIAS")
    keyPassword System.getenv("KEY_PASSWORD")        
 }
Run Code Online (Sandbox Code Playgroud)

但是使用以下内容来清除同步错误: Error:(49, 0) Neither path nor baseDir may be null or empty string. path='null' basedir='./pathto/TMessagesProj'

我的.bashrc包含:source ~/.gradlerc而我的〜/ .gradlerc包含以下内容:

export KEYSTORE="/home/myname/keystore/mykey"
export KEYSTORE_PASSWORD='mypass'
export KEY_ALIAS='mykey'
export KEY_PASSWORD='keypass'
Run Code Online (Sandbox Code Playgroud)

我已经确认这些变量是由shell正确导入的.但是我不确定它为什么没有被Android Studio中的构建环境接收.

在gradle中使用环境变量的正确方法是什么?

android gradle android-studio android-gradle-plugin

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

从Android Studio gradle build访问环境变量

在我的Android Gradle构建中,我需要访问我设置的环境变量.bash.profile.当我从命令行构建时,它工作正常 - Gradle脚本可以看到所有变量.

但是,当我尝试从Android Studio运行构建时 - 我不再拥有环境变量了.

以下是我所面对的大致情况:

1)通过~/.bash.profile以下方式设置自定义环境变

export MY_CUSTOM_VAR='Hello World'
Run Code Online (Sandbox Code Playgroud)

2)在build.gradle创建任务中打印此环境变量:

task printVar << {
    println System.getenv("MY_CUSTOM_VAR")
}
Run Code Online (Sandbox Code Playgroud)

3)printVar从命令行执行.输出正确 - 设置了env变量:

输出: Hello World

4)printVar从Android Studio 执行.未设置环境变量.输出为空

常识告诉我,通过执行export MY_CUSTOM_VAR='Hello World'我只是使这个变量可用于shell进程(及其子进程).如果我从命令行启动我的Android Studio(这将继承我的环境),这可能会有效.但是,自从我从Dock启动Android Studio(顺便说一下,我在Mac上) - 它有自己的环境,对我不了解~/.bash.profile.

有什么办法可以将自定义环境变量填充到Android Studio吗?

shell android environment-variables android-studio android-gradle-plugin

15
推荐指数
1
解决办法
6958
查看次数