【Android開発】EclipseからAndroid Studioに移行する

Android Wearアプリの開発でAndroid Studioが必須になったり、Eclipseが重かったりして、そろそろAndorid Studioに移行する時期かなと感じてきました。
なので、「EclipseからAndroid Studioに移行しよう!」と思い、いざやってみたら色々なところでつまづいたので、メモとして書いておきます。
インポートするプロジェクトによって様々な問題が出てくると思うので、これをやれば絶対に出来るとは言えませんが、途中まではだいたい同じだと思うので、必要なところだけ参考程度に見ると良いかと思います。

今回必要なもの

  • Android Studioを実行可能なPC
    今回はMac OS X 10.9.3
  • 最新のAndroid Studio
    今回はAndroid Studio 0.8.2
  • Gradle
    途中で導入します

EclipseプロジェクトからGradleに必要なファイルをエクスポートする

EclipseからAndroid Studioに移行するためには、まず移行したいEclipseプロジェクトからGradleに必要なファイルをエクスポートする必要があります。なので、まずはエクスポートするところから始めます。

  1. Eclipseを起動し、「File」から「Export...」を選択



  2. 「Android」の中にある「Generate Gradle build files」を選択し、次へ



  3. そのまま次へ



  4. エクスポートしたいプロジェクトをチェックし、次へ



  5. エクスポートされるプロジェクトを確認し、「Finish」を押す。この際、エクスポートしたいプロジェクトで使用しているプロジェクトライブラリも一緒にエクスポートされる。(既にエクスポート済みのプロジェクトライブラリがある場合は、「Finish」が押せない状態になるので、その場合は下にある「force overriding of existing files」にチェックを入れる)



  6. エクスポートが完了すると、このようになります。選択したプロジェクトのフォルダ以下を確認すると、Gradleに必要なファイルが生成されています。


以上で、エクスポートは終わりです。

Gradleを導入する

