如何声明一个对所有模块的 build.gradle 文件可见的常量?

2024-07-01

我有一个具有多个模块的项目 - 库和应用程序。每次Android新版本出现时,我都需要升级所有模块的targetSdk、compileSdk、buildToolsVersion等。常数可以帮助完成这项乏味的工作!

如何定义对所有模块的 build.gradle 可见的项目级常量?


我选择执行类似操作的方法是创建一个属性文件,然后读取该文件以获取所有全局变量。您可以使用 java 语法来做到这一点:

Properties props = new Properties()
props.load(new FileInputStream("/path/file.properties"))

您更喜欢的语法是:

Properties props = new Properties()
File propsFile = new File('/usr/local/etc/test.properties')
props.load(propsFile.newDataInputStream())

这样,您可能会在所有模块中重复代码,但至少您的问题得到了解决。

第二个选项是使用额外属性扩展 https://docs.gradle.org/current/dsl/org.gradle.api.plugins.ExtraPropertiesExtension.html我个人从未使用过它,但根据问题的回答Android gradle build:如何设置全局变量 https://stackoverflow.com/a/25600733/611600它似乎做你想做的事。

UPDATE

如果为了执行此操作使用ExtraPropertiesExtension, 在你的<project base>/build.gradle add:

allprojects {
    repositories {
        jcenter()
    }
    //THIS IS WHAT YOU ARE ADDING
    project.ext {
        myprop = "HELLO WORLD";
        myversion = 5
    }
}

然后在同步后,在每个模块的 build.gradle 文件中,您可以像这样使用:

