1. 程式人生 > >Android Studio打包全攻略----Gradle-Build Variants構建定製版App

Android Studio打包全攻略----Gradle-Build Variants構建定製版App

上一篇文章 Android Studio打包全攻略—從入門到精通限於篇幅Build Variants的作用分析得還不夠,這篇文章主要探討如何構建特別定製版App。
你肯定看到過這樣的App,類似於:打豆豆小米特別定製版、XXX魅族首發版。
這些App絕大部分介面樣式、功能實現和普通版本都差不多,不過只是多了一些墜飾,比如

  1. 修改了App名稱,打豆豆變成了打豆豆小米定製版
  2. 修改了App的圖示,加上了渠道商或者廠商的一些標識到啟動圖示上
  3. 修改啟動頁面
  4. 免廣告
    本文就主要圍繞著這幾個問題,就如何優雅的生成定製App來討論

為什麼要通過Build Variants構建

為什麼要使用這種方式來打包?
要是換做以前,拿到一個這種需求,我很可能的反應是去穩定版本上checkout

一個分支出來,然後改改App名稱,改改啟動圖示、啟動頁面,去除廣告邏輯部分。
這樣當然可以解決當前問題。但是這樣做有幾個弊端

  1. 程式碼維護麻煩
    checkout出來一份程式碼,相當於以後需要維護兩個App,兩份程式碼。兩個版本咱們可能還不覺得有啥,但是這才一個版本定製,要是以後我們的打豆豆App,不止是要定製小米還要定製360、定製魅族、定製三星。還要區分使用者群體,推出有廣告版本,無廣告版本。推出穩定版和功能升級的Pro版本—超級打豆豆。如果每個版本都拿一個分支來做,需要維護多少個分支?要是版本升級一次,是不是每個分支都要升級?哪得需要多大的工作量。

  2. 測試負擔加重
    同樣,並不是基於一套程式碼實現的App,測試的時候不可避免的產生很多重複測試。

  3. 配合產品運營效率低下
    因為,這種方式造成開發緩慢、維護麻煩、測試費時造成產品跟不上節拍,效率低下。

正題—怎麼建立

生成定製版App名稱

  1. 首先,如果換作從前,不考慮Gradle我們修改App名稱是怎麼做的?
    找到AndroidManifest.xml檔案,application標籤裡面的android:label標籤儲存的是App名稱
    這裡寫圖片描述
    看到是通過@string/app_name 也就是values資料夾下面的strings.xml檔案裡面修改
    這裡寫圖片描述
    看到這裡,結合上一篇學到的知識,我們大概已經知道該怎麼做了。
    a. productFlavors裡面新建一個渠道號xiaomi {}
    這裡寫圖片描述
    b.然後在src目錄、也就是main目錄的同級目錄裡面新建一個叫xiaomi
    的目錄,然後把values/strings.xml拷貝到目錄下面,然後修改名稱為我們希望顯示的名稱。
    這裡寫圖片描述
    到這裡App名稱就改好了

生成定製版圖示

有了修改App名稱的經驗,修改圖示也就輕車熟路了,只是儲存圖示的資料夾,會有hdpi、xhdpi、xxhdpi等等好幾個目錄,需要一起拷貝過去,然後分別替換裡面的圖示為我們的圖示
這裡寫圖片描述

修改啟動頁

和修改圖示一樣
這裡寫圖片描述
這個圖片有點抽象 不要多想,畢竟是藝術

生成廣告版和免廣告版

這裡寫圖片描述
使用:
這裡寫圖片描述
大功告成,我們來試試效果,為了讓我們的定製App和原來的App同時安裝上手機,我們修改applicationId

  xiaomi { applicationId 'com.xiaomi.makeapp' }
  • 1
save_snippets.png
  • 1

對比著原版,看看效果


這裡寫圖片描述

productFlavors(渠道),buildTypes(Debug&Release),原版優先順序

現在我們已經清楚了,如productFlavors(渠道)裡面的檔案會覆蓋原來App的檔案。
如果我現在新建一個叫debug的資料夾,對應

