Bar*_*art 4 android gradle android-gradle-plugin
我正在开发一个连接到我的服务器的Android应用程序.像往常一样,我的服务器在开发期间是在笔记本电脑上,它的ip正在改变 我想检测我的开发机器的IP地址,即
InetAddress.getLocalHost().getCanonicalHostName()
Run Code Online (Sandbox Code Playgroud)
...并将其注入android strings.xml文件,以便我的Android应用程序在开发过程中连接到正确的ip.
我正在努力确定从哪里获取信息运行什么类型的buildType以后每次都可以执行:
android {
buildTypes.each { buildType ->
if(buildType.name == 'debug') {
def host = InetAddress.getLocalHost().getCanonicalHostName()
}
}
}
Run Code Online (Sandbox Code Playgroud)
假设现在确定该主机.但是我仍然不确定如何替换strings.xml文件中的host以连接到正确的主机.我无法调用processResources,因为抛出以下异常:
Could not find method processResources() for argument [build_11onjivreh0vsff0acv5skf836$_run_closure3@cbbe2cf] on project
Run Code Online (Sandbox Code Playgroud)
任何建议或源代码将不胜感激.
flx*_*flx 11
有一个更简单的解决方案:使用static finalin BuildConfig:
buildTypes {
debug {
def host = InetAddress.getLocalHost().getCanonicalHostName()
buildConfig "public static final String API_HOSTNAME = \"" + host + "\";"
}
release {
buildConfig "public static final String API_HOSTNAME = \"whateveritisforreleasebuilds\";"
}
}
Run Code Online (Sandbox Code Playgroud)
BuildConfig.API_HOSTNAME 将保留远程地址.
最新版本需要以下语法:
buildTypes {
debug {
buildConfigField "String", "ENVIRONMENT", "\"development\""
}
release {
buildConfigField "String", "ENVIRONMENT", "\"production\""
}
}
Run Code Online (Sandbox Code Playgroud)
或者使用布尔类型:
buildTypes {
debug {
buildConfigField "boolean", "ENVIRONMENT", "true"
}
release {
buildConfigField "boolean", "ENVIRONMENT", "false"
}
}
Run Code Online (Sandbox Code Playgroud)
然后你会用它作为
BuildConfig.ENVIRONMENT.equals("production"); // String type
Run Code Online (Sandbox Code Playgroud)
要么
if (BuildConfig.ENVIRONMENT) { ... } // boolean type
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6231 次 |
| 最近记录: |