1. 程式人生 > >android多渠道打包&&幾個打包小技巧

android多渠道打包&&幾個打包小技巧

android多渠道打包

多渠道的意義

  • 更詳細的統計app被下載的途徑
  • 檢視app在每個渠道的表現
  • 有利於app的推廣

使用友盟實現多渠道打包

多渠道打包的原理

  • 為每個渠道的apk指定一個唯一的識別符號
  • android中通常在Manifest.xml中為其指定
  • 也可以在程式碼中指定,但一般不用

使用友盟步驟

  1. 上友盟官網註冊並建立新應用,獲得Appkey
  2. 下載SDK並整合,推薦使用studio整合
  3. Manifest.xml中配置渠道號和Appkey
  4. 在moudle的build.gradle中編寫多渠道指令碼

1.整合友盟SDK

在build.gradle中新增依賴:

dependencies {
   compile 'com.umeng.analytics:analytics:latest.integration'
}

2.Manifest.xml中配置渠道號和Appkey,以及相關許可權

<manifest……>
<uses-sdk android:minSdkVersion="4"></uses-sdk>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission
android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.READ_PHONE_STATE"/> <application ……> …… <activity ……/> <!--友盟AppKey--> <meta-data android:name
="UMENG_APPKEY" android:value="YOUR_APP_KEY" />
<!--渠道號--> <!--此處使用佔位符,然後在build.gradle中動態的替換它--> <meta-data android:name="UMENG_CHANNEL" android:value="${UMENG_CHANNEL_VALUE}" /> </application> </manifest>

3.在moudle的build.gradle中編寫多渠道指令碼

apply plugin: 'com.android.application'

android {
    compileSdkVersion 23
    buildToolsVersion "23.0.3"

    defaultConfig {
        applicationId "com.shaw.testapp"
        minSdkVersion 9
        targetSdkVersion 23
        versionCode 100
        versionName "1.0.0"
        multiDexEnabled true//突破應用方法數65535的限制
        manifestPlaceholders = [UMENG_CHANNEL_VALUE:"umeng"]//設定預設的渠道名
    }

    //新增我們的簽名檔案配置
    signingConfigs{
        //為我們的release包添加簽名檔案配置
        myConfigs {
            storeFile file("key.jks")//
            storePassword "shaw666"
            keyAlias "shaw"
            keyPassword "shaw666"
        }
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            //新增我們的簽名檔案配置
            signingConfig signingConfigs.myConfigs
        }
    }

    //多渠道的支援
    productFlavors{
        xiaomi{}
        wandoujia{}
    }

    //遍歷渠道,將每個渠道的name替換到UMENG_CHANNEL_VALUE中
    productFlavors.all{
        flavor -> flavor.manifestPlaceholders = [UMENG_CHANNEL_VALUE: name]
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    testCompile 'junit:junit:4.12'
    compile 'com.android.support:appcompat-v7:23.2.1'

    //新增友盟統計庫依賴
    compile 'com.umeng.analytics:analytics:latest.integration'
}

4.使用命令列打包

在Terminal中使用命令gradlew assembleRelease自動打出所有的渠道包
gradlew assembleDebug //所有平臺的debug包
gradlew assemblewandoujiaRelease //只打wandoujia的Release包

關於打包的其他技巧

1.修改release包的輸出檔名

    buildTypes {
        release {
            ……
            applicationVariants.all{ variant ->
                variant.outputs.each{ output ->
                    def outFile = output.outputFile
                    if (outFile != null && outFile.name.endsWith(".apk")){
                        def fileName = defaultConfig.applicationId + '_v'  
                                    + defaultConfig.versionName + '_'  
                                    + variant.productFlavors[0].name + '.apk'
                        output.outputFile = new File(outFile.parent, fileName);
                    }
                }
            }
        }
    }

效果如下:

2.在每個渠道中的資源的變動

    //多渠道的支援
    productFlavors{
        xiaomi{
            resValue "string", "app_name", "xiaomi_app"
        }
        wandoujia{
            resValue "string", "app_name", "wandoujia_app"
        }
    }

先定義,再在程式碼使用,最後在打包時,將之前定義的value替換掉。(需要將之前定義的value刪除,否則會報錯)

3.在同一裝置上同時安裝多個不同功能點的app

    //多渠道的支援
    productFlavors{
        okhttp{
            //給defaultConfig.applicationId新增字尾(不會影響程式中獲取的包名)
            applicationIdSuffix"okhttp"
            resValue "string", "app_name", "okhttp_app"
        }
        jpush{
            applicationIdSuffix"jpush"
            resValue "string", "app_name", "jpush_app"
        }
    }

效果如下:

相關推薦

android多渠道打包&&打包技巧

android多渠道打包 多渠道的意義 更詳細的統計app被下載的途徑 檢視app在每個渠道的表現 有利於app的推廣 使用友盟實現多渠道打包 多渠道打包的原理 為每個渠道的apk指定一個唯一的識別符號 android中通

學會這Excel技巧,加班從此對你說拜拜~

com 喜歡 外部 課程表 辦公 收集 部分 插入 外部鏈接 Excel是一個很實用的辦公軟件,為了使大家不用通宵加班整理數據,小編特意去為大家收集了一些Excel小技巧,掌握這些技巧大家就能快速制作出數據報表,從此再也不用加班! NO.1【導入外部數據】 在制作Excel

分享Python技巧函式裡的4花招

前面講了很多內容都是關於python的變數,資料結構,下面我們來談一談python的函式。python裡的函式知識點大概分為基礎的定義使用,作用域和引數傳遞,高階用法,其中引數傳遞最為靈活,作用域最為繞人. 函式其實是對程式邏輯進行結構化或者過程化的一種程式設計方法,把整塊的程式碼巧妙的隔離成易於管理的小塊

