构建Android studio版的CarSystemUI工程时因为包名一致导致BuildConfig问题

news2024/11/15 23:38:09

项目场景:

公司计划开发杰发AC8025-Android 12版本车载平台,前期预研需要构建Android studio版的CarSystemUI工程


问题描述

AAOS车载项目里面的CarSystemUI源码默认无Android studio版本,为了后期快速开发调试需要构建Android studio能直接编译出来apk的工程,构建的过程先不表总之巨麻烦,构建完的工程结构如下图:
Android studio能编过的CarSystemUI
构建是完成了,编出来debug版的apk没问题,但是我编release版的apk编译不过。studio编译报下面的故障:

Type com.android.systemui.BuildConfig is defined multiple times: D:\andy_cao\CarSystemUI\app\build\intermediates\project_dex_archive\release\out\com\android\systemui\BuildConfig.dex, D:\andy_cao\CarSystemUI\systemui\build\.transforms\a8853c444618b4986e274bb805eaaac9\transformed\release\com\android\systemui\BuildConfig.dex

这里跑个题:我为啥执着非要编出来release版的apk?
Debug 版本
Debug 是“调试”的意思,Debug 版本就是为调试而生的,编译器在生成 Debug 版本的程序时会加入调试辅助信息,并且很少会进行优化,程序还是“原汁原味”的。
你没听错,不是任何一个程序都可以调试的,程序中必须包含额外的辅助信息才能调试,否则调试器也无从下手。

Release 版本
Release 是“发行”的意思,Release 版本就是最终交给用户的程序,编译器会使尽浑身解数对它进行优化,以提高执行效率,虽然最终的运行结果仍然是我们期望的,但底层的执行流程可能已经改变了。
编译器还会尽量降低 Release 版本的体积,把没用的数据一律剔除,包括调试信息。
最终,Release 版本是一个小巧精悍、非常纯粹、为用户而生的程序。

总结
Debug 版本的存在是为了方便程序员开发和调试,性能和体积不是它的重点;Release 版本是最终交给用户的程序,性能和体积是需要重点优化的两个方面。

在开发过程中,我们一般使用 Debug 版本,只有等到开发完成,确认没有任何 Bug 之后,希望交给用户时再生成 Release 版本。


原因分析:

授人以鱼不如授人以渔

看is defined multiple times意思是BuildConfig被多次定义,但是你用is defined multiple times关键字去搜怎么都搜不到对应的博客,自己又是无数次的尝试无数次的修改始终不行。


解决方案:

后面跟一个前同事聊到此事,他给了个解决方案是在app包下面的build.gradle中曾加如下字段:

afterEvaluate {
    generateReleaseBuildConfig.enabled = false
    generateDebugBuildConfig.enabled = false
}

添加后就可以编译出release版的apk,大家往上看截图里面我选中的就是生成release版的apk

然后我用generateReleaseBuildConfig.enabled能搜到几篇对应解决办法的博客我贴到下面:
https://blog.csdn.net/why1happy/article/details/105765140
https://www.jianshu.com/p/21b4065e58a7

总结

吾日三省吾身,每天进步一点点

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1910643.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

JavaWeb__XML、http

目录 一 、XML1.1 常见配置文件类型1.1.1 properties配置文件1.1.2 xml配置文件 1.2 DOM4J进行XML解析1.2.1 DOM4J的使用步骤1.2.2 DOM4J的API介绍 二、 HTTP协议2.1 HTTP简介2.2 请求和响应报文2.2.1 报文的格式2.2.2 请求报文2.2.3 响应报文 一 、XML XML是EXtensible Markup…

使用Puppeteer进行数据抓取保存为JSON

Puppeteer简介 Puppeteer是由Google Chrome团队开发的一个Node库,它提供了一个高级API来控制Chrome或Chromium的无头版本。Puppeteer能够执行各种任务,包括页面导航、内容抓取、屏幕截图、PDF生成等。 主要特点 无头浏览器控制:无需打开浏…

HybridCLR + Addressable 热更新篇(一)

目录 前言一、HybridCLR 和 Addressable 是什么?1. HybridCLR2. Addressable 二、使用步骤1.HybridCLR导入2.HybridCLR配置3.Addressable导入4.Addressable配置 前言 随着移动互联网和游戏行业的快速发展,热更新技术变得越来越重要。热更新能够在不重新…

文华财经红绿多空趋势量化买卖点指标公式源码

LC:REF(CLOSE,1); RSI1:SMA(MAX(CLOSE-LC,0),13,1)/SMA(ABS(CLOSE-LC),13,1)*100; RSIF:90-RSI1,COLOR33DD33; A4:((C-LLV(L,33))/(HHV(H,33)-LLV(L,33)))*67; ABC22:LLV(LOW,10); ABC33:HHV(HIGH,25); 动力线:EMA((CLOSE-ABC22)/(ABC33-ABC22)*4,4); RSV:(C-LLV(L,9))/…

【Unity 实用技巧】为游戏截图添加自定义水印LOGO

