2016-12-02 71 views
1

我想通过设置Java虚拟机参数将环境特定值传递给Android Studio v 2.2.2(例如服务器URL,密钥存储位置和密码)。到目前为止,我尝试了以下选项,但没有任何工作。Android Studio不尊重环境变量

1.从studio.vmoptions设置Java-VM参数(如记录here

我点击Help -> Edit Custom VM Options...创建其在〜/ .AndroidStudio2.2/studio64.vmoptions创建新文件vmoptions 。我编辑了文件以添加以下行。

-DRELEASE_KEY_STORE_PATH=/home/ubuntu/ks/myapp/app-release.keystore

2.用gradle.properties文件

我已创建在所述根的build.gradle文件存在相同的目录中的文件gradle.properties。该文件具有以下内容。

RELEASE_KEY_STORE_PATH=/home/ubuntu/ks/myapp/app-release.keystore

3.编辑studio.sh文件

我也曾尝试编辑studio.sh文件,添加以下行希望这些属性将提供给Android的工作室。

export RELEASE_KEY_STORE_PATH=/home/ubuntu/ks/myapp/app-release.keystore

我的build.gradle文件有signingConfig部分在使用这个值。

signingConfigs { 
     release { 
      storeFile file(System.env.RELEASE_KEY_STORE_PATH) 
      storePassword System.env.RELEASE_KEYS_STORE_PASSWORD 
      keyAlias System.env.RELEASE_KEY_ALIAS 
      keyPassword System.env.RELEASE_KEY_PASSWORD 
     } 
    } 

构建的gradle时同步工程/建造从Android Studio中运行失败。

显示错误:Neither path nor baseDir may be null or empty string. path='null' basedir='/home/ubuntu/path-to-project'.这意味着脚本无法解析文件路径,因为它将变为空。

UPDATE 如果我命令列运行它完美的作品的gradle构建,构建成功,我所要做的仅仅是火所需的性能我想在构建继承一些导出命令。

以下是我的开发环境:

    由Android工作室使用
  • 摇篮版本:2.14.1
  • 摇篮插件版本:2.3.1
  • 的Android Studio版本:2.2.2
  • 的Java版本:oracle jdk 1.8.0_111
  • 操作系统:Ubuntu 16.04 amd64
+1

当你尝试Gradle选项时,你做了'System.env.RELEASE_KEY_STORE_PATH'还是'RELEASE_KEY_STORE_PATH'?它应该是第二个,因为它不是一个环境变量。 – DeeV

+0

maven选项是什么意思?在gradle.properties文件中设置道具? – Pawan

+0

对不起。我的意思是Gradle选项(#2)。 – DeeV

回答

0

我已经完成了基于@DeeV和@CommonsWare的评论的调查,并且已经做了一些更改以在Android Studio以及命令行上成功运行构建。

  1. 我已经将gradle.properties文件放在Gradle的主目录中。在我的环境(ubuntu)中,gradle主目录位于~/.gradle

  2. 我不得不从变量的使用去除System.env.,所以这样它使用gradle.properties文件中声明的属性。

有了这两个变化,我注意到了Android Studio的问题得到了解决。但是,这造成了另一个问题,CL构建失败,出现错误: Failed to read key relase_key from store "/home/ubuntu/ks/myapp/app-release.keystore": Keystore was tampered with, or password was incorrect.这意味着从CL运行时,gradle可以解析路径,但无法从KS读取密钥。

我必须做以下步骤摆脱这种错误的:

  • 在gradle.properties,我已经把值RELEASE_KEY_PASSWORDRELEASE_KEY_STORE_PASSWORD在双引号,我删除了引号,然后从命令行成功完成了构建。
  • 我希望这会帮助任何面临类似情况的人。