亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 系統 > Android > 正文

為Android應用增加渠道信息 自動化不同渠道的打包過程的使用詳解

2020-04-11 12:25:33
字體:
來源:轉載
供稿:網友

為什么需要在應用程序中增加渠道信息?

Android應用的發布需要面對各種各樣的市場,我們稱之為渠道。有的時候,我們需要知道應用是從哪個渠道下載的。比如,我們可能需要統計哪些市場帶來的用戶量比較大。再比如,我們可能有一些盈利需要和具體的渠道進行分成。這些都是統計渠道的信息。

一般如何在應用中加入渠道信息?

為了統計渠道信息,就不得不在程序的某個地方加入渠道的信息,然后針對不同的渠道打不同的包。一般可以在Manifest文件中加入渠道編號,而不直接寫在代碼中。這樣做的好處是,可以針對不同渠道,自動化去修改Manifest文件中的渠道編號,然后自動為該渠道打包。

Manifest文件支持Meta Data標簽,建議使用這種自定義標簽。例如下面的文件片段。

復制代碼 代碼如下:

<?xml version="1.0" encoding="utf-8"?>

<manifest xmlns:android="http://schemas.android.com/apk/res/android"

      android:versionCode="X"

      android:versionName="X.X.X"

      package="com.XXX">

      ……

    <application android:icon="@drawable/icon"

            android:label="@string/app_name">

        ……

    <meta-data android:name="CHANNEL" android:value="C_001" />

    </application>

</manifest>


在這段代碼示例中,我們在Application節點下增加了一個meta-data標簽,名稱是CHANNEL,值是C_001,是我們規定的一個渠道的編號。

為不同的渠道打包,就要手工或者自動化修改C_001成為C_002、C_003等等其它我們定義的渠道編號,然后再打不同的包。


程序如何讀取打包的渠道編號?

在程序代碼中,可以讀取Manifest文件中定義的meta-data。以下為代碼實例。

復制代碼 代碼如下:

   public static String getChannelCode(Context context) {

       String code = getMetaData(context, "CHANNEL");

       if (code != null) {

           return code;

       }

       return "C_000";

    } 

    private static String getMetaData(Context context, String key) {

       try {

           ApplicationInfo  ai = context.getPackageManager().getApplicationInfo(

                  context.getPackageName(), PackageManager.GET_META_DATA);

           Object value = ai.metaData.get(key);

           if (value != null) {

              return value.toString();

           }

       } catch (Exception e) {

           //

       }

       return null;

    }


如何自動化打包過程?

我們想要自動化針對不同渠道打不同包的過程,有兩種情況。一種是有源代碼的情況,一種是沒有源代碼只有APK文件的情況。

有源代碼的情況。

有源代碼的情況比較簡單。我們可以使用自動化腳本工具進行打包,比如使用Ant。

使用Ant打包,有兩個關鍵問題:一個是要在Ant中支持For循環,以自動做多次打包動作;一個是如何能夠在Ant中修改Manifest文件,以支持不同的市場。只要解決了這兩個關鍵問題,配合Ant的基本功能,就能實現我們的要求了。

在Ant中支持循環

在Ant的核心包里沒有相關的For循環的Task,要下載相應的擴展包。可以使用開源的Ant-contrib包。

下載地址:http://ant-contrib.sourceforge.net/

下載完成后,把ant-contrib里的lib包復制到安裝好的Ant庫apache-ant-XXX/lib下面,就可以使用了。

具體如何使用,可以參考ant-contrib的官方網站。

在Ant中修改Manifest文件

利用 Ant 擴展任務所提供的 <replaceRegExp> 任務,還可以實現基于正則表達式的替換。

例如,要將AndroidManifest.xml文件中的行首“C_001”字符串替換為“C_002”,可以使用如下Ant腳本:

<replaceregexp

        file="AndroidManifest.xml"

        byline="true"

        match="C_001 "

        replace="C_002"

/>

<replaceRegExp> 任務很強大,這只是一個簡單的例子。

只有APK文件的情況。

如果沒有源代碼,只有APK文件,事情相對就稍微復雜一些了。我們知道有一個開源的APKTOOL,可以對APK文件進行反編譯,或者重新打包。具體的請參考APKTOOL的官方文件。

有了APKTOOL的幫助,就可以有一個基本思路。

 先使用APKTOOL對APK文件進行反編譯,反編譯出來資源文件和AndroidManifest.xml文件。

 使用腳本代碼修改AndroidManifest.xml文件中的渠道ID文本。

 使用APKTOOL重新打包成APK文件。

 使用jarsigner工具為APK文件簽名。

只要反復重復2-4步驟,即可對不同的渠道打出不同的APK安裝包。

