Android 使用gradle打包Assets目錄的案例
現(xiàn)在提起Android開(kāi)發(fā)工具,大多人第一個(gè)想到的肯定是Android Studio。谷歌專(zhuān)門(mén)為Android開(kāi)發(fā)者推出的這款I(lǐng)DE,以其強(qiáng)大的功能迅速擊敗的老牌的eclipse。
與此同時(shí),eclipse依賴(lài)的ant,也逐漸被更加強(qiáng)大更加靈活的gradle所取代,成為Android開(kāi)發(fā)領(lǐng)域首選構(gòu)建工具。
強(qiáng)大并不意味著沒(méi)有坑。在使用gradle的過(guò)程中,特別是打包assets目錄 下的一些資源時(shí),筆者真沒(méi)想到你是這樣的assets,遇到了若干問(wèn)題,在此處做一個(gè)整理。
如何創(chuàng)建assets目錄
老實(shí)說(shuō),筆者在這個(gè)地方真的吃過(guò)大虧。在eclipse時(shí)代,筆者創(chuàng)建assets目錄時(shí),習(xí)慣性地操作是“右鍵 -> new -> Directory”,然后只需將文件夾命名為“assets”即可。
到了Studio下,還是同樣的操作,結(jié)果卻有可能導(dǎo)致打包的apk中assets資源丟失了!??!所以習(xí)慣一定要改,Android Studio下assets目錄正確的創(chuàng)建姿勢(shì)是:
1 在你的src或者main目錄上右鍵new;
2 在Folder菜單上找到Assets Folder,確定即可。

有個(gè)問(wèn)題提一下,如果此時(shí)你的視圖是Project,新創(chuàng)建的assets目錄因?yàn)槭强盏?,部分情況下會(huì)看不見(jiàn)(很詭異),這時(shí)你只需要將視圖切換為Android,就能正??匆?jiàn)了。
assets目錄無(wú)法打包進(jìn)gradle
如果你的某些資源放置在assets目錄下,本地編譯能夠正常訪(fǎng)問(wèn),構(gòu)建打包卻死活讀取不到的時(shí)候,建議你把打包生成的apk拿出來(lái),將后綴改成zip,然后解壓縮如下圖所示,確定一下你的assets目錄下的資源是否真的被打包進(jìn)去了。提醒一下,不要試圖修改里面的內(nèi)容,都是驗(yàn)過(guò)簽的。

如果沒(méi)有,原因可能是你在創(chuàng)建assets目錄時(shí),并沒(méi)有按照上面的流程,而且gradle的構(gòu)建腳本里面也沒(méi)有指明assets資源的路徑,因此直接導(dǎo)致gradle懵逼。
解決辦法有兩個(gè):
1 按照上面的流程重新創(chuàng)建assets目錄;
2 在gradle里面android括號(hào)內(nèi),指定assets的路徑即可,如
sourceSets {
main {
assets.srcDirs = ['src/main/assets']
}
}
當(dāng)然,需要根據(jù)你的具體情況來(lái)看,如果你為不同版本準(zhǔn)備了不同的assets資源,就要添加在對(duì)應(yīng)的flavors中。
assets目錄下的同名文件
因?yàn)轫?xiàng)目的需要,筆者要在assets目錄下為不同的版本(360和demo)提供不同的資源。但是資源的名稱(chēng)也都是相同的。
筆者最初采取了在assets下創(chuàng)建文件夾對(duì)內(nèi)容加以分類(lèi),同時(shí)配置不同F(xiàn)lavors的做法,如下圖所示。
本以為萬(wàn)事無(wú)虞,結(jié)果卻讓人很無(wú)奈。

測(cè)試發(fā)現(xiàn),這種方式并不奏效——assets目錄仍然在main目錄下,默認(rèn)的仍然是一個(gè)文件夾(360或者demo)下的內(nèi)容作為最終打包的資源,并沒(méi)有根據(jù)版本區(qū)分開(kāi)來(lái)。
后來(lái)采取的做法是在每一種版本(即每一種flavors)都創(chuàng)建一個(gè)assets目錄,同時(shí)更改sourceSets,為每個(gè)Flavors提供不同配置,如下圖所示,通過(guò)這樣來(lái)區(qū)分不同的資源依賴(lài),最后也證實(shí)可行。