buildTypes {
        debug {
            minifyEnabled false
            debuggable true
        }
  • 1
  • 2
  • 3
  • 4
  • 5
save_snippets.png
  • 1
  • 2
  • 3
  • 4
  • 5

,如果對Debug裡面也新增一些啟動圖示、App名稱啥的看看會是什麼效果
這裡寫圖片描述,還是執行Build Variant的xiaomiDebug
這裡寫圖片描述
變成了Debug裡面的設定的資訊
根據

productFlavors > main(預設)
buildTypes > productFlavors
  • 1
  • 2
save_snippets_01.png
  • 1
  • 2

我們可以得出規律,為了方便閱讀就表達為優先順序是:

Release&Debug > 渠道版本定製 > 預設設定
  • 1
save_snippets_01.png
  • 1

也就是說,高的會覆蓋低的設定

AB Test

什麼是AB Test

有這樣的場景:產品經理遇到困惑,對於一個頁面有兩個方案方案A和方案B,都覺得不錯,不知道應該選哪一個。
解決辦法:方案A和方案B都放到線上,統計使用者再每個方案的駐留時長,有效點選,訂單轉換等等有效資料,然後來計算兩個方案的效率,最後取效率高的。
當然,也可以不使用Build Variants,把兩個方案都寫到一個頁面,然後訪問伺服器,伺服器返指定採用那個方案的方式來實現。

相關推薦

Android Studio打包----Gradle-Build Variants構建製版App

上一篇文章 Android Studio打包全攻略—從入門到精通限於篇幅Build Variants的作用分析得還不夠,這篇文章主要探討如何構建特別定製版App。 你肯定看到過這樣的App,類似於:打豆豆小米特別定製版、XXX魅族首發版。 這些App絕大部分介面樣式、功能實現和普通版本都差不多,不過只是

AndroidStudio打包---Gradle-Build Variants構建製版App

上一篇文章 Android Studio打包全攻略—從入門到精通限於篇幅Build Variants的作用分析得還不夠,這篇文章主要探討如何構建特別定製版App。 你肯定看到過這樣的App,類似於:打豆豆小米特別定製版、XXX魅族首發版。 這些App絕大部分

【轉】Android Studio打包---從入門到精通

UC store 類型 安裝文件 public alt url tool 描述 原文地址:http://blog.csdn.net/zivensonice/article/details/51672846 初出茅廬 手動打包 怎麽手動打包 項目寫完了,現在需要把應用上傳

Android Studio打包---從入門到精通

初出茅廬 手動打包 怎麼手動打包 專案寫完了,現在需要把應用上傳到市場,問題出現—怎麼把程式碼變成.apk(Android的可安裝檔案)。 1. 建立簽名檔案 2. 填寫好籤名引數 3. 生成APK 注意:簽名的密碼和密匙的密

android studio 不能生成apk:Gradle build finished with 1 error(s) in 5 sec Unexpected error Local path do

大概原因是sdk版本過高無法自動生成apk(ps:無法生成還弄那麼高版本也是醉了); 解決辦法是:先將android studio 關閉,找一個低版本的sdk,將sdk中的tools檔案複製;                         將android stu

VirtualBox + Android-x86 配置

 為什麼要執行Android-x86呢,因為Google提供的Android模擬器實在是太卡了,想必用過它的都深有體會,而虛擬機器下的Android-x86執行起來飛快,就如同真機操作一樣。下面介紹一下Windows下VirtualBox + Android-x86配置的一

Android Studio依賴包aar使用

如有不妥的地方歡迎Gradle大神批評指正。 今天包含以下幾點: - aar 檔案簡介 - 生成方法 - 向工程中新增依賴的方法(即讓Android Studio認出aar的方法) - 呼叫方法 aar 檔案簡介 首先,講講aar: 相信

基於Android Studio的記憶體洩漏檢測與解決

自從Google在2013年釋出了Android Studio後,Android Studio憑藉著自己良好的記憶體優化,酷炫的UI主題,強大的自動補全提示以及Gradle的編譯支援正逐步取代Eclipse,成為主流的Android開發IDE。Android Studio在

android屏幕適配的

屏幕分辨率 縮放 img 關系 我們 http 分辨 tro pix 一. 核心概念與單位詳解 1. 什麽是屏幕尺寸、屏幕分辨率、屏幕像素密度? 屏幕分辨率越大,手機越清晰 2. 什麽是dp、dip、dpi、sp、px?之間的關系是什麽? dip:Density

Android Studio打包以及Gradle配置構建

otto sign rac color conf wmf git var png 本文轉載 郭霖公眾號 https://mp.weixin.qq.com/s?__biz=MzA5MzI3NjE2MA==&mid=2650241610&idx=1&sn

Android-螢幕適配(絕對詳細)(二)

Android-螢幕適配全攻略(絕對詳細)(二) 關鍵字:非密度制約畫素(dp、sp) 螢幕適配最佳實踐 前言:這篇文章接著 上一篇 繼續講,上篇講到了螢幕適配的核心概念與單位和一種解決方案:解決方案-支援各種螢幕尺寸。本篇繼續講剩餘的其他兩種解

Android-螢幕適配(絕對詳細)

(一) 關鍵字:螢幕適配 px dp dpi sp large限定符 .9.png 2012年到2014年支援Android裝置的種類從3997增長到18796。同時各大廠商定製的螢幕尺寸也非常多。這將非常

VSCode外掛開發(十)打包、釋出、升級

釋出方式 外掛開發完了,如何釋出出去分享給他人呢?主要有3種方法: 方法一:直接把資料夾發給別人,讓別人找到vscode的外掛存放目錄並放進去,然後重啟vscode,一般不推薦; 方法二:打包成vsix外掛,然後傳送給別人安裝,如果你的外掛涉及機密不方便釋出到應用市場,可以嘗試採用這種方式; 方法三:註冊

Gradle指令碼基礎

1 背景 在開始Gradle之前請務必保證自己已經初步瞭解了Groovy指令碼,特別是閉包規則,如果還不瞭解Groovy則可以先看《Groovy指令碼基礎全攻略》這一篇部落格速成一下Groovy基礎,然後再看此文即可。關於Gradle速成乾貨基礎詳情也

安卓開發經驗——Android Studio的project中兩個build.gradle配置的區別

一般建立一個android專案後回出現兩個gradle: build.gradle(Project):用來配置整個工程的 build.gradle(app):一個是用來配置app的 對compile和classpath區別的解釋: I’m g

Android螢幕適配(最權威的官方適配指導)

Android的螢幕適配一直以來都在折磨著我們這些開發者,本篇文章以Google的官方文件為基礎,全面而深入的講解了Android螢幕適配的原因、重要概念、解決方案及最佳實踐,我相信如果你能認真的學習本文,對於Android的螢幕適配,你將有所收穫! Android螢幕適配出現的原因

jenkins+Xcode+蒲公英實現ipa自動打包釋出

一.環境說明 搭建機器:一臺Mac Book Pro 開發工具:XCode V7.3.1 開發環境:OS X EI Capitan 版本 10.11.5 jenkins版:V1.647 (特別注意:我用的是V1.647,如果使用其他版本可能導致一些未知的BUG) 比如我之前用了最新的2.10版本,就導致了一

Android Studio 使用技巧:修改預設build.gradle

在專案中發現一些好用的外掛和庫,就想預設在每個工程裡使用,就想到了找找如何直接修改預設工程的build.gradle檔案,經過多方面查詢資料,可以使用下面的方法來改。 比如說有一個好用的butterKnife這個庫,需要新增buildscript的dependencie

Android螢幕適配2-我想跟美工談談

[TOC] 前言 俗話說完事開頭難 對一個Android開發而言,專案正式開發的第一步就是拿到圖(高清圖和具體切圖)。第一步至關重要,UI圖做得好、標準高,後面的開發更傾向於按照高的標準去要求自己,開了個好頭。UI本身就做得很爛,很多不合理的設計互動,

Android Studio打包問題:gradle打包Android程式,如何打包時不包含依賴包

在一個Android專案的build.gradle中,dependencies閉包中有以下幾種形式的宣告: compile 'com.android.support:appcompat-v7:22.2.1' 編譯的內容為單個檔案 compile f