pbootcms网站模板|日韩1区2区|织梦模板||网站源码|日韩1区2区|jquery建站特效-html5模板网

為什么構(gòu)建類型與產(chǎn)品風(fēng)味不同?

Why are build types distinct from product flavors?(為什么構(gòu)建類型與產(chǎn)品風(fēng)味不同?)
本文介紹了為什么構(gòu)建類型與產(chǎn)品風(fēng)味不同?的處理方法,對(duì)大家解決問題具有一定的參考價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)吧!

問題描述

前言:這不是關(guān)于如何在 Android 應(yīng)用中使用構(gòu)建類型和產(chǎn)品風(fēng)格的問題.我了解所涉及的基本概念.這個(gè)問題更多是關(guān)于嘗試了解應(yīng)該在構(gòu)建類型中指定哪些配置,應(yīng)該在產(chǎn)品風(fēng)格中指定哪些配置,以及是否真的需要任何區(qū)別.

本周,我一直在學(xué)習(xí)有關(guān) Android 應(yīng)用的 gradle 配置的更多信息.我最初認(rèn)為我對(duì)構(gòu)建類型和產(chǎn)品風(fēng)格有很好的處理,但我越深入文檔,我就越意識(shí)到兩者之間的區(qū)別對(duì)我來(lái)說根本不清楚.

This week, I've been learning more about gradle configuration for Android apps. I initially thought I had a good handle on build types vs product flavors, but the deeper I got into the documentation the more I realized the distinction between the two was not clear to me at all.

由于存在明確定義的層次結(jié)構(gòu)(在某種意義上,構(gòu)建類型中指定的屬性優(yōu)先于產(chǎn)品風(fēng)格中指定的屬性),我不明白為什么需要區(qū)分構(gòu)建類型和產(chǎn)品風(fēng)格全部.將所有屬性和方法合并到產(chǎn)品風(fēng)味 DSL 對(duì)象中,然后將構(gòu)建類型視為(默認(rèn))風(fēng)味維度不是更好嗎?

Since there is a well-defined hierarchy (in the sense that properties specified in build types take precedence over those specified in product flavors), I don't understand why there is a need to distinguish between build types and product flavors at all. Would it not be better to merge all properties and methods into the product flavor DSL object, and then just treat build type as a (default) flavor dimension?

一些導(dǎo)致我困惑的具體例子:

Some concrete examples that led to my confusion:

  • signingConfig 屬性可以在構(gòu)建類型和產(chǎn)品風(fēng)格中設(shè)置...但是 minifyEnabled(并且,我假設(shè),shr??inkResources?) 只能在構(gòu)建類型中配置.

  • The signingConfig property can be set in both build types and product flavors... but minifyEnabled (and, I assume, shrinkResources?) can only be configured in build types.

applicationId 只能在產(chǎn)品風(fēng)味中指定...而 applicationIdSuffix 只能在構(gòu)建類型中指定!?

applicationId can only be specified in product flavors... and applicationIdSuffix can only be specified in build types!?

實(shí)際問題:

鑒于上述示例:構(gòu)建類型與產(chǎn)品風(fēng)格的角色之間是否有明顯區(qū)別?

Given the above examples: is there a clear distinction between the roles of build types vs product flavors?

如果是這樣,最好的理解方法是什么?

If so, what is the best way to understand it?

如果沒有,是否計(jì)劃最終將構(gòu)建類型和產(chǎn)品風(fēng)格合并到一個(gè)可配置的 DSL 對(duì)象中?

If not, is the plan to eventually merge build types and product flavors into a single configurable DSL object?

推薦答案

擴(kuò)展 @CommonsWare 在評(píng)論中所說的內(nèi)容,基本思想是構(gòu)建類型適用于功能上沒有不同的應(yīng)用程序的不同構(gòu)建——如果你有你的應(yīng)用程序的調(diào)試和發(fā)布版本,它們是同一個(gè)應(yīng)用程序,但一個(gè)包含調(diào)試代碼,可能更多的日志記錄等,另一個(gè)經(jīng)過簡(jiǎn)化和優(yōu)化,可能通過 ProGuard 混淆.使用風(fēng)味,目的是應(yīng)用程序在某些方面明顯不同.最明顯的例子是您的應(yīng)用的免費(fèi)版本和付費(fèi)版本,但開發(fā)人員也可能會(huì)根據(jù)分發(fā)位置(這可能會(huì)影響應(yīng)用內(nèi)結(jié)算 API 的使用)進(jìn)行區(qū)分.

