android 多渠道打包

來源:互聯網
上載者:User

標籤:version   作用   each   檔案   java   技術   ctf   檔案中   groov   

android 多渠道打包原理

在manifest檔案中,application標籤內部設定不同的metadata標籤即可,可以通過java api擷取這個matedata內的值

友盟提供的多渠道打包技術
  1. 按照umeng的要求,在manifest檔案中添加如下代碼

    <meta-data           android:name="UMENG_CHANNEL"           android:value="你自己申請的key" />
  2. 如果在value的地方寫死了一個值,會使得每次打包只能固定一個渠道,所以更改為如下方式

    <meta-data           android:name="UMENG_CHANNEL"           android:value="${UMENG_CHANNEL_VALUE}" />

    使用預留位置,在build.gradle的android標籤內添加如下代碼,區分渠道資訊。這個預留位置和spring架構中的ognl運算式作用有點像

    productFlavors{        huawei{            manifestPlaceholders = [UMENG_CHANNEL_VALUE: "huawei"]        }        xiaomi{            manifestPlaceholders=[UMENG_CHANNEL_VALUE: "xiaomi"]        }    }

    可以簡寫為以下內容

    productFlavors{  huawei{  }  xiaomi{  } } productFlavors.all { flavor ->  flavor.manifestPlaceholders = [UMENG_CHANNEL_VALUE: name] }

    如果要包含版本資訊,可以修改為如下配置

    productFlavors{    huawei{    }    xiaomi{    } } productFlavors.all { flavor ->    flavor.manifestPlaceholders = [UMENG_CHANNEL_VALUE: name] } applicationVariants.all { variant ->    variant.outputs.each { output ->        def outputFile = output.outputFile        if (outputFile != null && outputFile.name.endsWith(‘.apk‘)) {            def fileName = outputFile.name.replace(".apk", "-${defaultConfig.versionName}.apk")            output.outputFile = new File(outputFile.parent, fileName)        }    } }

    只有是在代碼中擷取渠道資訊,方便發送到伺服器進行資料統計

    private String getChannel() {   try {       PackageManager pm = getPackageManager();       ApplicationInfo appInfo = pm.getApplicationInfo(getPackageName(), PackageManager.GET_META_DATA);       return appInfo.metaData.getString("UMENG_CHANNEL");   } catch (PackageManager.NameNotFoundException ignored) {   }   return "";}
附加小知識

當電腦串連了多個android裝置的時候,使用adb shell時進入不同的裝置,可以添加參數

adb -s 序號 install/shell 等命令

查看序列好

adb devices

顯示結果的第一列就是序號

android 多渠道打包

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.