我试图通过设置java vm arguments将特定于环境的值传递给Android studio v 2.2.2(例如服务器URL,密钥库位置和密码)。到目前为止,我已尝试过以下选项,但没有任何效果。
1。从studio.vmoptions设置java-vm参数(记录为here)
我点击Help -> Edit Custom VM Options...
创建一个新的vmoptions文件,该文件在〜/ .AndroidStudio2.2 / studio64.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 Studio使用。
export RELEASE_KEY_STORE_PATH=/home/ubuntu/ks/myapp/app-release.keystore
我的build.gradle文件有signedConfig部分,其中使用了此值。
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
}
}
从Android Studio运行gradle项目同步/构建时,构建失败。
显示错误:Neither path nor baseDir may be null or empty string. path='null' basedir='/home/ubuntu/path-to-project'.
这意味着脚本无法解析文件路径,因为它将变为空。
更新 如果我从命令行运行gradle构建它完全有效,构建成功,我所要做的只是为我希望在构建中继承的所需属性发出一些导出命令。
以下是我的开发环境:
答案 0 :(得分:0)
我根据@DeeV和@CommonsWare的评论进行了调查,并做了一些更改,以便在Android Studio和命令行上成功运行构建。
我已将gradle.properties文件放在Gradle的主目录中。在我的环境(ubuntu)中,gradle主目录位于~/.gradle
。
我必须从变量的使用中删除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读取密钥。
我必须执行以下步骤才能摆脱此错误:
RELEASE_KEY_PASSWORD
和RELEASE_KEY_STORE_PASSWORD
的值放在双引号中,我删除了引号,然后从命令行成功完成了构建。我希望这能帮助任何面临类似情况的人。