從eclipse到Android studio/遷移eclipse的Android項目到Android studio平臺的注意事項

總體要注意的地方

先說明一下總體須要注意的地方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

資源的引用(res)

values下string,id,等XML

res下其餘目錄的XML.

  對於圖片文件,文件夾名從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那邊會自動同步

java代碼中資源的引用

drawable→_→mipmap

 

2015-11-20更新:

依賴項的遷移

關於依賴項的引入,第三個參考連接裏面就寫的至關好,可是不全面.要結合他的例子去看.這裏我除了複述他的觀點,我會再補充一些更具體的內容.

 jar的遷移

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')

 代碼引用的包沒有出錯,即說明引入成功. 

 

二進制文件(so)的遷移

我也是拖入libs裏面.而後在模塊的build.gradle中android裏面插入

 sourceSets {
        main {
            jniLibs.srcDirs = ['libs']
        }
    }

 

project/modules的遷移

本來在eclipse中,能夠直接新建一個Android工程,而後別的項目以library的方式引用它.但到了Android studio,這種工程換了一種更精確的說法,叫module/模塊.

因而本來在eclipse中A項目引用B項目的場景,在Android studio中會被描述爲A模塊依賴B模塊.

我再描述一下整個過程

 

處理被依賴項目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'
    }

 

import moudule

在個人場景中爲A項目裏面import B module.

(見第四個連接,這裏直接複製他寫的過程)

    1. Goto File -> New -> Import Module.
    2. Android Studio Add Library
    3. Source Directory -> Browse the project path.
    4. Specify the Module Name – it is used for internal project reference.
    5. Android Studio Add Library - 2
    6. Let Android Studio build the project.
    7. Open build.gradle (Module:app) file.
    8. Add the following line with your module name in place of 「Volley」 in the dependencies block:
    9. It should look something like this:
    10. Android Studio Add Library 3

 

 這個過程完成以後,

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個連接)


 

 

 

 

 

體會:暫時遇到這些問題,我想,既然遷移這麼蛋疼,那麼這破事我之後能不作就不作,必須作,就等我整理強迫症發做後再作好了.......

 

 

 

參考連接:

  1. Android Studio drawable下的XML文件如何調用mipmap圖片資源?
  2. Android studio R文件找不到
  3. Android Studio Jar、so、library項目依賴
  4. Android Studio | How To Add A Library Project?
  5. How to import android project as library and NOT compile it as apk (Android studio 1.0)
  6. Error:Library projects cannot set applicationId. applicationId is set to 'com.gdtel.eshore.anroidframework' in default config.
  7. Android studio Gradle icon error, Manifest Merger
  8. Manifest Merger
相關文章
相關標籤/搜索