將Eclipse代碼導入到AndroidStudio的兩種方式

版權聲明:html

歡迎轉載,但請保留文章原始出處android

做者:GavinCT編程

出處:http://www.cnblogs.com/ct2011/p/4183553.htmlapp

說到使用AndroidStudio,除了新建的項目,咱們都會面臨的問題是原先Eclipse的代碼該怎麼導入到AndroidStudio中使用。
這方面相關的資料還比較少,本身摸索了一下,總結出這篇博客,但願能讓開發者少走些彎路。
OK,進入正題。eclipse

Google爲了讓咱們更加方便的使用AndroidStudio,提供了兩種導入Eclipse代碼的方式:一種兼容Eclipse,一種是全新的Android Gradle Project.
這裏,咱們先從兼容模式提及。maven

兼容模式

這種模式下,保證了Eclipse時代的代碼目錄結構,總體操做和使用和Eclipse也差很少。
最重要的,當你使用AndroidStudio時,你或者其餘人也能夠方便的使用Eclipse,互不干擾。ide

實現步驟

1. 從Eclipse中導出Gradle build files

  • 在Eclipse菜單中 File --> Export-->Generate Gradle build files
    01
  • 接下來會到達警告界面,這裏會提示AndroidStudio能夠直接導入ADT的工程,先過,後面有直接導入的講解。
    02
  • 選中你的項目工程,包括主工程和庫工程(Library)。
    03
  • 確認生成
    04

2. 修改導出文件參數

導出後,因爲adt好久沒更新,須要手動改一些參數,才能保證正常使用。
爲了保證可以講解的更清晰,下面分狀況講解一下:gradle

沒有庫工程,只有主工程

這種狀況下你看到的目錄是這樣的
05ui

  • 首先須要更改的是 build.gradle 文件
    AndroidStudio 1.0 ~ 1.0.2 使用的都是 Android Gradle plugin 1.0.0,所以須要將圖中紅框內的 0.12.+ 改成 1.0.0
    06
  • 而後還須要更新Gradle版本,指定爲所須要的2.2.1
    在 /gradle/wrapper/gradle-wrapper.properties裏面
    07

含有庫工程

其實改動方法和上面同樣,只須要注意是改動整個項目的build.gradle和 /gradle/wrapper/gradle-wrapper.properties。
而不要嘗試去主工程或者庫工程裏面找build.gradle
08google

3. 導入AndroidStudio

  • 進入到AndroidStudio中,選擇導入非AndroidStudio工程
    09
  • 找到須要導入的工程目錄,能夠看到圖標和Eclipse建立的工程不同。
    10
  • 點擊OK,進入漫長的加載過程,以後就能夠正常使用了。
    11

已經建立過工程的打開AndroidStudio會直接進入之前的工程
這時候能夠選擇File-->Import Project, 選中後點擊ok
12

兼容模式下的bug

使用IDE的打包:
13

在兼容模式只打主工程的,庫工程沒有加入到apk中,致使沒法正常運行。
截止到1.0.2,AndroidStudio依然存在這個bug。
由於這個bug的存在,你在兼容模式可使用AndroidStudio編程,打包時開啓Eclipse。

OK,兼容模式介紹到這裏。 咱們開始介紹主角: Android Gradle Project。 這裏必須說明的是Google更但願咱們使用這種方式,若是沒有什麼團隊的壓力,仍是使用這種吧。

使用新的目錄結構

轉換目錄結構

  • 打開Import
    • 新用戶:
      14
    • 老用戶: File-->Import Project
      15
  • 直接找到原有的Eclipse工程
    • 單一工程直接導入便可。
    • 有庫工程的須要注意,導入必定要指向主工程,而不是整個項目的目錄。指向項目目錄是沒法進行轉換的。
      16
  • 指定目標路徑
    17
  • 這個地方須要詳細說一下
    18
    這裏上面兩個選項暫且不說,勾選上。
    最後一項提一下: 將Module名建立爲camelCase風格。
    駝峯式,這個搞Java的都會熟悉,camelCase表示首字母小寫的駝峯式風格,CamelCase表示首字母大寫的駝峯式風格。
    不勾選這個選項意味着你原先的工程名是啥樣,轉換完就是啥樣。
    這裏的AndroidStudio會去分析Eclipse工程下的. project文件,裏面的name就是你在Eclipse中看到的工程名。(沒有此文件時會使用此工程的文件夾名。)
    19
    固然也有例外,好比countly-sdk-android轉換完就成了countlysdkandroid,下劃線我就不知道了,這個沒有再仔細研究規則,不過CamelCase會保持正常。
    這裏我比較喜歡讓Module首字母大寫(不知道爲啥看這首字母小寫難受),原來的工程就是CamelCase風格,我就不勾選了。
    固然若是這裏沒注意直接轉換成了camelCase但最後又不喜歡怎麼辦? 能夠看後面《如何更改Module名稱》部分。
    OK,配置完點擊Finish便可

  • 以後須要通過一段時間的轉換。成功後能夠看到import-summary.txt,這個文件很是有用,後面會講到。
    20

到這裏,你的應用其實已經能夠經過AndroidStudio正常編譯,你也能夠寫代碼去了。
但我但願你還能繼續看下去,由於這個成功後彈出來的import-summary.txt寫了些很重要的東西。

帶你看懂import-summary.txt

Manifest Merging

