Android 使用gradle打包Assets目錄的案例
現(xiàn)在提起Android開發(fā)工具,大多人第一個想到的肯定是Android Studio。谷歌專門為Android開發(fā)者推出的這款I(lǐng)DE,以其強大的功能迅速擊敗的老牌的eclipse。
與此同時,eclipse依賴的ant,也逐漸被更加強大更加靈活的gradle所取代,成為Android開發(fā)領(lǐng)域首選構(gòu)建工具。
強大并不意味著沒有坑。在使用gradle的過程中,特別是打包assets目錄 下的一些資源時,筆者真沒想到你是這樣的assets,遇到了若干問題,在此處做一個整理。
如何創(chuàng)建assets目錄
老實說,筆者在這個地方真的吃過大虧。在eclipse時代,筆者創(chuàng)建assets目錄時,習慣性地操作是“右鍵 -> new -> Directory”,然后只需將文件夾命名為“assets”即可。
到了Studio下,還是同樣的操作,結(jié)果卻有可能導致打包的apk中assets資源丟失了?。。∷粤晳T一定要改,Android Studio下assets目錄正確的創(chuàng)建姿勢是:
1 在你的src或者main目錄上右鍵new;
2 在Folder菜單上找到Assets Folder,確定即可。
有個問題提一下,如果此時你的視圖是Project,新創(chuàng)建的assets目錄因為是空的,部分情況下會看不見(很詭異),這時你只需要將視圖切換為Android,就能正??匆娏?。
assets目錄無法打包進gradle
如果你的某些資源放置在assets目錄下,本地編譯能夠正常訪問,構(gòu)建打包卻死活讀取不到的時候,建議你把打包生成的apk拿出來,將后綴改成zip,然后解壓縮如下圖所示,確定一下你的assets目錄下的資源是否真的被打包進去了。提醒一下,不要試圖修改里面的內(nèi)容,都是驗過簽的。
如果沒有,原因可能是你在創(chuàng)建assets目錄時,并沒有按照上面的流程,而且gradle的構(gòu)建腳本里面也沒有指明assets資源的路徑,因此直接導致gradle懵逼。
解決辦法有兩個:
1 按照上面的流程重新創(chuàng)建assets目錄;
2 在gradle里面android括號內(nèi),指定assets的路徑即可,如
sourceSets { main { assets.srcDirs = ['src/main/assets'] } }
當然,需要根據(jù)你的具體情況來看,如果你為不同版本準備了不同的assets資源,就要添加在對應(yīng)的flavors中。
assets目錄下的同名文件
因為項目的需要,筆者要在assets目錄下為不同的版本(360和demo)提供不同的資源。但是資源的名稱也都是相同的。
筆者最初采取了在assets下創(chuàng)建文件夾對內(nèi)容加以分類,同時配置不同F(xiàn)lavors的做法,如下圖所示。
本以為萬事無虞,結(jié)果卻讓人很無奈。
測試發(fā)現(xiàn),這種方式并不奏效——assets目錄仍然在main目錄下,默認的仍然是一個文件夾(360或者demo)下的內(nèi)容作為最終打包的資源,并沒有根據(jù)版本區(qū)分開來。
后來采取的做法是在每一種版本(即每一種flavors)都創(chuàng)建一個assets目錄,同時更改sourceSets,為每個Flavors提供不同配置,如下圖所示,通過這樣來區(qū)分不同的資源依賴,最后也證實可行。
總結(jié)一下
1 assets目錄一定要按照正確的流程創(chuàng)建。如果不是正確的流程,一定要在gradle中指明它的路徑;
2 assets目錄的位置不受限制,可以隨便指定,關(guān)鍵是gradles里面的路徑;
3 src下默認的main目錄是所有flavors共有的資源。每個flavors與main的資源只能夠合并,不能替換;
4 為不同的falvors提供不同的assets資源時,assets資源一定要創(chuàng)建在每個flavors下;
5 配置資源的地方是sourceSets,在sourceSets中區(qū)分不同的flavors;而不是在productFlavors下區(qū)分不同的sourceSets。
補充:關(guān)于AndroidStudio assets目錄的一些坑
1.新建assets目錄
2.在Activity中加載assets目錄中的圖片資源到bitmap
InputStream inputStream= null; try { inputStream = getAssets().open("timg.jpg"); } catch (IOException e) { e.printStackTrace(); } bitmap= BitmapFactory.decodeStream(inputStream);
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。如有錯誤或未考慮完全的地方,望不吝賜教。
- Android 多渠道打包詳細
- AndroidStudio工程打包aab文件
- Android使用Walle實現(xiàn)多渠道打包功能的實現(xiàn)示例
- Android打包上傳AAR文件到Maven倉庫的示例
- Android Studio打包APK文件具體實現(xiàn)步驟解析
- Android Gradle多渠道打包的實現(xiàn)方法
- Android studio 4.1打包失敗和插件錯誤提示的解決
- 淺談Android Studio 的四種打包方式
- Android Studio簽名打包的兩種方式(圖文教程)
- Android Studio如何打包生成APK
- 解決android studio 打包發(fā)現(xiàn)generate signed apk 消失不見問題
- Android apk 項目一鍵打包并上傳到蒲公英的實現(xiàn)方法
- Android Studio中一套代碼多渠道打包的實現(xiàn)方法
- android studio 打包自動生成版本號與日期,apk輸入路徑詳解
- Android 多渠道(友盟)打包教程分享
- Android 多渠道打包進階版
相關(guān)文章
android?viewflipper實現(xiàn)左右滑動切換顯示圖片
這篇文章主要為大家詳細介紹了android?viewflipper實現(xiàn)左右滑動切換顯示圖片,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-05-0530分鐘搞清楚Android Touch事件分發(fā)機制
30分鐘搞清楚Android Touch事件分發(fā)機制,Touch事件分發(fā)中只有兩個主角:ViewGroup和View,想要深入學習的朋友可以參考本文2016-03-03android 關(guān)于利用簽名的SHA1進行安全校驗的方法之一(推薦)
下面小編就為大家?guī)硪黄猘ndroid 關(guān)于利用簽名的SHA1進行安全校驗的方法之一(推薦)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-01-01Android使用ScrollView實現(xiàn)滾動效果
這篇文章主要為大家詳細介紹了Android使用ScrollView實現(xiàn)滾動效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-01-01Android開發(fā)中的幾種網(wǎng)絡(luò)請求方式詳解
本篇文章主要包括Android中的幾種網(wǎng)絡(luò)請求方式詳解,具有一定的參考價值,有需要的可以了解一下。2016-11-1120.5 語音合成(百度2016年2月29日發(fā)布的tts引擎)
編寫手機App時,有時需要使用文字轉(zhuǎn)語音(Text to Speech)的功能,比如開車時閱讀收到的短信、導航語音提示、界面中比較重要的信息通過語音強調(diào)2016-03-03一文了解Android?ViewModelScope?如何自動取消協(xié)程
這篇文章主要介紹了一文了解Android?ViewModelScope?如何自動取消協(xié)程,文章圍繞主題站展開詳細的內(nèi)容介紹,具有一定參考價值,感興趣的小伙伴可以參考一下2022-07-07Android自定義View實現(xiàn)拖動自動吸邊效果
這篇文章主要為大家詳細介紹了Android自定義View實現(xiàn)拖動自動吸邊效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-06-06Android Studio中CodeStyle模板的配置方式
這篇文章主要介紹了Android Studio中CodeStyle模板的配置方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-03-03Android開發(fā)5:應(yīng)用程序窗口小部件App Widgets的實現(xiàn)(附demo)
本篇文章主要介紹了android應(yīng)用程序窗口小部件App Widgets的實現(xiàn),具有一定的參考價值,有需要的可以了解一下。2016-11-11