Android利用Gradle多渠道打包如何動態替換資源,文字
動態替換APP logo
首先我們在app的build.gradle下面加入如下程式碼,以oem1為示例,
productFlavors {
oem1 {
manifestPlaceholders = [
oemIcon : "@drawable/oem1",
]
}
}
以上程式碼 manifestPlaceholders
主要是用於在AndroidManifest.xml內可以動態的替換oem圖示,我們看AndroidManifest.xml
裡面是如何用到這oemIcon的
<application
android:allowBackup="true"
android:icon="${oemIcon}"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
以上程式碼主要是關注android:icon="${oemIcon}"
,這個其實在gradle打包後悔自動替換成我們在build.gradle裡面設定的‘@drawable/oem1’
動態替換文字
首先在build.gradle裡面配置我們需要的文字
productFlavors {
oem1 {
resValue("string","dynamic_text","oem1的動態文字")
manifestPlaceholders = [
oemIcon : "@drawable/oem1",
]
}
}
注意:我們的string.xml裡面不允許有dynamic_text欄位,有的話編譯會報錯.
主要是resValue一行我們詳細解釋一下,
string
表示的是我們要生成一個string欄位,
dynamic_text
指的是欄位名稱便於我們程式裡面使用,
"oem1的動態文字"
指的是我們的字串的值
其實這一句想相當於我們在string.xml裡面定義如下一行
<string name="dynamic_text">oem1的動態文字</string>
動態替換資原始檔
如果在程式中我們有一個地方需要根據不同的渠道對應不同的drawable
,我們就可以用下列方法,下列方法是假設程式中有一處需要設定圖片,思路是我們首先在gradle
裡面設定好值,在AndroidManifest.xml
裡面使用META_DATA,然後再從程式裡面呼叫
build.gradle如下
productFlavors {
oem1 {
manifestPlaceholders = [
oemIcon : "@drawable/oem1",
]
}
}
AndroidManifest.xml如下
<meta-data
android:name="OEM_LOGO"
android:resource="${oemIcon}"
/>
java程式如下
MainActivity.java
img.setImageResource(Util.getMetaDataInt(this,"OEM_LOGO"));
Util.java
public class Util {
public static int getMetaDataInt(Context context,String name) {
try {
ApplicationInfo appInfo = context.getApplicationContext().getPackageManager()
.getApplicationInfo(context.getApplicationContext().getPackageName(),
PackageManager.GET_META_DATA);
int logo = appInfo.metaData.getInt(name);
return logo;
} catch (Exception e) {
e.printStackTrace();
}
return -1;
}
}
主要思路就是利用META_DATA來貨渠道資源的int值並且返回到程式中,達到動態生成的目的
相關推薦
Android利用Gradle多渠道打包如何動態替換資源,文字
動態替換APP logo 首先我們在app的build.gradle下面加入如下程式碼,以oem1為示例, productFlavors { oem1 { manifestPlaceholders = [
廈門之旅第一篇Gradle多渠道打包(動態設定App名稱,應用圖示,背景圖片,狀態列顏色)
我不是詩人,寫不出廈門的美;我不是歌手,唱不出廈門的情;我不是畫家,畫不出廈門的景。 我只是一名程式設計師,我只能用我的眼,我的心去看去感受,那久違的海風吹拂著臉頰,好似內心那一份煩躁與沉重也隨著海風飄向了遠方 . . . . . . 一、Grad
Android Studio--Gradle多渠道打包
由於國內Android市場眾多渠道,為了統計每個渠道的下載及其它資料統計,就需要我們針對每個渠道單獨打包,如果讓你打幾十個市場的包豈不煩死了,不過有了Gradle,這再也不是事了。友盟多渠道打包廢話不多說,以友盟統計為例,在AndroidManifest.xml裡面會有這麼一
Android Studio Gradle 多渠道自動打包,動態修改HostUrl,簽名apk,混淆配置詳解
文/ skay 最近遇到專案從Eclispe遷移到Android studio,以前的Ant自動打包指令碼已經相容不好了,所以用了Gradle實現打渠道包,切換環境等, Ant打包指令碼 <target name="-release-sign"
ANDROID STUDIO系列教程六--GRADLE多渠道打包
tor 等待 time() utf 腳本 manifest file resource 一個 由於國內Android市場眾多渠道,為了統計每個渠道的下載及其它數據統計,就需要我們針對每個渠道單獨打包,如果讓你打幾十個市場的包豈不煩死了,不過有了Gradle,這再也不是事了。
android多渠道打包(動態改變地址打包,只需改下版本號)
多渠道打包本來不想寫的,因為比較麻煩,所以沒打算寫。只是前段時間因為電腦藍屏重灌了系統,導致不能打包了,所以又百度了半天,今天就寫下來做個筆記。廢話不多說,進入主題。配置多渠道打包就要使用友盟統計build.gradle中新增友盟的依賴包://友盟統計 compile 'co
android gradle多渠道打包和打包選定的so資料夾
productFlavors { LDAND001 { ndk {//這裡控制apk要生成的so檔案 abiFilters "armeabi-v7a" abiFilters "armeabi" abiFilters "x86" abiFilters "x86_
Android美團多渠道打包Walle整合
一、為什麼使用美團多渠道打包的方式? 打包更加快速 傳統的通過productFlavors渠道包的方式,渠道10個以內還可以接受,如果100個渠道包,每個包需要打5Min,就是將近10個小時的打包,而採用美團Walle多渠道打包的方式只需要打一個包的時間。 配置更加靈活 可以在APK渠道包中通過配
Gradle多渠道打包
Gradle多渠道打包 多渠道打包基本實現 不同的渠道包顯示不同的APP_NAME 不同的渠道包顯示的res資源不一樣 簡單的多渠道打包 1.在AndroidMainfest.xml的application中配置自定義項
Android 友盟多渠道打包
目錄 一、簡介 一、簡介 為了統計不同渠道上的下載數量及使用者活動情況,方便後臺做運營統計。我們需要在安裝包中新增不同的標識(渠道資訊 Channel)。多渠道的實現方式多種多樣,此篇只實現友盟多渠道打包的方法。友盟多渠道打包方法試用於少量的渠道,如果要
android Ant 批量多渠道打包 總結!
最近研究android裡用ant打多個渠道的apk包,終於搞出頭緒!!走了很多錯路,希望大家不要這樣子!!下面就是個人的幾點總結,希望對大家有幫助: 首先說的是我用的ant不是eclipse和android SDk裡面自帶的ant,而是從這裡下載的 -- Ant
Android利用gradle同時編譯多包(測試環境地址、生產環境地址)
前言 小公司,專案有2套環境:一個測試環境,一個生產環境。測試會找客戶端要測試環境包或生產環境包,我覺得嫌煩,於是,同時編譯。 分析 首先,我們的專案中,生產環境和測試環境僅為string.xml中的兩個地址不通,其他程式碼都是相同的。 這個需求和多
Android美團多渠道打包方式
以umeng為例,官方的渠道配置方式: <!-- 友盟API Key --> <meta-data android:name="UMENG_APPKEY" android:va
Android使用Gradle自動化打包
假如我們使用了友盟sdk或者別的sdk,我們需要在androidMainifest 填寫一個渠道號,來幫助我們統計。也就說app釋出之後需要每個應用市場對應著唯一的渠道號。如果我們不使用自動化打包的話,就非常的麻煩,需要自己去改Mainifest.xml中的
【騰訊Bugly乾貨分享】Android 新一代多渠道打包神器
關於作者: 李濤,騰訊Android工程師,14年加入騰訊SNG增值產品部,期間主要負責手Q動漫、企鵝電競等專案的功能開發和技術優化。業務時間喜歡折騰新技術,寫一些技術文章,個人技術部落格:www.ltlovezh.com 。 ApkChanne
Android中的多渠道打包之友盟統計篇(二)
上篇簡單瞭解了Android中的多渠道打包,這篇主要說正事了---》 如何多渠道打包: 首先,多渠道打包最重要的是可以統計不同渠道下的應用的情況,比如下載量,日活量等等.. 關於統計的話國內有兩個比較出名的第三方統計工具吧:友盟統計和百度移動統計 這篇說的是用友盟,如果想要
android Ant 批量多渠道打包!
一直以來都是手動打包android程式,真可謂苦不堪言啊,以前試過用ant打包,但是失敗了,最近剛到新公司,又開始研究ant這玩意了,查閱了網上一些文章,結合自己的情況,硬是要弄出來才行,這裡就作下記錄吧。 1,準備 ant打包自然需要ant,可以去http://an
Android 新一代多渠道打包神器
ApkChannelPackage是一種快速多渠道打包工具,同時支援基於V1和V2簽名進行渠道打包。外掛本身會自動檢測Apk使用的簽名方法,並選擇合適的多渠道打包方式,對使用者來說完全透明。 概述 眾所周知,因為國內Android應用分發市場的現狀,我們在釋出APP
Android開發AndroidStudio多渠道打包
最近不斷有朋友向我諮詢AndroidStudio多渠道的打包方法,今天整理一下之前積累的打包套路,寫一篇文章,手把手的教給大家。 說到多渠道,這裡不得不提一下友盟統計,友盟統計是大家日常開發中常用的渠道統計工具,而我們的打包方法就是基於友盟統計實施的。按
關於Android中根據ID名動態獲取資源的兩個方法
在開發中, 我們習慣了類似下面這種方式去實現引用資源: context.getResources().getDrawable(R.drawable.flower);但是,當我們提前知道這個資源的id,想動態去引用,而不是在id裡面固化應該怎麼辦呢? 比如某個圖片資源的id是