Your project uses libraries that provide manifests, and your Eclipse
project did not explicitly turn on manifest merging. In Android Gradle
projects, manifests are always merged (meaning that contents from your
libraries' manifests will be merged into the app manifest. If you had
manually copied contents from library manifests into your app manifest
you may need to remove these for the app to build correctly.

這段應該都能看懂,無非就是說你Library的清單文件有效啦。
不用手工拷貝到主工程的清單文件中了。之前拷貝過的,要移除才能正確build。

Ignored Files(這個最重要)

之因此說這部分重要,是由於AndroidStudio經過這段文字告訴了你,它導入的時候忽略了哪些文件。
也就是說這部份內容,它沒給你拷進來,你要是不去本身拷貝,那這部分你新Gradle工程裏面就沒有了。
這裏選一些典型的ignore文件來看一下:

From SDK:
* proguard-project.txt
* proguard.cfg
From UI:
* cert\
* cert\cert
From CrosswalkWebview:
* ant.properties
* build.xml
From SlidingMenuLibrary:
* LICENSE.txt
* pom.xml

給上面的忽略文件分分類:

  • 確實不須要的:混淆文件、ant的ant.properties與build.xml、maven的pom.xml。
  • 須要再次聲明的: LICENSE.txt。不聲明屬於盜版侵權啊~~
  • 自定義文件夾和文件:cert。 這個文件夾是本身建立的,不屬於Android規定的目錄,因此AndroidStudio沒給拷貝。

須要留意你的Ignored Files部分,並根據本身的須要手工拷貝到新工程中。

Replaced Jars with Dependencies & Replaced Libraries with Dependencies

在Replaced Jars with Dependencies部分,有以下文字:

android-support-v4.jar => com.android.support:support-v4:21.0.3
gson-2.3.jar => com.google.code.gson:gson:2.3
joda-time-2.6.jar => joda-time:joda-time:2.6

能夠看到jar被替換了。 能夠看到工程裏面沒有了當初添加的jar包。那麼jar包去哪了呢?
暫時先留個懸念。
咱們繼續來看 Replaced Libraries with Dependencies部分

ActionbarLibrary =>
    com.actionbarsherlock:actionbarsherlock:4.4.0@aar
    com.android.support:support-v4:21.0.3

能夠看到ActionbarSherlock被替代爲了aar(Android ARchive ,jar : Java ARchive)。關於aar的介紹能夠看這裏,本文就再也不詳細展開了。

能夠看到的是Library和jar都被替換了,但是你在當前工程裏再也找不到了。這是爲何?

跟我來看下面的操做:

  • 在Module上右擊,選擇Open Module Settings
    21
  • 切換到Dependencies
    22
  • 點擊右側的加號添加,選擇Library dependency
    23
  • 能夠看到這個界面:
    24

OK,到這裏就能夠知道真相了,在AndroidStudio中你能夠添加在線的庫或jar包,添加完成後你就能夠和平時同樣正常使用。
而你的同事在打開這個工程的時候會即時下載,保證大家的代碼都能正常運行。
這也是爲何當你的工程轉換完畢後,有些jar和Library消失的緣由。他們被轉成在線的了。

Moved Files

這部分在講你的目錄結構變化,基本上能夠認爲他在廢話,沒什麼看的必要了。

Next Steps & Bugs

呵呵,略過吧

最後一句

This import summary is for your information only, and can be deleted
after import once you are satisfied with the results.

你一旦以爲本身的工程沒問題了,就能夠把這個文件刪除了。

導入AndroidStudio工程注意

經過上面的步驟,你的項目已經轉換了目錄結構,這時候你能夠提交代碼,供其餘同事下載使用了。
其餘同事把代碼下載下來,他們所須要引入的是一個Android Gradle Project了。

  • 新用戶
    • 若是項目中有.idea之類的IntelliJ的文件,開始選擇的應該是Open an existing Android Studio project,而不是Import Non-Android Studio project。
    • 若是你下載下來的代碼裏面只有gradle的文件,即便仍是要選Import Non-Android Studio project。
  • 老用戶依然使用: File-->Import Project

這裏須要提醒的是,對於含有庫工程的項目而言, 須要指定整個項目的目錄,僅僅指定主工程是沒用的。

到這裏咱們須要停下來總結一下:

  • 若是你導入的是一個Eclipse工程,那麼指定主工程目錄。AndroidStudio經過分析來幫你完成轉換。
  • 若是你導入的是一個AndroidStudio工程,那麼指定整個項目的目錄 。

附: 如何更改Module名稱

在Module上右鍵refactor--> rename ,固然能夠看到有快捷鍵shift + F6, 這樣就能夠改變Module的名稱了。
可是尚未結束,這樣沒有更改引用這個Module的地方。
若是他是一個庫工程,你還須要繼續去查看引用它的地方並進行修改。主要是其餘Module的Gradle文件。

Tips:
選中Module,ctrl+c便可複製工程名,在相關Gradle文件中ctrl+v替換成新的名稱便可。

最後,別忘了,settings.gradle,這裏include的module名稱也須要更改。 至此,算是修改結束。

一切修改完畢,點擊彈出提示中的Sync Now,讓工程從新構建
25
構建結束後就一切正常了。
固然你若是對文件夾的名稱也看着不順眼,也能夠去修改文件夾名稱,改變後記得從新導入便可。

總結

以上就是兩種導入的方式的介紹,整體來講第一種適合無奈的時候提早熟悉AndroidStudio,第二種則是更推薦的方式。 不管採用哪種,都但願你能儘快的接觸AndroidStudio,體驗它的強大。

相關文章
相關標籤/搜索