System.out.println(project.ext.myprop + " " + project.ext.myversion)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何声明一个对所有模块的 build.gradle 文件可见的常量? 的相关文章

  • 如何让 Meteor Cordova 应用程序允许访问域

    我刚刚做了流星更新 现在有版本 流星1 0 4 科尔多瓦4 2 0 我最近还使用 mup deploy 将我的服务器移动到数字海洋 我现在发现 虽然桌面和移动网站运行良好 但在 Android 移动应用程序中 图像不再加载 这些图像是公共
  • react-native:“adb”未被识别为内部或外部命令、可操作程序或批处理文件

    我是反应原生 Android 应用程序开发的新手 请帮我解决这个问题 我无法运行我的第一个应用程序 收到错误如下adb is not recognized as an internal or external command operabl
  • 使用 jsoup 收集倒计时器并为 android 设置计时器

    我想解析 eBay 上的倒计时器 span class 5g 20h span 如何用 jsoup 解析它以在 android studio 上创建倒计时器 我可以像平常一样解析它吗element 像下面这样 更新 getMsFromStr
  • 待定意图的多个实例

    我创建了一个小部件 单击该小部件会激活 PendingIntent 问题是 当我屏幕上有多个小部件时 只有最新的小部件才会启动 PendingIntent 我读过一些关于独特请求代码的内容 但没有弄清楚这一点 有什么想法可以让多个小部件和
  • Progruard 和 R8 已弃用 - Android Studio 3.6

    将 Android Studio 升级到 3 6 后 我收到了有关 Proguard 和 R8 的弃用警告 这是否意味着我们不应该在项目中使用混淆 或者在发布模式下构建时我们应该考虑另一个等效选项 选项 android enableR8 已
  • Android 上的 wifi 聊天

    Android 上可以使用 Wifi 聊天吗 我的要求是我的电脑与 wifi 适配器连接 并且我的 Android 设备有 wifi 我想将我的电脑转换为服务器 将 Android 设备转换为客户端并实现聊天 这可能吗 请帮帮我 显然这是可
  • Android 三星 S I9000 屏幕尺寸和密度问题

    我在 Samsung S I9000 上使用应用程序时遇到问题 我的应用程序上的按钮比应有的大得多 此外 系统选择 res values small 作为值的来源 总而言之 它的表现就好像该设备有一个非常小的屏幕 尽管它应该是 800x48
  • android - 自动检测未使用的绘图

    问题是 我在开发 Android 应用程序时使用了许多图标和图片 后来我替换了其中的许多图标和图片 但保留了旧的 以防我需要再次使用它们 我现在有大量我的 png 的drawable文件夹中 许多现在都未使用 手动整理它们需要很长时间 有没
  • 使用数据绑定后查看边距不起作用

    下面是gridview的item布局的代码 在此 layout margin 位于设计面板中 但当我运行时没有边距 我尝试检查其他标签 例如背景 发现它有效 类似的问题是线性布局的布局权重 它们也不起作用 这些在没有数据绑定的情况下工作得很
  • 从 android 将用户注册到 QuickBlox 用户

    我正在尝试在我的 Android 应用程序中使用 QuickBlox 我阅读了指南并导入了示例 一切正常 我更改了一些用户可以使用 EditText 作为用户名和另一个密码登录的内容 并且效果很好 但现在我想添加一个注册按钮 使用户能够注册
  • INSTALL_FAILED_MISSING_SHARED_LIBRARY 没有 google api

    好吧 我一直在浏览 但我最终得到的只是谷歌的 api 我没有在我的应用程序中使用任何来自谷歌的API 我正在编写一个使用 sqlite 浏览器的应用程序 但尚未使用任何其他参考 任何想法 我之前没有开始过这个应用程序 所以现在这是一个非常大
  • 是否可以从 Linux CLI 编译适用于 Android 的 Xamarin?

    我们有一个 Android 应用程序 它根据每个客户端使用自定义信息进行编译 目前 我们的应用程序是使用 Ionic 构建的 因此当用户要求下载 APK 时 我们会自动相应地修改其源代码 编译应用程序并提供从客户端的下载 所有这一切都是在
  • Android 定期运行任务

    我想在 android 活动中定期运行一个方法 该方法会在 x 秒后更新某个字段 我知道它可以在timerTask中完成 但是最好的方法是什么 代码示例会很有帮助 你应该使用Handler和它的postDelayed功能 您可以在这里找到示
  • Android Studio 3.1 中任务“:app:transformClassesWithAndroidGradleClassShrinkerForDebug”执行失败

    我刚刚从 Android Studio 升级3 1到 Android Studio3 1 1 但仍然使用 Gradle 构建工具3 0 0 当我运行我的应用程序时 它会导致此错误 app transformClassesWithAndroi
  • 更改 Android 中的配对对话框外观

    我们有一个与 BLE 设备 我们也生产 配对的 Android 应用程序 但默认的 Android 配对对话框存在一些问题 问题是 我们的设备不需要访问联系人或通话记录 是否可以删除该选项 无论是否选中该框 配对和我们的功能都将起作用 但我
  • com.google.firebase.firestore.FirebaseFirestoreException:无法获取文档,因为客户端处于离线状态。安卓

    我收到此运行时错误 我不明白其背后的原因 com google firebase firestore FirebaseFirestoreException Failed to get document because the client
  • android 图像被文本包裹

    我想将图像插入文本中 例如 我想显示这样的文本 要编辑图片 您应该单击 图片 按钮 其中 image 是真实图像 例如 ImageView 你可以试试这个 不知道这是否是你的需要 setContentView R layout main T
  • Cache.properties(系统找不到指定的文件)

    我刚刚开始使用 Android Studio 1 3 sdk 24 直到今天它都运行良好 我收到有关 cache properties 的错误消息 并删除了该缓存文件 但现在收到此错误消息 Error C Users user1 gradl
  • 我如何读取我在我的电脑中修改并复制回我的应用程序的 db 文件夹的 Android 应用程序中的数据库

    我想做的是我有一个在我的应用程序中创建的数据库 我正在从我的手机复制相同的数据库 我的手机已root 因此我可以轻松复制它并粘贴到我的Mac上 在我的 Mac 上 通过 SQLite Manager 插入数据 这样做是因为我需要将 csv
  • android 软键盘出现时会破坏布局

    这是一个布局

随机推荐