先說明一下總體須要注意的地方html
1在Android studio創建項目的時候,要注意包名和原來的徹底一致,否則會有不少須要改動.java
2依賴的jar必定必定要找齊,否則新建項目引用不到,要麼從新找包,嚴重的話,那部分代碼要重寫,影響很惡劣...android
3Android studio的編譯器有點蠢.引用了多餘的包編譯會經過,可是debug會報錯.此事要重點排查android.support:appcompat-v7和com.android.support:support-v4包.這2個包頗有多是多餘的,lib那裏記得刪了.api
而後,我建議的遷移順序是android-studio
對於圖片文件,文件夾名從drawable-XX改成mipmap-XXapp
//之前的寫法 <item android:drawable= "@drawable/actionsheet_bottom_pressed" android:state_focused="true"></item> //如今的寫法 <item android:drawable="@mipmap/actionsheet_bottom_pressed" android:state_focused="true"></item>
不照作的話預覽視圖那裏就會提示eclipse
Couldn't resolve resource @drawable/actionsheet_bottom_pressed Failed to convert @drawable/actionsheet_bottom_pressed into a drawable <item> tag requires a 'drawable' attribute or child tag defining a drawable
另外.奇葩文件的命名要改ide
好比我以前發現有這樣的圖片actionsheet_bottom_pressed.9.png.在Android studio引用@mipmap/actionsheet_bottom_pressed"的話引用不到...gradle
爲了圖快速解決問題我就只能改文件名,而後批量替換(replace )了.ui
color也是
@color/white → @android:color/white
萬惡的傻逼eclipse用的ansi(window-1252)編碼.要改爲無bom 的UTF-8(我用notepad++轉的,命令行批量處理,我不會...).否則Android studio沒法識別其中的中文,我再說幾遍,無bom 的UTF-8,無bom 的UTF-8,無bom 的UTF-8,無bom 的UTF-8......
強調無bom是由於不照作會有這個錯誤
非法字符: '\ufeff'
Android studio是基於文件目錄的管理.在外部打開對文件CRUD,過一段時間以後,IDE那邊會自動同步
drawable→_→mipmap
2015-11-20更新:
關於依賴項的引入,第三個參考連接裏面就寫的至關好,可是不全面.要結合他的例子去看.這裏我除了複述他的觀點,我會再補充一些更具體的內容.
jar比較簡單.
以最新版的Android studio(1.5)爲例.把eclipse裏libs裏的jar包拖到Android studio模塊裏面的libs文件夾.待Android studio同步過來後,全選這些*,jar.而後點擊add as library.
正常狀況下.在該模塊的build.gradle文件中,dependencies下面會有剛剛添加過的包的編譯文件指令.
好比
compile files('libs/baidumapapi_v3_5_0.jar') compile files('libs/com.umeng.fb.5.4.0.jar') compile files('libs/gson-2.3.1.jar') compile files('libs/locSDK_5.2.jar') compile files('libs/nineoldandroids-2.2.0.jar') compile files('libs/umeng-analytics-v5.5.3.jar')
代碼引用的包沒有出錯,即說明引入成功.
我也是拖入libs裏面.而後在模塊的build.gradle中android裏面插入
sourceSets { main { jniLibs.srcDirs = ['libs'] } }
本來在eclipse中,能夠直接新建一個Android工程,而後別的項目以library的方式引用它.但到了Android studio,這種工程換了一種更精確的說法,叫module/模塊.
因而本來在eclipse中A項目引用B項目的場景,在Android studio中會被描述爲A模塊依賴B模塊.
我再描述一下整個過程
項目B的build.gradle裏面,要改3個地方
1.apply plugin: 'com.android.application'改成apply plugin: 'com.android.library'
表明B是一個類庫
2.去掉applicationId
直接註釋(// applicationId "com.XXXXXX")便可
不然會出現這個錯誤
Error:Library projects cannot set applicationId. applicationId is set to 'com.XXXXXX' in default config.
3.(可選項)排除一些文件
packagingOptions { exclude 'META-INF/LICENSE.txt' exclude 'META-INF/license.txt' exclude 'META-INF/LICENSE' exclude 'META-INF/DEPENDENCIES.txt' exclude 'META-INF/NOTICE.txt' exclude 'META-INF/NOTICE' exclude 'META-INF/DEPENDENCIES' exclude 'META-INF/notice.txt' exclude 'META-INF/dependencies.txt' exclude 'META-INF/LGPL2.1' exclude 'META-INF/ASL2.0' }
在個人場景中爲A項目裏面import B module.
(見第四個連接,這裏直接複製他寫的過程)
1
|
compile project(':Volley')
|
這個過程完成以後,
1.在A module裏的build.gradle裏面會多出 compile project('moduleB')
2.setting.gradle裏面會自動include模塊B
3.項目裏面多出一個咱們新建的模塊的目錄,把導入的模塊的內容都導入過來
因爲A和B項目裏面都有AndroidManifest.xml文件.
而且在application裏面的android:name節點內容不一致,致使合併的時候產生了衝突,這個時候.咱們須要對A項目裏的節點進行衝突處理.它同步的時候有個提示的.
<application android:name="com.xxxx" tools:replace="android:name" >
在A項目的AndroidManifest.xml文件裏面對節點進行替換便可.也就是上面的tools:place=''android:name'.
關於遷移,能夠參照官方的指導(第8個連接)
體會:暫時遇到這些問題,我想,既然遷移這麼蛋疼,那麼這破事我之後能不作就不作,必須作,就等我整理強迫症發做後再作好了.......