1. 程式人生 > >Gradle實現資原始檔的overlay

Gradle實現資原始檔的overlay

有時候一個Android Project需要用在不同的產品中,這些產品的需求各有差異,但又想使用同一套程式碼,一種做法是在res/value中寫一個config.xml, 通過config.xml對各種需求進行配置。如果僅僅是寫這樣一個配置檔案,這還是不夠的,因為這個project應用於不同的產品時,它們的config.xml是一樣的,那麼如何做到不對這個project不做任何修改,而實現個產品不同的需求呢?
aapt的overlay機制此時就派上用場了。在專案的buld.gradle中增加aaptOptions

    aaptOptions {
        def resOverlayPath = '../../../os_extends/configs/DemoProject/src/main/res'
File dir = file(resOverlayPath) if (dir.exists()) { additionalParameters '-S', resOverlayPath, '--auto-add-overlay' noCompress 'foo', 'bar' ignoreAssetsPattern '!.svn:!.git:!.ds_store:!*.scc:.*:<dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~'
} }

DemoProject的config.xml的路徑是src/main/res/values/config.xml, 產品的配置檔案路徑位於resOverlayPath/value/config.xml , 編譯之後,打包生成的apk裡面的config.xml是resOverlayPath下的,而不是DemoProject/src/main/res下的。
這樣不同產品在各自的resOverlayPath下進行配置就實現了各自的需求。

相關推薦

Gradle實現原始檔overlay

有時候一個Android Project需要用在不同的產品中,這些產品的需求各有差異,但又想使用同一套程式碼,一種做法是在res/value中寫一個config.xml, 通過config.xml對各種需求進行配置。如果僅僅是寫這樣一個配置檔案,這還是不夠的,因

android原始檔overlay

aapt aapt stands for Android Asset Packaging Tool. This tool is part of the SDK (and build system) and allows you to view,

Gradle實現多渠道打包(不同原始檔打不同的包)

在日常開發中,我們或多或少都會碰到多渠道打包的一些問題,有些是同一個版本要上傳到不同的平臺,有些是要提供給不同的代理商,中間可能需要改動裡面的圖片或其他的一些資原始檔,對於版本比較少的我們可以簡單的替換,但是遇到很多版本時,相信再通過手動替換會令人吐血~ 廢話

Android原始檔strings實現特殊字元轉義

<div id="article_content" class="article_content clearfix csdn-tracking-statistics" data-pid="blog" data-mod="popu_307" data-dsm="post"

原始檔實現圖示和文字根據狀態更改顏色