Expanding on what @CommonsWare said in the comments, the basic idea is that build types are for different builds of your application that aren't functionally different -- if you have a debug and release version of your app, they're the same app, but one contains debugging code, maybe more logging, etc., and the other is streamlined and optimized and possibly obfuscated via ProGuard. With flavors, the intent is that the app is notably different in some way. The clearest example would be a free vs. a paid version of your app, but developers may also differentiate based on where it's being distributed (which could affect in-app billing API use).

有些開發(fā)人員為不同的客戶制作了許多不同版本的類似應(yīng)用程序——例如,一個(gè)簡(jiǎn)單的應(yīng)用程序在網(wǎng)絡(luò)視圖中打開網(wǎng)頁(yè),每個(gè)版本都有不同的 URL 和品牌——這是對(duì)風(fēng)味的一種很好的利用.

There are developers that make many, many different versions of a similar app for different customers -- an example might be a simple app that opens up a web page in a web view, with different URLs and branding for each version -- this is a good use of flavors.

重申一下,如果它是相同的應(yīng)用程序",請(qǐng)取模一些對(duì)最終用戶并不重要的差異,特別是如果除一個(gè)之外的所有變體都用于您自己的測(cè)試和開發(fā)用途并且只有一個(gè)變體將部署到最終用戶,那么它是構(gòu)建類型的良好候選者.如果它是一個(gè)不同的"應(yīng)用程序并且將向用戶部署多個(gè)變體,那么它可能是產(chǎn)品風(fēng)格的候選者.

To reiterate, if it's "the same application", modulo some differences that aren't important to the end user, and especially if all of the variants except for one are for your own testing and development use and only one variant will be deployed to end users, then it's a good candidate for build types. If it's "a different" application and multiple variants would be deployed to users, then perhaps it's a candidate for a product flavor.

您已經(jīng)看到構(gòu)建類型和風(fēng)格之間存在一些功能差異,其中一種支持某些選項(xiàng),而另一種則不支持.但即使它們相似,概念也不同,并且沒有將它們合并在一起的計(jì)劃.

You've already seen that there are some functionality differences between build types and flavors, in that some options are supported for one but not the other. But the concepts are different even though they're similar, and there's no plan to merge them together.

這篇關(guān)于為什么構(gòu)建類型與產(chǎn)品風(fēng)味不同?的文章就介紹到這了,希望我們推薦的答案對(duì)大家有所幫助,也希望大家多多支持html5模板網(wǎng)!

【網(wǎng)站聲明】本站部分內(nèi)容來(lái)源于互聯(lián)網(wǎng),旨在幫助大家更快的解決問題,如果有圖片或者內(nèi)容侵犯了您的權(quán)益,請(qǐng)聯(lián)系我們刪除處理,感謝您的支持!

相關(guān)文檔推薦