Android Studioでは、Gradleというビルドツールを使用します。
そのため、Android Studioを起動する前にGradleを導入します。
  1. Gradleのダウンロードページ(http://www.gradle.org/downloads)にアクセスする



  2. 現在のAndroid Studioでは、現在のGradleの最新バージョン2.0には対応していないため、下の「Previous Releases」からバージョン1.10をダウンロードする



  3. ダウンロードが完了したら、任意の場所に移動し、解凍する

以上でGradleの導入は終了です。

build.gradleをAndroid Studioにインポートする

Eclipseのプロジェクトからエクスポートしたファイルの中に、build.gradleというものがあり、それをAndroid Studioでインポートすることによって、プロジェクトを読み込むことができます。
では、早速インポートしていきます。
  1. Android Studioを起動し、「Import Project...」を選択



  2. 先ほど生成したプロジェクトフォルダの下にある「build.gradle」を選択



  3. 先ほどGradleのディレクトリを置いた場所を指定



  4. 少し時間がかかるので、待つ



  5. インポートが完了すると、こんな感じに表示されます。

これでインポートは終わりです。
最初から何かしらエラーが出てると思いますが、だいたい一発で通ることは無いと思います。
なので、とりあえず無視して次に進みます。

build.gradleを編集する

Eclipseでエクスポートした「build.gradle」はそのままの状態だと間違いなくエラーが出るので、先にエラーを極力減らせるように編集します。
  1. 「apply plugin: 'android'」の 上に 以下のコードを追記
    buildscript {
     repositories {
      mavenCentral()
     }
     dependencies {
      classpath 'com.android.tools.build:gradle:0.12.+'
     }
    }
  2. 「apply plugin: 'android'」の 下に 以下のコードを追記
    repositories {
     mavenCentral()
    }

ここまで出来たら、ライブラリのインポートなどをやっていきます。
Android Studioでは下記の様なコードを書くことにより、自動的にライブラリをダウンロードしてきてくれます。(「android」セクションの上にある「dependencies」セクション)
dependencies {
 compile 'com.actionbarsherlock:actionbarsherlock:4.4.0@aar'
}

Gradleでのライブラリのインポートの書き方は、ライブラリのREADMEなどに書いてあると思いますが、以下の様な便利なサイトもあるので、ここから探すこともできます。
Gradle, please
http://gradleplease.appspot.com/

もし無い場合は、下記のようにライブラリプロジェクトを直接読み込ませることもできます。
dependencies {
 compile project(':プロジェクト名')
}

ライブラリプロジェクトは以下のようにしてプロジェクトに追加できます。
  1. プロジェクトを右クリックし、「Open Module Settings」を選択



  2. 左上の「+」ボタンをクリック



  3. 「Import Existing Project」を選択し、次へ



  4. ライブラリのパスを指定し、Finish



  5. モジュールの中に追加されていることを確認



  6. メインのプロジェクトを選択し、「dependencies」タブを選択



  7. 左下の「+」ボタンをクリックし、「Module dependency」を選択



  8. 先ほど追加したライブラリプロジェクトを選択し、OK



  9. 「Apply」または「OK」ボタンで変更を適用する

適用後にビルドし、「TOP-LEVEL EXCEPTION」が発生したら、恐らくバージョンの違うAndroid Support Libraryが使われている可能性があるので、「dependencies」セクションの下記のコードを削除し、
 compile fileTree(dir: 'libs', include: '*.jar')
「build.gradle」に同じバージョンのSupport Libraryのcompile文を書くなどして、バージョンを合わせると、エラーが消えるかもしれません。
ちなみに上記のコードは、「libs」フォルダ以下にある「jar」ファイルを全てインポートするというものなので、これを削除した場合は下記のようにjarファイルを1つずつインポートしてやる必要があります。
 compile files('libs/ファイル名.jar')

もう1つ、「twitter4j」のライブラリのインポートのエラーでつまづいたので、それも書いておきます。
「twiter4j」のインポートは下記のようなコードで自動的にダウンロードしてくれるのですが、
dependencies {
 compile 'org.twitter4j:twitter4j-core:3.0.6@jar'
 compile 'org.twitter4j:twitter4j-stream:3.0.6@jar'
}
これを追加後、ビルド・実行すると以下のようなエラーが出ました。


で、色々と調べたところ、このエラーは、「android」セクションの「buildToolsVersion」の下に下記のコードを書くことで「META-INF/LICENSE.txt」をパッケージングから除外することにより、解決することができます。
「META-INF/LICENSE.txt」以外にも「META-INF/NOTICE.txt」などでエラーが出ることがあるので、それぞれのファイルに応じてexclude文を書くことで、エラーを解決していきます。
 packagingOptions {
  exclude 'META-INF/LICENSE.txt'
 }
色々と書きましたが、自分が遭遇したエラーはこんな感じでした。

ビルド・起動してみる

「build.gradle」の編集が終わったので、次は実際にビルド・起動してみます。
先ほどの編集で、エラーを減らせていると思うので、うまくいけばちゃんとアプリが起動出来ると思いますが、環境によって様々なエラーが発生する可能性があるので、ビルド・起動に失敗したら、発生したエラーのログを見て、適宜自分で調べて1つ1つ解決していく必要があります。

gitの有効化

ビルド・起動が成功したら、次にAndroid Studioでgitを使ってみます。
gitを有効化するには以下のようにします。
  1. メニューバーの「VCS」から「Enable Version Control Integration...」を選択


  2. 右側のプルダウンメニューから「Git」を選択し、「OK」ボタンを押す

以上で、gitが有効になります。もともとEclipseのプロジェクトでgitを使っていた場合は、既存のブランチにきちんと切り替えることができます。
ブランチを切り替えるには、メニューバーの「VCS」から「Git」→「Branches...」を選択することで、ブランチ一覧が出てくるので、そこから別のブランチにチェックアウトすることができます。


一度別のブランチにチェックアウトすると、ウィンドウの下に現在のブランチ名が表示されるようになり、そこをクリックすることで、素早くブランチ一覧を表示させることができます。


Android Studioからcommit・pushするには

Android Studioからcommitするには、メニューバーの「VCS」から「Commit Changes...」を選択することで行うことができます。
が、commitしたいファイルが変更されていても、「No changes detected」と表示され、commitできないことがありました。色々と探してみたのですが、それらしき項目が見当たらなかったので、普通にターミナルから自分でコマンドを打ってcommitしました。

また、Android Studioからリモートリポジトリにpushしたい時に、Android Studioからリモートリポジトリを追加するような項目が見当たらなかったので、これもターミナルからコマンドを打つことで解決しました。

どちらもAndroid Studioからやる方法があるかもしれませんが、ターミナルからやれば特に困らないので、とりあえずは問題ないかなと思います。

まとめ

ライブラリのインポートなど、色々なところでエラーが出まくって、何度かくじけそうになりましたが、なんとかEclipseからAndroid Studioへプロジェクトを移行することができたので良かったです。
移行するまでが大変ですが、Android Studioを実際に使ってみると、Eclipseよりも動作が軽かったり、色々と使いやすい部分が多いので、苦労して移行する価値はあるかなと思います。
既存のプロジェクトを移行する前に、試しにAndroid Studioを使って、Eclipseからの移行を検討するのが良いかもしれませんね。
それでは、お疲れ様でした。


コメント

人気の投稿

[Qiita] Google Playのクローズドベータ版テストでメールアドレスを指定して公開する

【Linux】Linuxでディレクトリ毎にzip圧縮する

[Qiita] Androidの実機でPCのlocalhostに接続したり、Webページの要素を検証する