flavorDimensions和productFlavors——安卓gradle有了前两篇博客的铺垫,我们可以来分享下

需要事先说明的是,接下来所说的“意义”并非官方文档翻译,而是结合了小盆友自己的理解,会比较口语化。

flavorDimensions从单词字面理解知道是“风味维度”,是需要结合“产品风味(即productFlavors)”来一起使用的。

flavorDimensions的使用会定义出维度,供接下来的productFlavors使用。我们举个例子

android{ //省略其他参数 flavorDimensions('abi','version')}使用上面代码,则会定义出两个维度:version和abi。一个参数一个维度,我们把它形象化,就可以看成下面这样一张图。而他有什么作用,我们看下一小节。

如果三个参数就可以看成一个三维的空间坐标系,这里的坐标系只是一个形象化的体现。

productFlavors从字面了解是“产品风味”。他需要和一个风味维度对接,否则会报错。

接着我们上面的例子,使用productFlavors定义维度上的风味,使用dimension关联。

android{//其他参数 flavorDimensions('abi','version')//创建产品风味productFlavors{v1{//关联纬度dimension'version'}v2{dimension'version'}v3{dimension'version'}x86{dimension'abi'}armV7{dimension'abi'}}}通过上面这段代码,会形成下面这张图。在abi维度上关联了两个产品,即“armV7”和“x86”,在version的维度上关联了三个产品,即“v1”、“v2”和“v3”。

而这些维度的交织就会形成最终的风味,即我们上面所标出来的“armV7V1”、“armV7V2”、“armV7V3”、“x86V1”、“x86V2”、“x86V3”。

我们可以根据不同的风味,打出不同的apk包,便可以实现一套核心代码打出多个有些差异的包。

productFlavors下的每个项最终形式是productFlavor,即我们上面说所的“v1”,“v2”.....

我们知道,每个配置最终会被映射为一个类,或是一个属性、或一个方法。productFlavor也不例外,他会被映射为com.android.build.gradle.internal.dsl.ProductFlavor,继承结构如下

我们先来一个约定,避免使用的代码过于冗长。

我们配置差异化的logo和app名字,则可以在gradle中使用下面这段

android{flavorDimensions('abi','version')productFlavors{ //省略其他的风味配置 x86{dimension'abi' //配置不同的包名,达到能两个风味能共存applicationId'com.zinc.bear'manifestPlaceholders=[logo:"@drawable/logo_bear",appName:"bear",] //配置签名signingConfigsigningConfigs.jiangpengyong}armV7{dimension'abi' //配置不同的包名,达到能两个风味能共存applicationId'com.zinc.shark'manifestPlaceholders=[logo:"@drawable/logo_shark",appName:"shark",] //配置签名signingConfigsigningConfigs.xiaopenyou}}}logo的资源图

然后在AndroidManifest.xml中使用,使用${你配置的变量名}

举个例子:我们有一个x86的风味在引入一个library,而library中存在同样的风味维度,但是没有相同产品风味,这样会导致没法匹配,此时,就需要用这个参数。代码如下:

app下的build.gradle

android{//其他配置 flavorDimensions('abi')//创建产品风味productFlavors{x86{dimension'abi'matchingFallbacks=['pro']}}dependencies{ //引入flavor_x86libraryx86Implementationproject(':flavor_x86')}flavor_x86下的build.gradle

zincPower{multiDexKeepFilefile('multidex-config.txt')...}multidex-config.txt中的书写则如下,每一个文件则为一行

com/example/MyClass.classcom/example/TestClass.class2.11multiDexKeepProguardzincPower{multiDexKeepFilefile('multidex-config.pro')...}multidex-config.pro中的写法如下

(1)我们需要先在项目根目录下创建一个keystore.properties文件,在文件中写入对应的配置,如图所示(2)在应用级的build.gradle中使用如下代码

Stringname=BuildConfig.name;intage=BuildConfig.age;

值的一提的是,我们设置String类型的参数时,需要加上""双引号(如例子中的name属性)。切记!

zincPower{consumerProguardFile('consumer-rules.pro')}3.3consumerProguardFiles(proguardFiles)zincPower{consumerProguardFile('consumer-rules.pro','zincPower-rules.pro',.....)}3.4maxSdkVersion(maxSdkVersion)zincPower{//最高支持28版本minSdkVersion28}3.5minSdkVersion(minSdkVersion)zincPower{//最低支持19版本minSdkVersion19}3.6missingDimensionStrategy(dimension,requestedValue)我们的项目结构如下在zinclibrary的build.gradle中编写了如下渠道配置

//创建风味维度flavorDimensions('zinc','handsome')//创建产品风味productFlavors{minApi13{dimension'zinc'}minApi23{dimension'zinc'}x86{dimension'handsome'}arm64{dimension'handsome'}}此时如果直接在app的build.gradle中添加依赖,同步时便会出错

dependencies{...忽略其他依赖implementationproject(":zinclibrary")}所以我们需要在app的build.gradle中使用这个参数进行忽略library中带来的维度和风味,即使用如下代码

THE END
1.JAVA计算机毕业设计书籍点评网站(附源码数据库)JAVA + mybatis + Maven + Vue 等等组成,B/S模式 + Maven管理等等。 环境需要 1.运行环境:最好是java jdk 1.8,我们在这个平台上运行的。其他版本理论上也可以。 2.IDE环境:IDEA,Eclipse,Myeclipse都可以。推荐IDEA; 3.tomcat环境:Tomcat 7.x,8.x,9.x版本均可 https://blog.csdn.net/zhuoyuebysj/article/details/144426861
2.Java优势在哪里体现编程语言Java是一种广泛应用的编程语言,其优势主要体现在以下几个方面: 跨平台性 Java的最大优势在于其跨平台性,即“一次编写,到处运行”的理念。Java程序编译成字节码后,这些字节码便能在任何安装了Java虚拟机(JVM)的设备上运行,从而大大简化了开发过程并提高了代码的可移植性。 https://www.yisu.com/jc/930741.html
3.javabrary最佳评论javalibrary最高评javabrary最佳评论 javalibrary最高评 原作者:Henn Idan 一年的时间就这么匆匆过去了,就好像像我们昨天才刚刚从GitHub上分析了2016年的Top Java类库一样。今年,我们在数据检索方面采用了Google的BigQuery,来得到更精确的结果。 译者注:BigQuery 是 Google 专门面向数据分析需求设计的一种全面托管的 PB 级低成本企业https://blog.51cto.com/u_16099221/6821134
4.JavaClassLibrary短评读过 在读 想读 我来写短评 热门 还没人写过短评呢 << 首页 < 前页 后页> > Java Class Library 作者: Miller, Frederic P.; Vandome, Agnes F.; McBrewster, John 页数: 68 isbn: 6131626022 书名: Java Class Library? 2005-2024 douban.com, all rights reserved 北京豆网科技有限公司 https://book.douban.com/subject/19157236/comments
5.嘘偷偷告诉你JavaLibrary最新版本号的藏身之处嘿嘿,是不是又在满世界找Java Library的最新版本号?别急,今儿个哥儿们就带你探探这神秘的地界。 “版本号,你躲哪儿去了?” 话说这版本号啊,它就跟那顽皮的孩子似的,最爱跟你玩捉迷藏。你说你找它容易吗?它偏不,非得让你满头大汗、焦急万分。 http://m.omtfs.com/fszx/4176041c93.html
6.javalibrary为了这个她一个月学习了42种编程语言:Ada、汇编、BASIC、C、C?、C++、COBOL、CSS、D、FORTH、FORTRAN、Go、Haskell、HTML、Java、JavaScript、Julia、JSON、Kotlin、ld、LISP、Lua 全文 42 评论 55 蚁工厂 11-15 12:41 来自 微博网页版 SQL Style Guide网页链接小册子,为SQL代码编写提供一套统一的规范https://m.weibo.cn/search?containerid=100103&q=javalibrary
7.天津教育最好的三个区天津哪个区适合居住教育又好?·帕克的经典1984之我要变 彗星社2024年泡面番 蘑菇视频红色logo纯黑色背景 JAVAlibrary影片类别 5g影响5g天天绿色 undefined blackpinkmv高清图片 47417大但人文艺术作品 樱花动漫immionne官网无暗牧 荧的惩罚游戏v1.0汉化版优势 2对1初次体检3星辰 胡桃给旅行者特殊的奖励视频 桥矿影视超棒第24集 班长用她的玉足白http://www.ericsson365.com/article.php/www.ericsson365.com/article.php/n918-77.xhtml
8.GitHubkylingood/GitHubChineseTopLuckSiege/PictureSelector Picture Selector Library for Android or 图片选择器 7.7k Java 12/07 127daniulive/SmarterStreaming 国内外为数不多致力于极致体验的超强全自研跨平台(windows/android/iOS)流媒体内核,通过模块化自由组合,支持实时RTMP推流、RTSP推流、RTMP播放器、RTSP播放器、录像、多路流媒体转发、音https://github.com/kylingood/GitHub-Chinese-Top-Charts
9.C++注册码获取方法(HowtogetC++registrationcode)21xrx.com总而言之,获得 C++ 注册码的方法其实是很简单的。只需要购买许可证并按照它的要求进行激活即可。如果你是一位学生或教育工作者,记得询问你所属学校的 C++ 许可证相关政策,你可以更加高效的获得免费或廉价的 C++ 许可证。 上一篇: idea打包java可执行jar包 下一篇: C++ 如何调用 sin 函数 评论区 发表相似https://21xrx.com/Articles/read_article/133474
10.m.prurl.cn/kainiu/37108741.htmJAVAlibrary最受欢迎的网站 情窦初开的少女怕他来又怕他不来 风车动漫(p)-专注动漫的门户网站 185和158进不去怎么办 99热九九这里只有精品10 欧洲尺码日本尺码专线不卡顿 Adobe Acrobat手机版 美妇岳妇的肉泬目录 欧美疯狂性受XXXXX羞涩Av 沦为全班便器的班长男男小说 贾樟柯《风流一代》电影 和http://m.prurl.cn/kainiu/37108741.htm
11.编写AndroidLibrary的最佳实践1加上之后我们可以编译一次 aar,打开看一下,会发现里面多了一个proguard.txt文件,一旦你的库被依赖,Gradle 会把这个规则与app模块的Proguard 配置文件合并后一起运行混淆,这样一来引用你 library 的人就再也不用担心混淆配置的问题了,因为你已经完全帮他做好。 https://xie.infoq.cn/article/ab9277d9cad84de8c75db52d7
12.javlibrary最新地址,JavLibrary最新地址,探索与体验随着技术的不断进步和更新,Java开发者的需求也在日益增长,作为Java开发者的知识宝库,JavLibrary提供了丰富的资源和信息,帮助开发者提升技能、了解最新趋势和最佳实践,本文将介绍JavLibrary的最新地址,并探索其提供的各种功能和资源。 JavLibrary的新地址 让我们从JavLibrary的新地址开始,随着网站的发展和升级,JavLibrary已https://www.yndeshang.com/post/699.html
13.最佳教程第123页只需10分钟即可在Deep Java Library中使用Spark进行深度学习 - Qing Lan 20-06-12380410K Apache Spark是一种广泛使用的数据处理技术,并且被机器学习用户大量使用。Spark可用于对产品进行分类,预测需求并个性化建议。尽管Spark支持多种编程语言,但首选的Spark SDK是为S. https://www.jdon.com/threadDigSortedList/3660
14.GRADLE构建最佳实践构建初始化的很多工作是关于java虚拟机的启动,加载虚拟机环境,加载class文件等,如果这些动作交给一个单独的后台进程去做,那么,第一次初始化之后的修改代码再构建是不是可以节省很多时间呢?答案是肯定的,通过在gradle.properties加入这样一句来开启,如果想让修改全局所有项目都生效,那么修改这个文件~/.gradle/gradle.propehttps://www.jianshu.com/p/c12f8e70d452
15.最佳Android应用程序开发工具(IDE)Eclipse Foundation公司开发的eclipse是一种免费的开源IDE,用于以Java和其他编程语言开发应用程序。 Eclipse是仅次于用于Android应用程序开发的Android Studio的第二大最受欢迎的IDE。 Eclipse Android具有广泛的社区支持,并且众多插件和配置的可用性使在Eclipse IDE中的开发更加容易。 https://www.isolves.com/it/cxkf/ydd/Android/2020-08-18/28743.html
16.1Oracle最佳安全配置.pdfOracle 最佳安全配置 - 1 - ? 2020 安华金和 ■ 版权声明 本文中出现的任何文字叙述、文档格式、插图、照片、方法、过程等内容,除另有特别注明,版权均属安 华金和所有,受到有关产权及版权法保护。任何个人、机构未经安华金和的书面授权许可,不得以任何方 式复制或引用本文的任何片断。 目录 ORACLE 最佳安全配置https://max.book118.com/html/2021/1201/7113010001004055.shtm
17.美团点评对于网站性能优化的经验总结网站优化网站运营因此有必要对案例做一些简化,确保相关取值范围得到满足。基于以上以及其他原因,作者所给出的解决方案只是可行性方案,并不保证其是所碰到问题的最佳解决方案。 案例涉及的所有项目都是基于Java语言开发的,严格地讲,所有模式适用的场景是基于Java语言搭建的服务。从另外一方面讲,Java和C++的主要区别在于垃圾回收机制,所以,https://www.jb51.net/yunying/443251.html
18.KubeSphere最佳实战:59张高清大图,带你实战入门KubeSphereDev2024 年云原生运维实战文档 99 篇原创计划第 047 篇|KubeSphere 最佳实战「2024」系列第 019 篇 你好,欢迎来到运维有术。 KubeSphere 基于Jenkins的DevOps系统是专为Kubernetes中的 CI/CD 工作流设计的,它提供了一站式的解决方案,帮助开发和运维团队用非常简单的方式构建、测试和发布应用到 Kubernetes。它还具有插件https://cloud.tencent.com.cn/developer/article/2444454
19.TesseractNativelibrary(linux-x86-64/libtesseract.so)notfoundinresource path([jar:file:/blog-server.jar!/BOOT-INF/classes!/, java.lang.UnsatisfiedLinkError:Errorloading shared library liblept.so.5:Nosuch fileordirectory(neededby/root/.cache/JNA/temp/jna4202543007498402592.tmp) http://masikkk.com/article/Tesseract/
20.如何实现直播评论嘲中顶部渐变遮罩效果方舟UI框架(ArkUI)synchronized在java中可以修饰方法,从而简单地实现函数的同步调用。在系统ets开发中,如何简单实现该功能 ArkTS类的方法是否支持重载 如何将类Java语言的线程模型(内存共享)的实现方式转换成在ArkTS的线程模型下(内存隔离)的实现方式 以libstd为例,C++的标准库放在哪里了,有没有打到hap包中 如何开启AOT编译模式https://developer.huawei.com/consumer/cn/doc/harmonyos-faqs-V5/faqs-arkui-343-V5
21.最佳46款免费软件(同步精译版)善用佳软[2] http://www.javacoolsoftware.com/spywareblaster.html 免费软件,任意 Windows 版本,2.5MB[3] http://www.javacoolsoftware.com/spywareguard.html 免费软件,任意 Windows 版本,913KB 5 最佳免费防火墙 更新:2008-02-10 译者:xbeta 从没有哪类软件,给普通用户在安装和每天的使用中带来如此多不安,甚至不便https://www.newsmth.net/bbsanc.php?path=/groups/comp.faq/NewSoftware/SoftIntro/M.1209343283.s0&ap=126060
22.javlibrary最新地址,JavLibrary最新地址及其资源深度解析1、官方文档与教程:JavLibrary提供了丰富的官方文档和教程,涵盖了Java编程的各个方面,开发者可以通过查阅文档和教程,了解Java最新特性、技术趋势以及最佳实践。 2、工具和插件:JavLibrary为开发者提供了众多实用的工具和插件,如代码编辑器、调试工具、集成开发环境(IDE)插件等,这些工具和插件有助于提高开发者的编程效率https://jzshjs.cn/post/710.html