IncompatibleClassChangeError after updating to Android Build Tools 25.1.6 GCM / FCM(更新到 Android Build Tools 25.1.6 GCM/FCM 后出現(xiàn) IncompatibleClassChangeError)
How to get current flavor in gradle(如何在 gradle 中獲取當(dāng)前風(fēng)味)
How to fix quot;unexpected element lt;queriesgt; found in lt;manifestgt;quot; error?(如何修復(fù)“意外元素lt;查詢gt;在“清單中找到錯(cuò)誤?)
Multi flavor app based on multi flavor library in Android Gradle(基于 Android Gradle 中多風(fēng)味庫(kù)的多風(fēng)味應(yīng)用)
Android dependency has different version for the compile and runtime(Android 依賴在編譯和運(yùn)行時(shí)有不同的版本)
Transitive dependencies for local aar library(本地 aar 庫(kù)的傳遞依賴)
主站蜘蛛池模板: 高铝矾土熟料_细粉_骨料_消失模_铸造用铝矾土_铝酸钙粉—嵩峰厂家 | 森旺-A级防火板_石英纤维板_不燃抗菌板装饰板_医疗板 | 吨袋包装机|吨包秤|吨包机|集装袋包装机-烟台华恩科技 | 组织研磨机-高通量组织研磨仪-实验室多样品组织研磨机-东方天净 传递窗_超净|洁净工作台_高效过滤器-传递窗厂家广州梓净公司 | 恒压供水控制柜|无负压|一体化泵站控制柜|PLC远程调试|MCGS触摸屏|自动控制方案-联致自控设备 | 上海办公室装修公司_办公室设计_直营办公装修-羚志悦装 | 雾度仪_雾度计_透光率雾度仪价格-三恩时(3nh)光电雾度仪厂家 | 电加热导热油炉-空气加热器-导热油加热器-翅片电加热管-科安达机械 | 电脑刺绣_绣花厂家_绣花章仔_织唛厂家-[源欣刺绣]潮牌刺绣打版定制绣花加工厂家 | 冷却塔改造厂家_不锈钢冷却塔_玻璃钢冷却塔改造维修-广东特菱节能空调设备有限公司 | 环保袋,无纺布袋,无纺布打孔袋,保温袋,环保袋定制,环保袋厂家,环雅包装-十七年环保袋定制厂家 | 冲锋衣滑雪服厂家-冲锋衣定制工厂-滑雪服加工厂-广东睿牛户外(S-GERT) | 焊缝跟踪系统_激光位移传感器_激光焊缝跟踪传感器-创想智控 | 润东方环保空调,冷风机,厂房车间降温设备-20年深圳环保空调生产厂家 | 屏蔽泵厂家,化工屏蔽泵_维修-淄博泵业 | 纯水设备_苏州皙全超纯水设备水处理设备生产厂家 | 货车视频监控,油管家,货车油管家-淄博世纪锐行电子科技 | 国产离子色谱仪,红外分光测油仪,自动烟尘烟气测试仪-青岛埃仑通用科技有限公司 | 传动滚筒_厂家-淄博海恒机械制造厂| 合肥升降机-合肥升降货梯-安徽升降平台「厂家直销」-安徽鼎升自动化科技有限公司 | 优秀的临床医学知识库,临床知识库,医疗知识库,满足电子病历四级要求,免费试用 | 吉林污水处理公司,长春工业污水处理设备,净水设备-长春易洁环保科技有限公司 | 橡胶膜片,夹布膜片,橡胶隔膜密封,泵阀设备密封膜片-衡水汉丰橡塑科技公司网站 | 讲师宝经纪-专业培训机构师资供应商_培训机构找讲师、培训师、讲师经纪就上讲师宝经纪 | 光伏支架成型设备-光伏钢边框设备-光伏设备厂家 | 蓝牙音频分析仪-多功能-四通道-八通道音频分析仪-东莞市奥普新音频技术有限公司 | 蒸压釜-陶粒板隔墙板蒸压釜-山东鑫泰鑫智能装备有限公司 | 粉末冶金注射成型厂家|MIM厂家|粉末冶金齿轮|MIM零件-深圳市新泰兴精密科技 | 升降炉_真空气氛炉_管式电阻炉厂家-山东中辰电炉有限公司 | 南京种植牙医院【官方挂号】_南京治疗种植牙医院那个好_南京看种植牙哪里好_南京茀莱堡口腔医院 尼龙PA610树脂,尼龙PA612树脂,尼龙PA1010树脂,透明尼龙-谷骐科技【官网】 | 质检报告_CE认证_FCC认证_SRRC认证_PSE认证_第三方检测机构-深圳市环测威检测技术有限公司 | (中山|佛山|江门)环氧地坪漆,停车场地板漆,车库地板漆,聚氨酯地板漆-中山永旺地坪漆厂家 | 洁净实验室工程-成都手术室净化-无尘车间装修-四川华锐净化公司-洁净室专业厂家 | 地埋式垃圾站厂家【佳星环保】小区压缩垃圾中转站转运站 | 滚塑PE壳体-PE塑料浮球-警示PE浮筒-宁波君益塑业有限公司 | TwistDx恒温扩增-RAA等温-Jackson抗体-默瑞(上海)生物科技有限公司 | 不锈钢散热器,冷却翅片管散热器厂家-无锡市烨晟化工装备科技有限公司 | 电动不锈钢套筒阀-球面偏置气动钟阀-三通换向阀止回阀-永嘉鸿宇阀门有限公司 | 无缝钢管-聊城无缝钢管-小口径无缝钢管-大口径无缝钢管 - 聊城宽达钢管有限公司 | 【连江县榕彩涂料有限公司】官方网站| 水厂污泥地磅|污泥处理地磅厂家|地磅无人值守称重系统升级改造|地磅自动称重系统维修-河南成辉电子科技有限公司 |