首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏木溪知识加油站

    多个module打包异常提示BuildConfig属性重复

    于是检查了一遍每一个依赖,排除了这个原因后还是无法打包,问题依旧是这个,终于找到一个老哥的解决方法受到启发解决Program type already present: com.baidu.idl.facesdk.BuildConfig AGPBI: {"kind":"error","text":"Program type already present: comxxx.BuildConfig","sources":[{}],"tool ":"D8"} Error while merging dex archives: Program type already present: com.xxx.BuildConfig 看吧这个错误

    2.6K10发布于 2020-06-18
  • 来自专栏韩曙亮的移动开发专栏

    【错误记录】Android Gradle 配置报错 ( gradle.properties 配置到 BuildConfig 中需要注意类型转换 | 位置: 类 BuildConfig )

    解决方案 一、报错信息 ---- 报错信息 : D:\002_Project\002_Android_Learn\ClassLoader_Demo\app\build\generated\source\buildConfig \debug\com\example\classloader_demo\BuildConfig.java:15: 错误: 找不到符号 public static final String market = GooglePlay; ^ 符号: 变量 GooglePlay 位置: 类 BuildConfig 在 Android , isGooglePlay) // 当前的应用市场 buildConfigField("String", "market", market) } } 生成的 BuildConfig.java DO NOT MODIFY */ package com.example.classloader_demo; public final class BuildConfig { public static

    1.3K40编辑于 2023-03-30
  • 来自专栏韩曙亮的移动开发专栏

    【Android Gradle 插件】ProductFlavor 配置 ( ProductFlavor#buildConfigField 方法 | 单独编译生成 BuildConfig 类的任务 )

    文章目录 一、ProductFlavor#buildConfigField 方法 二、单独执行 Gradle 编译 BuildConfig 的任务 Android Plugin DSL Reference 类中 , 生成的字段 ; 向生成的 BuildConfig 类添加一个新字段。 这里调用 void buildConfigField(String type, String name, String value) 方法 , 向 生成的 BuildConfig 类中添加新的字段 , 类 : package com.example.classloader_demo; public final class BuildConfig { public static final boolean 中调用该参数 博客 ; 二、单独执行 Gradle 编译 BuildConfig 的任务 ---- Android Gradle 插件中 , 提供了单独编译 BuildConfig 类的 Gradle

    1.5K20编辑于 2023-03-30
  • 来自专栏韩曙亮的移动开发专栏

    【Android Gradle 插件】gradle.properties 中配置编译参数并在 Java 代码 BuildConfig 中调用该参数

    文章目录 一、gradle.properties 中配置编译参数 二、在 build.gradle 中配置 BuildConfig.java 生成信息 三、编译后生成的 BuildConfig 类 Android 生成信息 ---- 这里调用 void buildConfigField(String type, String name, String value) 方法 , 向 生成的 BuildConfig 需要使用如下样式声明 , 字符串外部的双引号 , 也需要手动使用转移字符串生成 ; buildConfigField("String", "market", "\"${market}\"") 声明 BuildConfig 类 ---- 选择 " 菜单栏 / Build / Make Project " 选项 编译整个工程 , 或者使用 Ctrl + F9 快捷键 ; 编译完成后生成的 BuildConfig 类 : package com.example.classloader_demo; public final class BuildConfig { public static final boolean

    2.3K20编辑于 2023-03-30
  • 来自专栏韩曙亮的移动开发专栏

    【Android 应用开发】Android 工程修改包名流程 ( 修改 applicationId | 修改 package | 修改 R 资源引用 | 修改 BuildConfig 引用 )

    Android 工程修改包名流程 二、 修改 applicationId 三、 修改 package 包名 四、 AndroidManifest.xml 清单文件组件 五、 修改 R 资源引用、修改 BuildConfig 引用 : 修改 Java 代码中的 package.BuildConfig 引用 ; ⑤ AndroidManifest.xml 清单文件修改 : 所有的组件都使用全路径名称 , FileProvider 引用 ---- 包名修改后 , 对应生成的资源类 R , 编译配置类 BuildConfig 的包名也发生了相应的改变 ; 需要将 import kim.hsl.package_change.R .BuildConfig; 对于源码中修改的 R 较多时 , 选中源码目录 src , 使用 " Ctrl + Shift + R " 快捷键 , 也可以右键点击 src 目录 , 选择 " Replace .BuildConfig;” ( 在该示例中只有一个 , 如果是一个大型项目 , 会有几百上千的匹配 ) 六、 修改 FileProvider ---- 由于忽略了该步骤 , 导致出错 , 【错误记录

    8.7K20编辑于 2023-03-29
  • 来自专栏韩曙亮的移动开发专栏

    【Android 组件化】使用 Gradle 实现组件化 ( 组件 / 集成模式下的 Library Module 开发 )

    文章目录 一、组件模式下为组件 Module 指定 Java 源码路径 二、主应用的角色 三、BuildConfig 中生成当前 组件 / 集成 模式字段 四、Library Module 中的代码示例 配置中 , 生成一些选项 , 如下代码就可以在 BuildConfig.java 类中生成 public static final boolean isModuleMode = false; 字段 ; android { defaultConfig { // 在 BuildConfig 中生成如下字段 // public static final boolean DO NOT MODIFY */ package kim.hsl.library1; public final class BuildConfig { public static final boolean public static final boolean isModuleMode = false; } 在 Java 代码中通过调用 BuildConfig.isModuleMode 获取当前 Module

    1.1K50编辑于 2023-03-29
  • 来自专栏openshift持续集成

    openshift镜像构建

    build configuration或BuildConfig的特点是strategy和一个或多个source。strategy决定了构建过程,而source提供其输入。 构建配置由BuildConfig定义,它是一个REST对象,可以在POST中用于创建新实例的API服务器。 根据您选择使用OpenShift Origin创建应用程序的方式,如果使用Web控制台或CLI,BuildConfig通常会自动为您生成,并且可以随时对其进行编辑。 如果您选择稍后手动调整配置,那么理解组成BuildConfig的部件及其可用选项可以提供帮助。 BuildConfig Object Definition kind: "BuildConfig" apiVersion: "v1" metadata: name: "ruby-sample-build

    2.2K130发布于 2018-03-16
  • 来自专栏潇涧技术专栏

    Plaid Source Reading Notes

    UMENG_CHANNEL_VALUE: "wandoujia"] } } 3.Gradle中buildConfigField的配置 通过在Gradle文件中配置的buildConfigField可以在自动生成的BuildConfig 在build.gralde中添加一些BuildConfig字段 defaultConfig { applicationId "io.awesome" minSdkVersion 16 xxx dribbble_client_secret = yyy dribbble_client_access_token = zzz 待Gradle Sync之后在文件app/build/source/BuildConfig /Build Varients/package name/BuildConfig就会看到添加的字段 public final class BuildConfig { public static final

    53220发布于 2018-08-01
  • XLog debug 开启打印日志,release 关闭打印日志

    一、build.gradle 里利用 BuildConfig.DEBUG 自动切换 android { ... Application { @Override public void onCreate() { super.onCreate(); // 只在 debug 编译时生效,release 版不会打印也不会初始化 if (BuildConfig.LOG_OPEN 、Kotlin 更简洁 class App : Application() { override fun onCreate() { super.onCreate() XLog.init(if (BuildConfig.LOG_OPEN RemoteConfig.isLogOpen()) { XLog.init(LogLevel.NONE);// 立即停打 } 五、一行总结 debug / release 双包场景: gradle 里 BuildConfig.LOG_OPEN

    19510编辑于 2025-12-03
  • 来自专栏韩曙亮的移动开发专栏

    【错误记录】Android 应用 release 打包报错处理 ( 关闭语法检查 | 日志处理 | release 配置 )

    the build even when errors are found: abortOnError false } } 二、日志处理 ---- 根据当前编译配置中的编译类型 BuildConfig.DEBUG , 选择是否打印日志 ; public final class BuildConfig { public static final boolean DEBUG = Boolean.parseBoolean final int VERSION_CODE = 1; public static final String VERSION_NAME = "0.1"; } 如果当前是 release 版本 , 则 BuildConfig.DEBUG ; 开发日志工具类 Log 示例 : public class L { public static void i(String TAG, String msg) { if (BuildConfig.DEBUG

    79520编辑于 2023-03-29
  • 来自专栏历史专栏

    【愚公系列】2021年12月 攻防世界-简单题-MOBILE-002(app1)

    public class MainActivity extends AppCompatActivity { Button btn; public final String pName = BuildConfig.APPLICATION_ID toString(); PackageInfo pinfo = MainActivity.this.getPackageManager().getPackageInfo(BuildConfig.APPLICATION_ID Toast.makeText(MainActivity.this, "年轻人不要耍小聪明噢", 1).show(); } }); } } 点击BuildConfig 如下图所示: package com.example.yaphetshan.tencentgreat; /* loaded from: classes.dex */ public final class BuildConfig

    52510编辑于 2021-12-10
  • 来自专栏FunTester

    Fabric8 Kubernetes 教程——OpenShift 客户端

    BuildConfig 从 YAML 加载 BuildConfigBuildConfig buildConfig = client.buildConfigs() .inNamespace(" FunTester") .load(new FileInputStream("test-buildconfig.yml")).item(); 创建 BuildConfigBuildConfig buildConfig = new BuildConfigBuilder() .withNewMetadata().withName("bc1").endMetadata() .withNewSpec ).endOutput() .endSpec() .build(); client.buildConfigs().inNamespace("FunTester").resource(buildConfig ).create(); 列出 BuildConfig: BuildConfigList bcList = client.buildConfigs() .inNamespace("FunTester

    39200编辑于 2025-04-06
  • 来自专栏全栈程序员必看

    Android FileProvider配置报错android.content.pm.ProviderInfo.loadXmlMetaData问题

    java.lang.String)’ on a null object reference 根据日志定位到错误是: Uri contentUri = FileProvider.getUriForFile(context, BuildConfig.APPLICATION_ID android:resource="@xml/file_paths" /> </provider> 还有就是在工具类哪里打开下载文件的方法,也统一用自己项目包下的BuildConfig.APPLICATION_ID FileProvider.getUriForFile(context.getApplicationContext(), BuildConfig.APPLICATION_ID+”.provider”,new com.xxxx.xxxx.fileprovider", apkFile); Uri contentUri = FileProvider.getUriForFile(context, BuildConfig.APPLICATION_ID

    1.2K11编辑于 2021-12-23
  • 来自专栏Android开发指南

    Gradle的一些技巧和遇到的问题

    会自动运行到BuildConfig里,可以判断不同的值去加载不同的接口环境 /** * 是否测试环境 */ public static boolean isTest() { return BuildConfig.isTestEnv; } ServiceInfoManager.getInstance().setEnv(IqbConfig.isTest ServiceInfoManager.Environment.TestEnv : ServiceInfoManager.Environment.PublicEnv); ​ BuildConfig.DEBUG 始终为 false BuildConfig.java 是编译时自动生成的,并且每个 Module 都会生成一份,以该 Module 的 packageName 为 BuildConfig.java 所以如果你的应用有多个 Module 就会有多个 BuildConfig.java 生成,编译时被依赖的 Module 默认会提供 Release 版给其他 Module 或工程使用,这就导致该 BuildConfig.DEBUG

    2.3K30发布于 2020-03-27
  • 来自专栏让技术飞会儿

    如何将 SDK 引入自有应用的教学

      // Finclip SDK 的key 在平台上获取的 BuildConfig.APP_SECRET //Finclip SDK 的secret 在平台上获取的 FinAppConfig.ENCRYPTION_TYPE_SM // 加密类型 BuildConfig.API_URL //如果不是私有化部署默认填写 https://mp.finogeeks.com 这个就行了 FinAppConfig config = new FinAppConfig.Builder() .setSdkKey(BuildConfig.APP_KEY) .setSdkSecret (BuildConfig.APP_SECRET) .setApiUrl(BuildConfig.API_URL) .setApiPrefix (BuildConfig.API_PREFIX) .setDebugMode(BuildConfig.DEBUG) .setEncryptionType

    81420编辑于 2022-02-21
  • 来自专栏Android先生

    Android各大手机品牌手机跳转到权限管理界面

    intent = new Intent(); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); intent.putExtra("packageName", BuildConfig.APPLICATION_ID intent = new Intent(); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); intent.putExtra("packageName", BuildConfig.APPLICATION_ID intent = new Intent(); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); intent.putExtra("packageName", BuildConfig.APPLICATION_ID android.intent.action.MAIN"); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); intent.putExtra("packageName", BuildConfig.APPLICATION_ID intent = new Intent(); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); intent.putExtra("packageName", BuildConfig.APPLICATION_ID

    2.7K10发布于 2018-08-07
  • 来自专栏技术小黑屋

    这可能是最好的 Android/Kotlin日志输出方法

    { if (BuildConfig.DEBUG) { Log.d("debugLog", message) } } private fun testDebugLog() { if (BuildConfig.DEBUG) { Log.d("debugMessage", args.joinToString()) } } private fun { if (BuildConfig.DEBUG) { Log.d("smartMessage", lazyMessage().toString()) } } private 5 6 7 8 9 10 private final void testSmartMessage() { int $i$f$smartMessage = false; if (BuildConfig.DEBUG String.valueOf(var4)); } } 之前的Lambda 由于采用了 inline 处理 会把smartMessage 提取到调用处testSmartMessage 上面的信息,都是确保了在BuildConfig.DEBUG

    2.6K20发布于 2020-01-22
  • 来自专栏程序员修炼之路

    Android 7.0相机适配的那些坑

    intent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); Uri uri = FileProvider.getUriForFile(getContext(), BuildConfig.APPLICATION_ID Android 7.0以上发起调用的Uri必须通过FileProvider来获取,也就是下面这句: Uri uri = FileProvider.getUriForFile(getContext(), BuildConfig.APPLICATION_ID 文件中配置的一致 第二个就比较坑了,如果是模块化开发,需要特别注意包名的一致 再来看看那句代码: Uri uri = FileProvider.getUriForFile(getContext(), BuildConfig.APPLICATION_ID + ".fileProvider", file); 坑就在BuildConfig.APPLICATION_ID这里,如果用BuildConfig来获取APPLICATION_ID,在模块化开发中就会出现不一致的情况 比如打开相机的模块是camera,我们应用的包名是com.my.app,那么BuildConfig.APPLICATION_ID的值就不一样了: camera模块:com.my.app.camera 我们

    86330发布于 2019-07-15
  • 来自专栏Android干货

    Android项目实战(三十九):Android集成Unity3D项目(图文详解)

    3、BuildConfig.class 文件冲突 Error:Execution failed for task ':ipark2:transformClassesWithJarMergingForDebug com.android.build.api.transform.TransformException: java.util.zip.ZipException: duplicate entry: com/xxxxx/xxxxx/xxxx/BuildConfig.class    这个就说你的  com/xxxxx/xxxxx/xxxx/ 目录下的BuildConfig.class 文件冲突了 。 执行命令之后 会发现目录下多了一个jar包解压后的文件,在该文件夹下按目录找到BuildConfig.class 文件, 删除     3、重新把处理后的文件夹压缩成jar包       jar cvf SensorSSS.jar com    注:SensorSSS 即重新生成的jar包的名字  , com即 要被压缩成jar包的文件夹(即原先jar包解压缩出来的文件并删除BuildConfig.class

    2K60发布于 2018-06-25
  • 来自专栏趣谈前端

    9012教你如何使用gulp4开发项目脚手架

    ; if(process.env.NODE_ENV === 'dev') { buildConfig = require('. /build/gulp.dev'); gulp.task('server', buildConfig.server); // 本地服务 } else { buildConfig /build/gulp.prod'); // gulp.task('md5', gulp.series(buildConfig.md5Css, buildConfig.md5Js)); gulp.task('clean', buildConfig.clean); // 清理目录 } gulp.task('html', buildConfig.html); // 打包html gulp.task('js', buildConfig.js); // 打包js gulp.task('css', buildConfig.css); //

    1.7K10发布于 2019-08-09
领券