標籤:
最近從eclipse遷移了一個老項目到Android Studio,遷移的原因嘛,當然是65535的問題。遷移的過程中從編譯到打包,踩了一堆坑,在此記錄一下,希望能幫到,同樣被坑的同行
如何匯入
推薦使用直接匯入ADT的方式來進行匯入工作,這樣會自動為你添加依賴,構建好代碼的架構
選擇好eclipse的工程和要匯入的目標工程後,直接next -> finish 選項用預設選項
靜靜的祈禱,並等待匯入結束
開始慢慢填坑路
AS構建項目完成後,報錯是肯定的,先來看看第一個錯誤
命名不規範
這個錯誤很好理解,命名不規範的問題,按照要求改就可以了
.9不符合要求
.9不符合規範是一個很普遍的情況,eclipse對於.9的要求並不像 Android Studio 中那樣嚴格
eclipse項目中經常有這種 .9,四邊並沒有都沒有給像素
這裡我的處理方式 就是重新畫.9,給他加上邊線
libpng warning iCCP & libpng Error : Not a Png file
Not Png file 還好說找到檔案格式不對的檔案改尾碼就可以了,但是如果項目中很多圖片找不到怎麼辦呢? 後面再告訴你們。
還有libpng warning iCCP 就比較坑了,這個錯誤直接報到V7包裡面的資源,問題的原因,我也比較費解。如果誰知道希望留言告知一下
我的解決方案就比較暴力了,在主專案的build.gradle 檔案中做出如下配置
關鍵配置: aaptOptions.cruncherEnabled = false aaptOptions.useNewCruncher = false
就可以直接忽略掉libpng的 2個錯誤
AndroidManifest.xml merge衝突
eclipse中經常使用的庫工程,同樣可以在Android Studio中使用。在eclispe中庫工程的AndroidManifest.xml,與主工程的AndroidManifest.xml有相同的配置的時候是不會報錯的,但是在Android Studio 中這些都是不允許的
許可權的重複聲明
需要重複資料刪除的許可權
application 節點 重複的配置
allowBackup 重複設定
applcation 重複設定
解決方式有2種,刪除一個工程的設定,一般是刪除庫工程,第二種就是與編譯器的建議一樣寫tools : replace
這裡的tools 需要聲明一下才能使用
V4 包的錯誤
找不到類原因是V4包沒有,但是我的ec項目中是有v4包的,至於匯入後為什麼沒有了,我也不是很明白
build.gradle檔案中設定依賴 compile ‘com.android.support:support-v4:23.2.1‘ 就可以了
運行時記憶體不夠的問題
這個錯誤其實是JVM的錯誤,載入的內容過多,記憶體不夠。
解決方案,build.gradle中配置
dexOptions { javaMaxHeapSize "4g" }
這個配置一定要寫在 android{} 結點裡面
64K的問題
64k的問題直接採用的官方的方案,設定起來還是很簡單的
添加依賴 : compile ‘com.android.support:multidex:1.0.1‘
修改Application
@Override protected void attachBaseContext(Context base) { super.attachBaseContext(base); MultiDex.install(this); }
最後到此我的項目就可以運行了 BUILD SUCCESS !!! 完結撒花~~~~
==========================================分割線
在我以為已經完工的時候,我嘗試了一下打包,結果。。。 我再次懵逼了
打包的錯誤
我這裡的打包時打簽名的正式包,不是簽名的話,下面的錯誤是不會出現的。
layout.xml 檔案中自訂屬性錯誤
以前的項目中layout.xml自訂屬性聲明是直接跟包名的
xmlns:app="http://schemas.android.com/apk/res/com.xxx"
但是打包的時候會跟你報錯,Adnroid Studio 中建議寫成 res-auto
這種警告層級的東西,在打包時會成為錯誤爆出來
Error: Expected resource of type styleable [ResourceType]
這個錯誤就比較奇葩了,我的申明都是沒問題的。而且在編譯期間這個錯誤居然不會出現,
只有打包的時候才會出現,我又是吐了一口老血。所幸這個錯誤解決方案還是比較簡單,
那就是直接過濾掉。在出問題的類上加上註解
@SuppressWarnings("ResourceType") 就可以過濾掉了。
ValidFragment錯誤
也是一個比較費解的錯誤
直接改吧,在fragment上給上註解 @SuppressWarnings("ValidFragment") 同樣是過濾掉這個錯誤
MissingTraslasion 錯誤
這個錯誤是在String.xml 裡面沒有設定是否能夠被翻譯的配置造成,但是我們應用一般不用給這個設定,也沒見過報錯啊。內鬼就出在友盟的工程中有設定 values-zh 導致我們自己的工程也被影響要設定翻譯配置。
解決方案,直接在出問題的String.xml中添加配置
<?xml version="1.0" encoding="utf-8"?><resources xmlns:tools="http://schemas.android.com/tools" tools:ignore="MissingTranslation" ></resources>
HOlY SHIT!!!!!
作者已經吐血了
eclipse遷移到Android Studio 問題記錄