1. 前言 大家好,我是Mark。在Unity开发中,屏幕截图功能是一项常用的功能,它常用于游戏分享而默认的截图往往缺乏辨识度。本文将介绍如何在Unity中实现带有自定义LOGO的屏幕截图,话不多说开搞~ 2. 最终效果 3. 示例代码 代码比较…

婴幼儿自闭症的六大警示前兆:家长需警惕的早期信号

婴幼儿自闭症是一种复杂的发育障碍,其早期症状往往较为微妙,但若能及早发现并干预,对孩子的成长至关重要。以下是婴幼儿自闭症的六个主要前兆: 首先,目光呆滞与反应迟钝。婴儿期,孩子应能对外界刺激如声音…

Java基础-组件及事件处理(中)

(创作不易,感谢有你,你的支持,就是我前行的最大动力,如果看完对你有帮助,请留下您的足迹) 目录 BorderLayout布局管理器 说明: 示例: FlowLayout布局管理器 说明: …

Vue3项目如何使用npm link本地测试组件库

一、组件库操作 1、在组件库项目中先运行npm run lib,其效果如下 2、在组件库项目中在运行npm link,其效果如下 会创建一个全局的软连接指向本地的组件库 二、Vue3项目使用 1、在项目中运行 npm link 组件名称(即:组件库packag…

Kettle常用参数配置

目录 一、时区二、时间戳三、tinyint类型转换 一、时区 Kettle链接mysql出现报错:Connection failed. Verify all connection parameters and confirm that the appropriate driver is installed. The server time zone value is unrecognized or represents more…

嵌入式单片机,两者有什么关联又有什么区别?

在开始前刚好我有一些资料,是我根据网友给的问题精心整理了一份「嵌入式的资料从专业入门到高级教程」, 点个关注在评论区回复“666”之后私信回复“666”,全部无偿共享给大家!!!使用单片机是嵌入式系统的…

HSG金属表面缺陷检测

HSG金属表面缺陷检测 1. 项目背景1.1 项目简述1.2 项目目标 2. 解决方案3. 数据集3.1 收集各种缺陷的图片3.2 利用有限图片创造更多可能3.3 分割图像3.4 打标签 4. 部分代码4.1 数据集划分4.2图像分割4.3 训练模型4.4 预测 5. 预测结果 1. 项目背景 1.1 项目简述 iPad HSG 的…

【运维】磁盘满了怎么办?如何快速找到占用空间的文件和腾出空间

机器用久了,很容易生成很多临时或者无用的文件,占用大量空间造成磁盘不够用。尤其是服务器,当磁盘不够用时,系统会出现莫名其妙的问题,数据库可能会造成数据损坏。此时快速定位可以删除的大文件并及时释放空间&#xf…

Linux内核网络性能问题的追踪(工具篇)

在现代计算环境中,网络性能对于系统的整体性能至关重要。网络瓶颈不仅会影响数据传输速度,还会影响应用程序的响应时间,最终影响用户体验。为了有效地解决网络性能问题,了解和使用各种追踪工具至关重要。另外一方面,造…

SQLServer用户们,你们摊上大事了!

最近一段时间,我们经常会收到了许多用户的咨询,问我们何时能纳管SQLServer?耐不住小伙伴们的猛烈催促及热切期待,本不想纳管SQLServer的研发团队也抓紧将这项需求提上日程。并在DBdoctor v3.2.2版本中成功实现了对SQLServer的纳管…

VS2019运行报错 应输入预处理器指令

根据错误提示,找到对应行,然后删除多余的#字符即可

小程序渗透测试的两种方法——burpsuite、yakit

首先呢主要是配置proxifier,找到小程序的流量,然后使用burpsuite或者yakit去抓包。 一、使用burpsuiteproxifier的抓包测试 1、先配置proxifier,开启http流量转发 勾选确定 2、配置burp对应代理端口,选择profile,点…

软件工具网站推荐

1.菜鸟工具 菜鸟工具 - 不止于工具菜鸟工具,为开发设计人员提供在线工具,网址导航,提供在线PHP、Python、 CSS、JS 调试,中文简繁体转换,进制转换等工具。致力于打造国内专业WEB开发工具,集成开发环境&…

手把手和你一起从0搭建一个vite+Vue3+element-plus的后台管理系统!

首选需要node环境。你可以参考:如何创建一个vue的新项目,用命令行的方式创建.下载node.js-CSDN博客 所需要的内容官网: https://vitejs.dev/ 安装 | Element Plus Vue Router | Vue.js 的官方路由 axios中文网|axios API 中文文档 | axio…

在国内允许交易伦敦金吗?有没有好的伦敦金交易策略

伦敦金,作为全球金融市场上的一种重要投资品种,以其独特的交易机制和价值稳定性吸引了无数投资者的目光。然而,对于国内投资者而言,是否可以合法参与伦敦金的交易,以及如何制定有效的交易策略,是他们普遍关…

主动算法交易!减持回购/套利/大单拆分/篮子交易/预埋单神器工具!

主动算法致力于服务机构投资者,为其提供以成交为目的的自动化交易执行。 在有限容量内,充分追求客户个性化需求,保证执行效率、降低冲击成本、减少人力成本、保护交易意图、 捕捉交易机会、 符合监管要求和获取交易环节的ALpha收益。 能够帮…