分享Python技巧函式裡的4花招!

  前面講了很多內容都是關於python的變數,資料結構,下面我們來談一談python的函式。python裡的函式知識點大概分為 基礎的定義使用 , 作用域 和 引數傳遞 , 高階用法 ,其中引數傳遞

PLSQL Developer的實用技巧

PLSQL Developer的幾個實用小技巧 plsql作為開發oracle的視覺化工具,使我們更加方便快捷的操作資料庫。作為初入職場的菜鳥,看到公司的大神非常6的操作plsql,也很羨慕。網上能查到的plsql的技巧很多,對於我這樣的初學者來說大部分用不到,故此只整理了兩個簡單的

程式設計技巧,讓你程式碼效率提高一個檔次

轉載自程式人生公眾號 2018/9/3 for迴圈 1.for迴圈變數初始化 在c語言中,我們常常這樣使用for語句: for (int i = 0; i < strlen(s); i++) 這看起來似乎很完美,程式碼也很漂亮,讓我們再看看另一種寫法: fo

PL/SQL Developer使用技巧

1、選中sql語句的當前行 滑鼠連續點選所在行3次。 2、記住登陸密碼 工具 -> 首選項 -> Oracle -> 登入歷史,勾選“帶口令儲存”。 3、檢視Oracle的tnsnames.ora內容 幫助 -> 支援資訊 -> TNS名

日常工作中的excel技巧

大家好!我是xyz,又和大家見面了!今天分享幾個日常工作中經常使用的小技巧,希望對大家能有所幫助

(精)DEVC++的實用技巧

依賴 DEV C++ 5.11 最新版  下載安裝DEV C++後,使用DEV C++開啟一個隨便的cpp檔案,你看到的應該是這樣的介面。(為了節約讀者的流量,圖片進行了有失真壓縮,但是字看得清楚)  重點是確認工具欄有AStyle選項。 相信編譯執行什麼的同學們肯定都

UI技巧,提高效率

減少程式碼量就是減少bug量,這也是程式開發中的真理之一。  這句話引起了我的共鳴,必須留著.  一些IB小技巧 同時新增多個outlet 在IB中,選中一個view並右鍵點選,將會出現灰色的HUD,可以在其上方便地拖拉或設定事件和outlet。你可以同時開啟多個這

網站優化的3seo技巧

分享 將他 jpg 指數 參考 關鍵詞 學習 搜索 自己 網站運營的基礎就是優化,對於很多人來講,想要把網站做好,提升排名,無疑是一件比較苦惱的事。但是做網站優化,實際上也並沒有想的那麽復雜,有時候我們可以運用一些優化技巧,就可以把網站優化做好。 做好網站優化,提

Java的有用Util函數(日期處理和http)

content lex .get get sta mmd 第幾天 service ret /** * 依據日期返回當前日期是一年的第幾天 * @param date * @return */ public stat

前端程序員應該知道的 15 jQuery 技巧

php addclass target javascrip pro 前綴 屬性 用戶 cati 下面這些簡單的小技巧能夠幫助你玩轉jQuery。 返回頂部按鈕 預加載圖像 檢查圖像是否加載 自動修復破壞的圖像 懸停切換類 禁用輸入字段 停止加載鏈接 切換淡入/幻燈片 簡單

程序員都會的 35 jQuery 技巧

console 相同 用戶 hide 到你 http 使用 his mouse 原文:http://www.open-open.com/code/view/1446774303092 1. 禁止右鍵點擊 $(document).ready(function(){

移動端的面試問題

怎麽辦 網絡相關 檢測 時間 什麽 mat move 出了 小問題 1. 安卓下大面積觸摸會導致觸發touchmove的問題   判斷一下touchstart的上一次位置和當前位置是否一樣,一樣就使move return掉 <body> <div cl

java的入門程序

col 成員變量 比較 oid pan 聲明 經典 名稱 沒有 1.先是最最經典的hello world! public class Hello { public static void main(String args[]) { System

Python案例,愛上Python編程!

ESS 內容 案例 sta 想象 win32 c99 編程語言 api Python是一種面向對象的解釋型編程語言,源代碼與解釋器CPython遵守GPL協議,Python語法簡潔清晰。 語法簡潔清晰,那麽我們用少量的Python代碼能做哪些有趣的東西?溫馨提示:文末必看。

能夠讓你裝逼的10Python技巧

pre 經驗 避免 優化 enum 抽象 淺拷貝 ima 在一起 列表推導式 你有一個list: bag = [1, 2, 3, 4, 5] 現在你想讓所有元素翻倍,讓它看起來是這個樣子: [2, 4, 6, 8, 10] 大多初學者,根據之前語言的經驗會大概

最實用的10重構技巧排行榜,您都用過哪些呢?

LZ最近一直在研究虛擬機器原始碼,可惜目前還只是稍微有一點點頭緒,無法與各位分享,龐大的JAVA虛擬機器原始碼果然不是一朝一夕能搞定的,LZ汗顏。            本次我們拋開JAVA虛擬機器原始碼這些相對底層的東西,LZ來與各位

Excel表格中的"="功能強大,這不為人知的技巧你會嗎?

你知道“=”在Excel表格中的技巧嗎?今天就給大家分享一下在單元格中輸入等於號之後,會有哪些神奇的技巧,一起來看看吧! 快速對比資料差異 在單元格中輸入"=A2=B2",下拉填充,顯示"TRUE"表示資料一致,"FALSE"表示資料不一致。 具體操作如下: 快速將一列資料轉為多列 在單元格中輸入"