android - BuildConfig 无法从变量中正确创建值(Gradle Android)
问题描述
目标
使用构建类型为不同环境构建 APK
方法
我正在使用这篇文章在没有 android studio 的情况下构建我的 apk。一切正常,除了我在 gradle 中使用环境变量:
在构建之前,我设置了环境变量
export MY_API_TOKEN="ABCDEFGH"
然后在我的 build.gradle 中:
buildTypes {
debug {
buildConfigField("String", "MY_API_TOKEN", System.getenv('MY_API_TOKEN'))
}
}
当我执行 : gradle assemble我得到这个错误:
/home/apps/app/src/main/java/com/my/package/controller/api/MyAwesomeCode.java:64: error: cannot find symbol
BuildConfig.MY_API_TOKEN;
^
symbol: variable BuildConfig
location: class RestAPI
/home/apps/app/build/generated/source/buildConfig/debug/com/my/package/BuildConfig.java:14: error: cannot find symbol
public static final String MY_API_TOKEN = ABCDEFGH;
^
symbol: variable ABCDEFGH
location: class BuildConfig
我尝试了几种组合,我得到了同样的错误:
- BuildConfig 未正确创建(Gradle Android)
- BuildConfig 变量。错误:找不到符号
- https://medium.com/@rafamatias/gradle-android-build-variables-done-right-d0c0e296ee93
- Gradle:如何在 android-library 中使用 BuildConfig,并在应用程序中设置一个标志
我还用变量验证了相同的行为
def MY_API_TOKEN_VAR = "ABCDEFGH"
debug {
buildConfigField "String", "MY_API_TOKEN", MY_API_TOKEN_VAR
}
错误 :
BuildConfig.java:14: error: cannot find symbol
public static final String MY_API_TOKEN = ABCDEFGH;
^
symbol: variable ABCDEFGH
location: class BuildConfig
问题
buildTypes仅适用于 build.gradle 中的硬编码值?
解决方案
假设给定export MY_API_TOKEN="ABC"
(请确保变量对您选择的构建系统可见)并且您的配置配置如下:
buildConfigField("String", "MY_API_TOKEN", "\"" + System.getenv("MY_API_TOKEN") + "\"")
...您的 BuildConfig 类将在同步/重建后有这个额外的字段:
public static final String MY_API_TOKEN = "ABC";
推荐阅读
- php - 实时更改 Wordpress
- jsf - 是否需要在 JSF 自定义组件的 decode() 中调用 setValid(true)?
- python - How to reverse the (key,value)'s order of a dict in the output?
- java - 使用@sql spring boot test从资源文件夹以外的自定义位置读取.sql文件
- sql-server - asp.net core code first 无法打开登录请求的数据库“DbName”。登录失败
- javascript - jquery按钮箭头功能
- apache - Apache 重写 XSS 保护问题
- python - 不止一次在 Apache Flink 中计算时间属性
- html - 绘制后订购 svg 元素
- node.js - “无法保存连接器配置。请重试”错误