在Java模块中,BuildConfig 的等价物是什么?- Android

18

我正在使用Android Studio,以下是我的情况:

  • 主要Android项目:app
  • Java库:communication

我想设置“communication”模块的gradle文件以实现以下目标:

  • 像app模块的gradle一样,我可以为BuildConfig.java文件设置变量,例如:

  • buildTypes {
        release {
            ...
            buildConfigField "String", "SERVER_URL", '"my_url"'
        }
    
        debug {
            buildConfigField "String", "SERVER_URL", '"my_url"'
        }
    }
    

那么我可以使用BuildConfig.SERVER_URL来使用它们。

问题是:如何在Java库模块中实现这一点?


你的意思是在 Android 应用程序中运行时,在 Java 库代码中访问 BuildConfig 值吗?你有没有打算在 Android 应用程序之外使用这个库代码呢? - Doug Stevenson
你好Antonio,你找到解决方案了吗? - Thomas Vos
3个回答

6

哦,那很有趣。我会尝试在这些日子里测试它。目前无法做到。 - Antonio
如果您也在寻找Kotlin支持,我已经制作了这个:https://github.com/gmazzo/gradle-buildconfig-plugin - gmazzo
@gmazzo 如何添加发布和调试版本的配置? - Sundara Raghavan
多个版本是Android的一个特性,但你可以通过创建两个SourceSets(调试和发布),并让它们扩展到主要的SourceSet来实现类似的效果。 然后你可以使用我的插件在它们上面设置buildConfigFields。 - gmazzo
有没有一种方法可以在不使用插件的情况下实现这个? - George Shalvashvili

0
如果你所说的Java库是指Android模块,则需要在build.gradle文件中设置library模块内的buildTypes变量,就像app模块一样。
通过使用正确的BuildConfig类来获取它。
  • my.package.app.BuildConfig.APP_VARIABLE
  • my.package.library.BuildConfig.LIBRARY_VARIABLE

或许你可以查看Gradle任务和系统环境,这个答案可能会对你有所帮助https://dev59.com/4WQm5IYBdhLWcg3w-S6Y#25714617 在Android模块之外获取构建配置的方法是不存在的。
只需根据你的Android BuildConfig变量设置/添加一个环境变量即可。

3
感谢你的回答,@Lionel。这不是一个基于Android的项目模块。它是一个Java模块,其中包含“plugin 'java'”代码。 - Antonio
这在我的Android项目中很有帮助。一个简单的Java类需要从产品风味中引用。BuildConfig.MYVALUE解决了问题。太棒了! - CaptainCrunch

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接