2017-03-09 59 views
0

GenyMotion的本地主机IP地址(10.0.3.2)与Android模拟器的本地主机IP(10.0.2.2)不同。目前我有这个在我的源文件之一:如何让Android Gradle build编写进入调试的文件APK

//val LOCALHOST = "10.0.2.2" // Android emulator 
val LOCALHOST = "10.0.3.2" // Genymotion 

,每当我在Linux中,并在Mac箱之间进行切换,并获取最新的来源,我不得不取消注释一个和重建之前发表意见等。

除非有人能想到更好的解决方案,我希望有一个Gradle任务,根据主机操作系统将这些值中的一个值写入包含在APK中的文件,以便我可以访问它来自我的Android应用程序的运行时,并且当我在Android Studio中构建时,该任务在assembleDebug之前运行。

我想把它放在资源中是最容易在运行时访问的,但即使是Class.getResourceAsStream()可访问的纯文本文件也没问题。

我不介意它是否包含在发行版apk中,但我更喜欢它只是进入调试版。

我还希望在我的build/输出目录中生成该文件,以便它对版本控制不可见。

任何想法如何去做这件事?

回答

2

有喜欢寻找使用getNetworkInterfaces()本地IP地址更好的解决方案,但是当你问到如何从gradle这个传递一些信息,

android { 
    productFlavors { 
     flavorGenymotion { 
      buildConfigField "String", "LOCALHOST", '"10.0.3.2"' 
     } 
     flavorEmulator { 
      buildConfigField "String", "LOCALHOST", '"10.0.2.2"' 
     } 
    } 
    ... 

,您可以为BuildConfig.LOCALHOST访问。

+0

谢谢!这很好。 – user3562927

相关问题