使用 gradle 在編譯時動態設置 Android resValue / BuildConfig / Manifes中<meta-data>變數的值

来源:http://www.cnblogs.com/lizhilin2016/archive/2017/08/18/7390079.html
-Advertisement-
Play Games

轉載請說明來源: http://www.cnblogs.com/lizhilin2016/p/7390079.html 最近lz 在開始做一個新的Demo, 在項目中集成了bugly用於收集項目中的崩潰日誌, 集成Bmob用於作為後臺資料庫, 集成了友盟用於集成第三方分享, 當然了, 這些都有很多方 ...


       轉載請說明來源: http://www.cnblogs.com/lizhilin2016/p/7390079.html

  最近lz 在開始做一個新的Demo, 在項目中集成了bugly用於收集項目中的崩潰日誌, 集成Bmob用於作為後臺資料庫, 集成了友盟用於集成第三方分享, 當然了, 這些都有很多方案可以選擇, 到底採用哪種還是根據自己的喜好或者主要說是公司的具體要求, lz 這裡主要說的是, 集成這些東西, 每次都要在manifest.xml  還有build中配置一些參數, 而且有些參數還不止要配置一遍, 那麼問題就來了--> 使用 gradle 在編譯時動態設置 Android resValue / BuildConfig / Manifes中<meta-data>變數的值? 

       總結了幾篇文章, 網上關於這些知識也比較零散, 我在學習這些之前, 也根本不知道還有這樣的方法. 所以說不知道並不可怕, 可怕的是不知道自己不知道. 

       1. 全局變數配置, 可以用於統一管理版本號或者依賴庫, 在根目錄build.gradle文件中定義如下:  

ext {
compileSdkVersion = 25
buildToolsVersion = "25.0.2"
minSdkVersion = 16
targetSdkVersion = 25
versionCode = 1
versionName = "1.0"
applicationId = "www.lz.com.XXX"
filePath = "lz.jks"
alias = "alias"
pwd = "pwd"
v7version = "25.3.1"
buglyAppId = "XXX"
buglyChannel = "Android 端 2017-08-18 測試版"
}
app/build.gradle 文件中引用如下:
compileSdkVersion rootProject.ext.compileSdkVersion
buildToolsVersion rootProject.ext.buildToolsVersion
defaultConfig {
applicationId rootProject.ext.applicationId
minSdkVersion rootProject.ext.minSdkVersion
targetSdkVersion rootProject.ext.targetSdkVersion
versionCode rootProject.ext.versionCode
versionName rootProject.ext.versionName
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}

signingConfigs {
mycustom {
storeFile file(filePath)
storePassword pwd
keyAlias alias
keyPassword pwd
}
}
2. 使用gradle 在編譯時動態配置Android Manifest:
在新版本的gradle中, processManifest這個方法被移除掉了, 而提供了一個新的功能manifestPlaceholders, 我們可以在AndroidManifest中定義一個變數, 在build.gradle中動態的替換掉, 十分方便, 語法也十分簡單.
對比上面的功能, 我們需要動態替換bugly 的appkey, 需要在AndroidManifest中定義一個變數
<!-- Bugly 配置APP信息 start -->
<!-- 配置APP ID -->
<meta-data
android:name="BUGLY_APPID"
android:value="${bugly_app_id}" />
<!-- 配置APP版本號 -->
<meta-data
android:name="BUGLY_APP_VERSION"
android:value="${bugly_version}" />
<!-- 配置APP渠道號 -->
<meta-data
android:name="BUGLY_APP_CHANNEL"
android:value="${bugly_channel}" />
<!-- Bugly 配置APP信息 end -->
接著, 我們在app/build.gradle文件中定義, buglyAppId 按照上面方法一, 在根目錄build.gradle文件中定義
buildTypes {
release{
manifestPlaceholders = [bugly_app_id: buglyAppId, bugly_channel: buglyChannel, bugly_version: versionName]
signingConfig signingConfigs.mycustom
}
}
3. 由衷感謝這兩篇文章的作者:
    http://blog.csdn.net/u014011112/article/details/55511615
    http://blog.csdn.net/xx326664162/article/details/49247815


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 1.應用 Assets.xcassets :用來存放圖像資源文件 好處: 自動管理圖片,如@1x,@2x圖片,使用的時候使用Asset 名字即可 管理應用的Icon和Default圖片,這個挺方便的,可以完全拋開以前規範命名如Icon.png,[email protected],Xcode會自動識別尺寸然後匹配 ...
  • Android在layout xml中使用ViewStub完成動態載入 一、Layout XML文件常見的兩種模塊載入方式 1、靜態載入:被載入的模塊和其它模塊載入的時間一樣。 <include layout="@layout/otherLayout"/> 2、動態載入:需要被載入的模塊初始時並沒有 ...
  • Android在layout xml中使用include完成靜態載入 include靜態載入:不僅可以載入佈局,還可以載入控制項(控制項標簽名要在最外層)include標簽中有個layout屬性就是專門用來載入的。 在Android的layout樣式定義中,可以使用xml文件方便的實現,有時候為了模塊的 ...
  • ImageSwitch圖像切換控制項 繼承ViewAnimator所以可以做動畫 繼承ViewGroup所以可以裝別的控制項,所以ImageSwitch裡面裝的就是image,不過要找個ImageView來呈現 所以ImageSwitch用一個圖像工廠來顯示ImageView對象圖片。 我們看setIm ...
  • MTK刷機工具Flash_Tool部分4032錯誤解決辦法 先說明一點,這個辦法不是萬能的,我測試解決了以下兩種情況下的4032: 1、本來正常的開發板,因為一次刷機失敗後就一直變4032了 2、新開發板,第一次刷機就4032(在硬體正常的情況下,如果硬體有問題的話,呵呵,老夫掐之一算,累死也刷不進 ...
  • // NSFontAttributeName 設置字體屬性,預設值:字體:Helvetica(Neue) 字型大小:12 // NSForegroundColorAttributeNam 設置字體顏色,取值為 UIColor對象,預設值為黑色 // NSBackgroundColorAttributeN ...
  • 對很多做設計或產品的小伙伴們來說,Sketch應該不會陌生。它是一款由Bohemian Coding團隊一手打造的矢量繪圖應用軟體,最初發佈於2010年,後在2012年榮獲Apple公司ADA設計獎項。從產品開發及功能側重點來講,很多人會認為Sketch是專為UI設計師打造、擅長也只能用於UI設計, ...
  • 項目經過一個月的加班加點,終於這一期算是差不多了,於是便開始了優化工作,今天就發現了一個問題,在iOS10.2系統一下的手機調用系統的撥打電話功能,彈框是不出現的,直接跳轉到撥打電話的界面,但是在iOS10.2及其以上的系統是會出現的,這裡項目的代碼是一樣的,相信開發者都認識,如下 最後查閱資料才知 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...