当前位置: 首页 > wzjs >正文

自学考试网站建设与管理东莞人才网58

自学考试网站建设与管理,东莞人才网58,一个数据库怎么做二个网站,松江网站建设培训在Android开发当中,BuildConfig是一个非常有用的功能,它允许我们在构建过程中定义常量,并在运行时使用它们。But!!当我们从传统的Groovy DSL迁移到Kotlin DSL时或者被Android Studio坑的时候,有一些细微的差…

在Android开发当中,BuildConfig是一个非常有用的功能,它允许我们在构建过程中定义常量,并在运行时使用它们。But!!当我们从传统的Groovy DSL迁移到Kotlin DSL时或者被Android Studio坑的时候,有一些细微的差别可能会导致意想不到的问题。今天,我要分享一个我最近遇到的陷阱:BuildConfigField vs buildConfigField(主要是Android Studio的代码的锅!)。

如果你不知道什么是BuildConfig,可以去看我上一篇博客

  • 【构建工具】Gradle 8中Android BuildConfig的变化与开启方法

问题场景

假设有一个使用Kotlin DSL的build.gradle.kts文件,其中包含以下配置:

android {namespace = "dev.xuanran.xxxx"compileSdk = 35defaultConfig {applicationId = "dev.xuanran.xxxx"minSdk = 26targetSdk = 35versionCode = 1versionName = "1.0"}buildTypes {debug {BuildConfigField("boolean", "DEBUG", "true")BuildConfigField("boolean", "APP_PACKAGE_BIND", "false")}release {isMinifyEnabled = trueproguardFiles(getDefaultProguardFile("proguard-android-optimize.txt"),"proguard-rules.pro")BuildConfigField("boolean", "DEBUG", "false")BuildConfigField("boolean", "APP_PACKAGE_BIND", "false")}}buildFeatures {buildConfig = true}// 其他配置...
}

我们已经启用了BuildConfig功能(通过buildFeatures { buildConfig = true }),但是当查看生成的BuildConfig类时,只看到默认字段:

public final class BuildConfig {public static final boolean DEBUG = Boolean.parseBoolean("true");public static final String APPLICATION_ID = "dev.xuanran.xxxxx";public static final String BUILD_TYPE = "debug";public static final int VERSION_CODE = 1;public static final String VERSION_NAME = "1.0";// 但是没有APP_PACKAGE_BIND字段!
}

问题出在哪???

问题根源:大小写敏感性

问题出在方法名的大小写上。在Kotlin DSL中,正确的方法名应该是小写开头的buildConfigField,而不是大写开头的BuildConfigField

这是因为Kotlin语言和Gradle DSL遵循特定的命名约定:

  • 类名和接口名以大写字母开头(PascalCase)
  • 方法名和属性名以小写字母开头(camelCase)

而在Groovy DSL中,由于Groovy的动态特性,方法调用对大小写不那么敏感,所以可能两种写法都能工作。但在更严格的Kotlin中,这是一个明确的区别。

解决方案

修改build.gradle.kts文件,将所有的BuildConfigField改为buildConfigField

buildTypes {debug {buildConfigField("boolean", "DEBUG", "true")buildConfigField("boolean", "APP_PACKAGE_BIND", "false")}release {isMinifyEnabled = trueproguardFiles(getDefaultProguardFile("proguard-android-optimize.txt"),"proguard-rules.pro")buildConfigField("boolean", "DEBUG", "false")buildConfigField("boolean", "APP_PACKAGE_BIND", "false")}
}

进行这个简单的修改后,重新构建项目,就会看到生成的BuildConfig类中现在包含了自定义字段:

public final class BuildConfig {public static final boolean DEBUG = Boolean.parseBoolean("true");public static final String APPLICATION_ID = "dev.xuanran.xxxx";public static final String BUILD_TYPE = "debug";public static final int VERSION_CODE = 1;public static final String VERSION_NAME = "1.0";public static final boolean APP_PACKAGE_BIND = false; // 然后就可以了
}

错误原因(甩锅Android Studio)

我是知道如果要启用这个功能的话需要使用buildConfigField的,但是我在输入的时候Android Studio只有这一个代码补全,并没有小写字母开头的代码补全(即使我首字母是小写的),然后我就发现生成的并没有我想要的,排查了半天才发现是首字母大小写的问题,而且这个问题Gradle Sync和编译的时候不会报错,但是就是不生成这个字段
在这里插入图片描述

结论

我就说Android Studio是整个jetbrain中最烂的ide吧

http://www.dtcms.com/wzjs/821718.html

相关文章:

  • 环保网站建设公司哪家好物业管理系统c语言
  • 上海科技网站设计建设济南专业做网站公司
  • 专业的句容网站建设徐州市建设工程监理
  • 德国和俄罗斯和做视频网站怎样找到网站建设设置模板
  • 怎么夸一个网站开发公司中国机房建设公司排名
  • 个人网站设计步骤网站代码输入完成之后要怎么做
  • 网页建站建设教程淘宝里网站建设公司可以吗
  • 免费域名申请网站空间北斗手表官方网站
  • 描述网站的含义哪个网站做布料好
  • 佛山网站专业制作设计公司管理制度
  • 网站建设加关键词是什么意思一级造价工程师报名时间2024年
  • 泰州网站制作案例做店铺装修的公司网站
  • 河南省建设厅注册中心网站首页重庆企业网站推广方法
  • 门户网站建设企业怎样做国外网站
  • flashfxp上传网站淘宝网页版电脑版入口淘宝网
  • 怀柔高端网站建设国内知名网站建设公司
  • 如何建立自己的网站平台wordpress 使用插件下载
  • 深圳社区网站开发公司拓客团队怎么联系
  • 网站建设现在好做吗seo网络营销的技术
  • wordpress演示站教程鹿泉城乡建设局网站
  • 好看的企业网站企业为什么做网站优化推广
  • 网站的空间的提供商小程序介绍内容怎么写
  • 江门做网站哪家好一起做网商网站怎么样
  • 张家港杨舍网站建设百度官网链接
  • 短网址生成管理平台太仓新网站优化
  • 个人展示网站模板建立网站基本知识
  • 海沧区建设局网站 破路申请百度竞价排名技巧
  • 自助个人网站注册国内 免费 云服务器
  • 专门做冷门旅行的网站南京建站公司模板
  • 顺德哪家做网站wordpress上长缺少临时文件夹