根據這個思路,具體的實現就相對簡單了??梢詫懗梢粋€BAT腳本文件,也可以寫成Java應用程序。

 

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产午夜精品全部视频播放| 亚洲少妇中文在线| 久久综合免费视频影院| 成人欧美在线观看| 日韩精品视频在线免费观看| 欧美激情日韩图片| 欧美精品video| 成人在线免费观看视视频| 性欧美xxxx交| 精品一区二区三区四区在线| 国产不卡在线观看| 不卡中文字幕av| 成人自拍性视频| 亚洲国产成人久久综合| 亚洲成年网站在线观看| 精品色蜜蜜精品视频在线观看| 亚洲欧美国产日韩中文字幕| 亚洲国产高清自拍| 57pao国产精品一区| 欧美高清自拍一区| 91精品中国老女人| 欧美色视频日本高清在线观看| 中文字幕av一区二区三区谷原希美| 精品久久久香蕉免费精品视频| 日韩一区二区av| 亚洲精品有码在线| 成人激情视频网| 午夜精品一区二区三区在线视| 久久精品视频在线播放| 国产精品嫩草影院久久久| 91社区国产高清| 欧美尺度大的性做爰视频| 高清欧美性猛交xxxx| 久青草国产97香蕉在线视频| 色综合男人天堂| 国产精品久久久久福利| 亚洲精品电影网| 亚洲第一在线视频| 深夜福利一区二区| 国产亚洲精品久久久优势| 欧美电影免费在线观看| 精品久久久精品| 91黄色8090| 成人欧美在线视频| 国产精品久久久久久久久久久不卡| 日韩精品在线观看网站| 一区二区三区在线播放欧美| 国产精品网站入口| 欧美大片免费观看在线观看网站推荐| 91精品在线一区| 久久影院中文字幕| 国产成人精品综合久久久| 日韩精品在线视频美女| 91精品国产高清久久久久久91| 欧美小视频在线| 日韩一中文字幕| 久久色在线播放| 成人有码在线视频| 日本欧美精品在线| 性视频1819p久久| 国产精品久久婷婷六月丁香| 日韩成人在线视频| 国产精品高潮呻吟久久av无限| 国产aⅴ夜夜欢一区二区三区| 91亚洲va在线va天堂va国| 伊人久久综合97精品| 亚洲成人动漫在线播放| 国产精品色悠悠| 欧美性猛交xxxx乱大交3| 欧美日韩中文字幕在线视频| 97视频免费观看| 91av视频在线播放| 亚洲一区二区三区乱码aⅴ蜜桃女| 欧洲成人免费视频| 91sao在线观看国产| 97精品久久久中文字幕免费| 国产精品视频网| 精品免费在线视频| 欧美性xxxx极品hd满灌| 国产精品高潮呻吟久久av野狼| 亚洲理论电影网| 精品久久久久久亚洲国产300| 欧美激情伊人电影| 精品亚洲一区二区三区四区五区| 69**夜色精品国产69乱| 亚洲石原莉奈一区二区在线观看| 久久成人18免费网站| 成人免费直播live| 欧美裸身视频免费观看| 久久精品国产欧美亚洲人人爽| 琪琪第一精品导航| 久久99国产精品久久久久久久久| 日本中文字幕久久看| 欧美国产高跟鞋裸体秀xxxhd| 日韩一二三在线视频播| 久久精品国产2020观看福利| 亚洲成人激情在线观看| 久久免费国产视频| 亚洲激情视频网| 亚洲免费视频网站| 亚洲精品久久久久中文字幕二区| 国产成人精品在线| 欧美午夜丰满在线18影院| 亚洲最大福利视频网| 一区二区三区精品99久久| 亚洲午夜色婷婷在线| 亚洲缚视频在线观看| 国产97色在线| 亚洲第一中文字幕在线观看| 亚洲天堂男人天堂女人天堂| 粗暴蹂躏中文一区二区三区| 91色在线视频| 国产亚洲欧美另类中文| 91麻豆桃色免费看| 久久精品亚洲国产| 亚洲电影第1页| 伊人成人开心激情综合网| 91精品视频在线看| 久精品免费视频| 91色在线观看| 欧美最猛性xxxxx(亚洲精品)| 国产精品福利久久久| 欧美大尺度在线观看| 成人免费直播live| 日韩精品视频免费专区在线播放| 国产精品夜色7777狼人| 夜夜躁日日躁狠狠久久88av| 最近2019中文免费高清视频观看www99| 亚洲毛片在线看| 亚洲人精品午夜在线观看| 欧美性猛交xxxx富婆弯腰| 91九色国产在线| 国产精品久久久久久久久久久久久久| 亚洲欧美日韩在线一区| 九九热99久久久国产盗摄| 成人亚洲综合色就1024| 亚洲精品福利资源站| 欧美在线视频在线播放完整版免费观看| 精品小视频在线| 欧洲精品久久久| 亚洲午夜精品视频| 日韩欧美高清在线视频| 992tv成人免费视频| 成人观看高清在线观看免费| 亚洲免费av电影| 亚洲摸下面视频| 国产精品免费久久久久影院| 欧美成人久久久| 国产成人久久精品| 91久久夜色精品国产网站| 日韩在线观看免费| 日韩美女写真福利在线观看| 97超级碰碰人国产在线观看| 中文字幕精品av| 日韩一中文字幕| 日韩在线国产精品| 91精品国产91久久| 蜜月aⅴ免费一区二区三区| 国产精选久久久久久| 97在线视频观看| 欧美在线免费视频| 国外成人性视频| 国产在线观看精品一区二区三区| 日本一区二区三区四区视频|