2018年4月25日水曜日

[安藤]android studio 升級為3.1版的時候遇到的編譯問題與在android 8.0 遇到的google drive app bug

這次升級的痛苦程度不亞於之前遇到的exit 1 魔咒... Orz

主要的問題是android studio 3.1的log相關的ui有很大的改變,
一開始根本就不知道詳細的log在哪裡。出錯的時候只看紅字的exception,卻又完全沒有提示到底是哪裡有問題,只給了你一堆exception xx more...

用之前的最終解決方案:build setting裡面加上 --debug --stacktrace,這些訊息也不會出現。也一直找不到討論...

直到搜尋到有人提醒「可以在Run/Build configuration裡面加上一個Gradle的指令,參數指定為build」,才看到Debug console的出現。而這才是真正該提到的解決問題的起點。

會顯示完整錯誤的debug console長這樣:


然後開始解決遇到的問題:

AAPT2相關:
  • android:color/transparent之類的參數在AAPT2裡面已不給用。請自行定義@color/transparent
  •  <animated-vector> tag不被支援。

lint的錯誤被提升到會被abort的等級。而且麻煩的是,並不會一口氣列出全部的錯誤。可以一個個的解完重編到全部處理完。也可以強制跳過。
若要強制跳過的話,在各個module的build.gradle裡面加上:
android.lintOptions {
    abortOnError false}
有遇到模組裡面需求了特殊的硬體權限,卻又沒有宣告在manifest裡面,就會導致lint error。


若是有用到第三方的套件需要從網路自動裝的話,build.gradle的repositories需加上設定:
    repositories {
        jcenter()
        google()
    }
假如是從2.3升上來的,通常會少「google()」這個參數。


解完問題之後,記得要切換Run/Build configuration回到Android App才能回到正常的編譯流程。另外要注意的是,gradle的build流程假如需要編譯的模組很多很大的時候,會相當緩慢。建議把記憶體開大一點。(gradle.properties裡面加上參數
org.gradle.jvmargs=-Xmx2048m

然後找尋其他的資料的時候才發現,其實Debug console只要點選下圖標記的那個「toggle view」就會出現了... Orz  這樣大家就可以少走點冤枉路。



P.S: 在android 8.0使用google drive app點選製作好的已簽名apk進行下載安裝測試,可能會遇到「安裝包解析錯誤」的問題(就算是打開「允許安裝不明來源檔案」一樣會有問題)。這時請在google drive app上面改成長壓檔案,選擇下載,下載完畢之後再從系統事件條,或是檔案管理員的下載資料夾裡面點選檔案安裝,就會成功。


參考文件:
Android Studio 3.0正式版填坑之路   這一篇真的幫了不少忙。文中沒提到的其他細節這裡都有。

0 件のコメント:

コメントを投稿