




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
【移動應(yīng)用開發(fā)技術(shù)】老項目遷移AndroidStudio3.0遇到的坑
AndroidStudio3.0剛剛發(fā)布兩天(版本控的我~),便迫不及待的升級了,升級前也明白這次的版本跨度較大,老項目可能存在很多的問題,沒成想還是從中午折騰到了晚上十點.不過結(jié)果還不錯,成功的跑起來了項目.列出踩過的坑,希望后面要升級的小伙伴遇到類似的問題可以做個參考;1.升級安裝升級方法:1.直接用自帶的更新工具操作步驟:>菜單欄>Help>CheckforUpdates..(前提網(wǎng)絡(luò)要絕對的暢通,你懂的)2.手動的下載新的版本下載地址/studio/archive.html#android-studio-3-0?utm_source=&utm_medium=website(國內(nèi)可以訪問)升級完成后,打開原有項目,在經(jīng)過一段時間到indexing后如果你的項目可以運行,OK,恭喜你,接下來的內(nèi)容,你可以選擇忽略,因為你的項目很nice,啥問題沒有(我不相信你啥問題都沒有~畢竟我踩了這么多的坑);
如果項目存在配置的問題,那么便可能產(chǎn)生如下問題:2.問題1.配置了騰訊的資源文件壓縮插件導(dǎo)致的異常我的項目在indexing后出現(xiàn)的第一個問題
看到這個異常我的第一反應(yīng)就是項目中配置了騰訊的資源文件壓縮插件,果斷移除;移除步驟:
1.在項目級別的build.gradle也就是最外層的build.gradle文件中的dependencies節(jié)點中,移除
2.在應(yīng)用級別的build.gradle的頂部移除
3.第二條中提到build.gradle文件中相關(guān)的資源壓縮配置需要一并的移除;
上述操作完后,同步代碼,該問題KO;2.一直卡在Refreshing項目第一條中的問題解決后,我出現(xiàn)了
這種提示,在正常的流程中,如果不出現(xiàn)第一個問題,會首先出現(xiàn)這個提示,意思是升級現(xiàn)在項目的編譯插件,相信之前升級過AS版本的同學在第一次運行新版本的時候見過這個提示,直接點擊update按鈕就行了.如果不想接著踩坑那么點擊Dont'treminmdmeagaingforthisproject按鈕就可以了,它代表你還是用之前版本的插件來運行當前項目,也就不會出現(xiàn)后面一大串的問題;這里直接點擊update按鈕;
點擊之后如果你網(wǎng)絡(luò)不暢通的話就會一直的之所以會這樣,是因為
點擊該按鈕后實際上做了兩件事情在主項目的build.gradle文件中的dependencies節(jié)點中更改了
在項目目錄中的gradle>perties文件中的distributionUrl字段更改了
這兩個文件修改后AS就會去下載/distributions/gradle-4.1-all.zip這個文件,不用點什么奇技淫巧,就等AS下載完吧(基本完不了)這里給出兩種解決方案:
兩種解決方案的前提條件是先把該文件下載下來,AS下載的奇慢,那么把/distributions/gradle-4.1-all.zip扔到迅雷中,分分鐘下載完成(迅雷功能不止于此~);把文件放到本地的Tomcat服務(wù)器,或者IIS服務(wù)器中,或者免費的七牛云服務(wù)中,獲取這個文件的下載地址,修改perties文件中distributionUrl的值為你的下載地址,關(guān)閉AS,重新打開(親測可行);找到.gradle文件夾路徑:windows一般在C:\Users\<當前登錄用戶名>.gradle,
mac是在:用戶/(當前用戶目錄)/.gradle,解壓下載好的文件到該目錄中,關(guān)閉AS,重新打開(未親測);3.修改輸出apk的文件名導(dǎo)致的異常第二條問題解決后,出現(xiàn)了
點擊OpenFile定位到應(yīng)用級別的build.gradle文件中的這個位置
這個是自己之前配置的可以控制AS輸出的apk文件的名稱,新版本不能這樣配置了,看官方的引導(dǎo)可以改成
效果和之前差不多,直接更改,問題KO4.之前項目中配置了第三方APT插件導(dǎo)致的異常如上圖這個異常是我折騰最長時間的問題,各種百度,Google最終得知和新版本AS3.0中自帶了APT處理插件有關(guān),因為自己之前配置的第三方的APT插件,所有它們沖突了~,那么移除則異常KO;移除步驟
1.在項目級別的build.gradle也就是最外層的build.gradle文件中的dependencies節(jié)點中,移除
2.在應(yīng)用級別的build.gradle的頂部移除
3.在應(yīng)用級別的build.gradle的dependencies節(jié)點中,替換所有用apt開頭的引依賴為annotationProcessor例如
上面三步操作完成后,同步項目,問題解決5.BuildTool最低版本異常這個異常出現(xiàn)就顯而易見了,AS3.0最低支持的BuildTools插件是26.0.2版本,別問我BuildTools是啥,我也不知道(顧名思義,AS的編譯工具);BuildTools的版本改到26.0.2版本,同步代碼就好了,如果你的SDK中沒有下載BuildTools26.0.2版本,AS會自動的提示你去下載,下載完同步代碼,即可;6.BuildTool庫項目版本不統(tǒng)一問題
AS3.0對于庫項目的build.gradle的配置也進行了干預(yù),官方說可以加快編譯速度,想想也是,庫項目都用不同版本的BuildTool,編譯起來肯定慢;所以這里點擊OpenFile之后,定位到的build.gradle文件,修改里面的buildToolsVersion節(jié)點為26.0.2即可如果項目中的庫項目較多,建議將buildToolsVersion版本配置到perties文件中,然后項目中的庫項目都引用該配置,改一處,則整個項目的buildToolsVersion配置都改了,別問我咋配置的,因為這會跑題,自行百度7.multidex版本異常這個問題說的是AS3.0解析multidex1.0.2版本失敗,為什么失敗?因為現(xiàn)在google自家的依賴,全部都收回到了自家的CDN服務(wù)器了,之前在項目級的build.gradle文件中的repositories節(jié)點中配置jenter(),就可以獲取大部分的依賴(雖然慢了點),但是現(xiàn)在Google官方需要我們在repositories節(jié)點中配置上google(),作用就是獲取自家的依賴,而原先的jcenter()不需要動;而multidex是Google的依賴所以只用之前的jcenter(),肯定是解析不到它了.
配置例如
項目級的build.gradle文件中的有兩個repositories節(jié)點,都配置上google()同步項目,問題KO8.Lambda插件沖突
這個不用多說相信大家在準備升級AS3.0都知道,它的一大特性是支持了JAVA8,而項目之前為了能用Lambda,而用了第三方的插件,這里移除即可;移除步驟
1.在項目級別的build.gradle也就是最外層的build.gradle文件中的dependencies節(jié)點中,移除
2.在應(yīng)用級別的build.gradle的頂部移除
上面兩步操作完成后,同步項目,問題解決9.flavor配置異常
這個可以參考官方給出的文檔地址(網(wǎng)絡(luò)要絕對的通暢~)
問題出現(xiàn)在之前的flavor配置不能用了,別問我flavor是啥,你自己配置的你不知道~(主要作用,多渠道打包
想知道為什么這樣配置,可以看看官方文檔至此上述配置更改后,我的項目同步代碼不報錯了~,但是坑遠遠沒有填完,繼續(xù)10.AAPT2編譯異常這一大串的異常在編譯的時候報出,我在第一次導(dǎo)入項目的時候遇到了,第二次導(dǎo)入其它項目的時候,竟然沒有遇到,對比之下得出問題是出在配置了高版本的support包的問題,當你把項目所有support包的版本配置到25.2.0的時候什么問題都沒有,但是配置成26.0.0或者27.0.0版本的時候就會出現(xiàn)這個問題(親測);解決方案1.使用低版本的support包,把項目所有support包的版本配置到25.2.0或者其它較低的版本2.配置perties中關(guān)閉AAPT2編譯,說人話就是在其中增加android.enableAapt2=false配置,再次編譯問題解決(推薦),例如
同步代碼,問題KO;11.方法找不到異常/或者有點莫名其妙的異常這兩個異常產(chǎn)生的的原因是因為第九條如果你升級了support包的版本的時候compileSdkVersion的版本沒有更改,親測如果你的support包更改到了26.0.0或以上的話,需要更改項目中所有的compileSdkVersion為26或以上
更改好,同步代碼,問題解決到這我的項目可以運行,可以調(diào)試了,以為終于KO了所有問題了,但是但是編譯輸入release包的時候內(nèi)存溢出了,WTF12.生成release包異??吹竭@個異常我是一臉的蒙蔽,各種百度,google都沒有說這個問題,咋滴,不讓用啦,手動打包啊~,但是到夜里的時候忽然靈光一現(xiàn),WTF,會不會是又是啥第三方依賴的問題,畢竟很多問題都是因為第三方的依賴,于是乎,連忙的注釋了,一大堆的項目級別的build.gradle文件中的一些依賴,經(jīng)過測試,定位到了美團的熱更新,然后移除了,相關(guān)的配置,然后一些正常~~移除步驟
1.在項目級別的build.gradle也就是最外層的build.gradle文件中的dependencies節(jié)點中,移除2.在應(yīng)用級別的build.gradle的頂部移除3.在應(yīng)用級別的build.gradle的dependencies節(jié)點中的依賴可以不移除(不移除也是可以正常生成apk文件的,只是熱更新無法使用),這個依賴如果移除了,那么你代碼中相關(guān)的熱更新代碼也需要移除,否則就是找不到相關(guān)的類了;**最后的最后,AS3.0算是徹底的用上了,編譯速度相比之前有沒有增快,新特性好不好用,有待后續(xù)的使用了.
希望大家在升級AS3.0的時候如果遇到和我相同的問題,可以做一個參考**下面我們在來看一篇經(jīng)常遇到的坑的經(jīng)典問題:最近AndroidStudio3.0版本正式推出,趁著項目剛發(fā)完版本,趕緊更新試試水,結(jié)果發(fā)現(xiàn)項目完全跑不起來,折騰了幾個小時才搞好。記錄一下填坑過程,希望能幫助其他同學。1.gradle和buildToolsVersion版本AndroidStudio3.0要求gradle版本為4.1,對應(yīng)的buildToolsVersion為26.0.2,然后記得在項目最外層的build.gradle添加google(),如果不添加將會導(dǎo)致某些官方依賴下載不了。2.module依賴方式變更原先依賴module使用的是compile,現(xiàn)在需要替換為api或implementation。
api:module編譯時可用,module的使用者編譯和運行時可用,這個和過時的compile一樣的。
implementation:module編譯時可用,module的使用者運行時可用,對于大量使用library的項目,可以顯著提高編譯時間,因為它可以減少構(gòu)建系統(tǒng)重新編譯一些module。
那么什么時候用api,什么時候用implementation呢?由于公司項目采用的是組件化開發(fā),有個commonmodule需要被各個組件依賴,一開始采用的是implementation,結(jié)果發(fā)現(xiàn)會導(dǎo)致別的組件無法引用common中的庫(common->Amodule,Amodule無法引用common依賴的庫)。
試驗過后得出結(jié)論,當這個module會被多次引用應(yīng)該使用api,不會被別的module引用使用implementation。
發(fā)一下我現(xiàn)在使用的方式compileOnly替換了provided,runtimeOnly替換了apk。3.apt插件更換apt插件已被廢棄,需更換為annotationProcessor。4.第三方庫不兼容問題·
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 企業(yè)服務(wù)質(zhì)量管理實戰(zhàn)指南
- 工作流程優(yōu)化辦公空間需求表
- 項目執(zhí)行過程中的經(jīng)驗教訓(xùn)總結(jié)與成果展示
- 寓言故事中的社會現(xiàn)象解讀與反思
- 藝術(shù)創(chuàng)作繪畫技巧知識題庫
- 智能制造產(chǎn)業(yè)鏈協(xié)同合作協(xié)議
- 制造業(yè)自動化技術(shù)應(yīng)用題庫
- 企業(yè)研發(fā)新產(chǎn)品試制合同
- 商務(wù)會議中的合作往來文書范本
- 體育產(chǎn)業(yè)發(fā)展項目投資協(xié)議
- 2024年江西泰豪動漫職業(yè)學院高職單招職業(yè)技能測驗歷年參考題庫(頻考版)含答案解析
- 《習近平法治思想概論(第二版)》 課件 第十六章 正確處理政治和法治的關(guān)系;第十七章 正確處理改革和法治的關(guān)系
- 《習近平法治思想概論(第二版)》 課件 18.第十八章 正確處理發(fā)展和安全的關(guān)系
- 2025年湖北孝感市直事業(yè)單位招聘現(xiàn)役軍人隨軍家屬20人歷年高頻重點提升(共500題)附帶答案詳解
- 2024年中國作家協(xié)會所屬單位招聘筆試真題
- 2025年貴州通服安順分公司招聘筆試參考題庫含答案解析
- 2025年廣州市黃埔區(qū)東區(qū)街招考社區(qū)居委會專職工作人員高頻重點提升(共500題)附帶答案詳解
- 法治信訪培訓(xùn)課件
- 鉛鋅選礦廠安全教育培訓(xùn)
- 某寺廟施工組織設(shè)計方案
- 伊斯蘭法 外國法制史 教學課課件
評論
0/150
提交評論