總結(jié)一下
1 assets目錄一定要按照正確的流程創(chuàng)建。如果不是正確的流程,一定要在gradle中指明它的路徑;
2 assets目錄的位置不受限制,可以隨便指定,關(guān)鍵是gradles里面的路徑;
3 src下默認(rèn)的main目錄是所有flavors共有的資源。每個(gè)flavors與main的資源只能夠合并,不能替換;
4 為不同的falvors提供不同的assets資源時(shí),assets資源一定要?jiǎng)?chuàng)建在每個(gè)flavors下;
5 配置資源的地方是sourceSets,在sourceSets中區(qū)分不同的flavors;而不是在productFlavors下區(qū)分不同的sourceSets。
補(bǔ)充:關(guān)于A(yíng)ndroidStudio assets目錄的一些坑
1.新建assets目錄

2.在A(yíng)ctivity中加載assets目錄中的圖片資源到bitmap
InputStream inputStream= null;
try {
inputStream = getAssets().open("timg.jpg");
} catch (IOException e) {
e.printStackTrace();
}
bitmap= BitmapFactory.decodeStream(inputStream);
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教。
- Android 多渠道打包詳細(xì)
- AndroidStudio工程打包aab文件
- Android使用Walle實(shí)現(xiàn)多渠道打包功能的實(shí)現(xiàn)示例
- Android打包上傳AAR文件到Maven倉(cāng)庫(kù)的示例
- Android Studio打包APK文件具體實(shí)現(xiàn)步驟解析
- Android Gradle多渠道打包的實(shí)現(xiàn)方法
- Android studio 4.1打包失敗和插件錯(cuò)誤提示的解決
- 淺談Android Studio 的四種打包方式
- Android Studio簽名打包的兩種方式(圖文教程)
- Android Studio如何打包生成APK
- 解決android studio 打包發(fā)現(xiàn)generate signed apk 消失不見(jiàn)問(wèn)題
- Android apk 項(xiàng)目一鍵打包并上傳到蒲公英的實(shí)現(xiàn)方法
- Android Studio中一套代碼多渠道打包的實(shí)現(xiàn)方法
- android studio 打包自動(dòng)生成版本號(hào)與日期,apk輸入路徑詳解
- Android 多渠道(友盟)打包教程分享
- Android 多渠道打包進(jìn)階版
相關(guān)文章
探討:android項(xiàng)目開(kāi)發(fā) 統(tǒng)籌兼顧 需要考慮的因素
本篇文章是對(duì)基于android項(xiàng)目開(kāi)發(fā) 統(tǒng)籌兼顧 需要考慮的因素進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-06-06
Android實(shí)現(xiàn)自定義加載框的代碼示例
本篇文章主要介紹了Android實(shí)現(xiàn)自定義加載框的代碼示例,App在與服務(wù)器進(jìn)行網(wǎng)絡(luò)交互的時(shí)候,有個(gè)提示加載框,有興趣的可以了解一下。2017-02-02
Android實(shí)現(xiàn)Service重啟的方法
這篇文章主要介紹了Android實(shí)現(xiàn)Service重啟的方法,涉及Android操作Service組件實(shí)現(xiàn)服務(wù)重啟的功能,需要的朋友可以參考下2015-05-05
解決Android SELinux權(quán)限問(wèn)題記錄分析
這篇文章主要為大家介紹了解決Android SELinux權(quán)限問(wèn)題記錄分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-11-11
Android 基于agora 開(kāi)發(fā)視頻會(huì)議的代碼
這篇文章主要介紹了Android 基于agora 開(kāi)發(fā)視頻會(huì)議,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-01-01
Android開(kāi)發(fā)筆記 改變字體顏色的三種方法
在TextView中添加文本時(shí)有時(shí)需要改變一些文本字體的顏色,今天學(xué)到了三種方法,拿出來(lái)分享一下2012-11-11
Android編程實(shí)現(xiàn)添加低電流提醒功能的方法
這篇文章主要介紹了Android編程實(shí)現(xiàn)添加低電流提醒功能的方法,涉及Android廣播監(jiān)聽(tīng)及電源監(jiān)控等相關(guān)操作技巧,需要的朋友可以參考下2017-09-09

