在几个任务中,我引用了我的主文件夹中的jar.
是否有更好的方法来获取环境变量
ENV = System.getenv()
HOME = ENV['HOME']
task copyToServer(dependsOn: 'jar', type: Copy) {
from 'build/libs/'
into HOME + "/something/plugins/"
}
Run Code Online (Sandbox Code Playgroud)
这设置了$ HOME,但我希望我从文档中错过了一些魔法.
我知道Gradle很强大,我想管理用于开发/生产Google Maps的API密钥
目前我总是需要手动注释一行并取消注释另一行以使其工作.有没有办法在Gradle中自动执行一些自定义发布配置?
<!-- MapView v2 API -->
<uses-library android:name="com.google.android.maps" />
<meta-data android:name="com.google.android.maps.v2.API_KEY" android:value="[MY_DEV_KEY]" />
<!-- PROD
<meta-data android:name="com.google.android.maps.v2.API_KEY" android:value="[MY_PROD_KEY]" />
-->
Run Code Online (Sandbox Code Playgroud) 我是android的新手,正在开发一个项目,我看到我得到的API密钥保存gradle.properties
为:
MyOpenWeatherMapApiKey="1c3ae96f93a0094e8a7chsjdgfid04aed3f10"
然后在build.gradle(module:app)
我添加以下行:
buildTypes.each {
it.buildConfigField 'String', 'OPEN_WEATHER_MAP_API_KEY', MyOpenWeatherMapApiKey
}
Run Code Online (Sandbox Code Playgroud)
所以,在我的主程序中,我使用这个api访问数据,其URL由这段代码获得:
final String FORECAST_BASE_URL = "http://api.openweathermap.org/data/2.5/forecast/daily?";
final String QUERY_PARAM = "q";
final String FORMAT_PARAM = "mode";
final String UNITS_PARAM = "units";
final String DAYS_PARAM = "cnt";
final String APPID_PARAM = "APPID";
Uri builtUri = Uri.parse(FORECAST_BASE_URL).buildUpon()
.appendQueryParameter(QUERY_PARAM, params[0])
.appendQueryParameter(FORMAT_PARAM, format)
.appendQueryParameter(UNITS_PARAM, units)
.appendQueryParameter(DAYS_PARAM, Integer.toString(numDays))
.appendQueryParameter(APPID_PARAM, BuildConfig.OPEN_WEATHER_MAP_API_KEY)
.build();
URL url = new URL(builtUri.toString());
Run Code Online (Sandbox Code Playgroud)
所以,我的问题是为什么要采取所有变化的紧张来将appid存储在gradle部分.我们不能直接在主程序中访问吗?
我的问题的第二部分是在gradle部分实际发生了什么,尤其是buildTypes.each{}
块?