本文主要實現下列功能: 按下item:圖示顏色 藍 --> 白,文字顏色 灰黑 --> 白; 放開item:圖示顏色 白 --> 藍,文字顏色 白 --> 灰黑; 預設狀態: 圖示顏色 藍,文字顏色 灰黑。 這裡主要使用三個資原始檔(

原始檔實現多語言介面

這裡介紹的方法是使用不同語言的資原始檔達成多語言的效果。 多語言DLL 第一步:建立一個MFC的DLL   第二步:設定工程屬性為Resource DLL,如果在 .Net 2003中這一步非常簡單: Project Property->Linker->

build.gradle的高階運用,通過Groovy語言合理的編譯打包程式碼,避免原始檔冗餘

懶人Android開發。最近做專案,一個專案(一套程式碼)針對多個客戶,要出多個版本,但不同的客戶需求導致專案程式碼有細微的不同,以及應用載入的資源圖片都是不一樣,如果僅僅是程式碼細微差別還好,但是資源圖片載入的都不一樣,這導致apk大包資源圖片冗餘大,這並不是我們所希望

.net 使用原始檔實現多語言切換

1,建幾個你需要的語言資原始檔,如圖:2,public class Localization3Attribute : ActionFilterAttribute    {        public override void OnActionExecuting(Action

Gradle或Maven打包專案原始檔問題

出現這個問題一不小心容易弄得人,心力交瘁,當我們用Gradle或者Maven構建web專案的時候,少不了要打包*.xml或者*.properties檔案,但是預設的情況下,gradle和maven總會很智慧的不去載入這麼些資源,於是乎當你採用如下形式放置檔案打包並執行web專

三行程式碼實現gdi+ Bitmap物件匯入原始檔點陣圖

下午在網上找了很久關於把資原始檔中的點陣圖匯入到gdi+的Bitmap物件中的方法,但是網上的方法不是要寫大段的程式碼,就是根本無法實現預期目標。最後通過我自己的嘗試發現了一個簡單易用的方法。就是先把點陣圖匯入到一個gdi物件CBitmap中然後通過其控制代碼載入到gdi+的

Android 儲存原始檔中的圖片到本地相簿,並實時重新整理的實現方法!

以上程式碼直接copy即可使用!Bitmap bmp = BitmapFactory.decodeResource(getResources(), R.drawable.img_public_no);public static void saveImageToGaller

通過命令列實現Android工程原始檔到apk的流程

前言 我們在開發Android應用的時候,可能很少研究整個Apk生成的過程,一般如AS或者Eclipse的開發工具,在執行的時候會自動幫我們將程式碼與資原始檔打包並簽名,生成相應的apk檔案,不知道大家有沒有好奇整個apk的編譯、打包過程呢,下面通過這篇

Gradle配置及同一應用不同版本配置不同原始檔,不同簽名,包名進行打包

公司的專案,一個專案也就是同一套程式碼要針對多個客戶打出多個版本的apk,不同版本的apk中一些程式碼是不同的,比如伺服器的地址,app的名字,圖片資源以及簽名檔案等都是不同的。剛開始的時候,把這些相同的程式碼,資原始檔提取出來,打包的時候進行替換就可以了,隨著客戶越來越多

Gradle實現自動打包,簽名,自定義apk文件名

回車 應用 types 背包 sdn 部署 密鑰對 另一個 密鑰庫 Gradle實現自動打包,簽名,自定義apk文件名 什麽是簽名,簽名有什麽用 Android APP都需要我們用一個證書對應用進行數字簽名,不然的話是無法安裝到Android手機上的,平時我們調試運行時到手

pyinstaller打包原始檔及包含eyed3模組時提示找不到libmagic處理

這兩天用python寫了個小工具,用到了eyed3,用pyinstaller打包時提示找不到libmagic 版本資訊: python 3.6.5 pyInstaller 3.4 python-magic-bin 0.4.14 eyeD3 0.88 wxpython 4.0.3 eyeD3 在Win

Android------------------的原始檔的學習

一、style的學習         用法:      使用:      使用系統自帶的style的風格       使用:      效果:      二、drawable的使用        selector是一個xml檔案進行載入使用的: 檔名叫做b

Web專案訪問原始檔

同一個Web程式的所有Servlet都共享同一個ServletContext物件,這個物件可以看作為Servlet的共享記憶體區域,在關於路徑檔案方面的API有如下4個: getResourcePaths 返回的是一個Set集合,引數必須以“/”為頭,集合裡面包含某一個目錄的所有子目錄和檔

android_反編譯原始檔

apktool http://ibotpeaches.github.io/Apktool/install/  這個工具用於最大幅度地還原APK檔案中的9-patch圖片、佈局、字串等等一系列的資源 主要是下載兩個東西 一個是apktool.jar  這個東西好下 另一個是apkt

.NET平臺的原始檔管理

可以管理文字、圖片等不同型別的資源 管理方式(增刪改) 可以直接修改XXX.resx原始檔(XML格式,文字直接管理內容,圖片需要指定路徑,資源名和圖片名可以不同) 也可以在VS的視覺化介面上進行操作(雙擊resx檔案) 使用方式(讀取) 初始化

duilib將原始檔壓縮成zip並打包到exe的資源中

本文參考了redrain大佬的http://blog.csdn.net/zhuhongshu/article/details/40146239文章。因為原文是基於WinImplBase類的,個人習慣基於CWindowWnd來做。因此額外摘抄一部分並微微調整一下程式碼,以作記錄。 整個程式的開發