Android StudioにEclipseで作成したAndroidプロジェクトをインポートする

Eclipseで作成したAndroid向けのプロジェクトをAndroid Studioにインポートする方法について記載します。

また差分についても言及します。


1 インポート方法

Eclipse側でGradleのファイルをエクスポートしてから、Android Studio側で開くやり方もあったようですが、現在はAndroid Studio側から直接Eclipseのプロジェクトをインポートできるようになっています。

2 インポートの実行

Android Studioを立ち上げます。"Import project (Eclipse ADT, Gradle, etc.)"を選択します。

0001_Import-project.png

Eclipseのプロジェクトを選択します。

0002_Import-Destination-Directory.png

項目を全てチェックした状態でFinishを押します。

0003_Check.png

インポートが成功し、imports-summary.txtが開かれます。

imports-summary.txtにはインポートの状況が記載されており、例えば、assetsディレクトリはapp/src/main/assetsに変更されたことが分かります。

0004_Import-completed.png

3 Android Studioで作成した場合との差分

大きな差分はないです。インポートしたまま使っても問題ありません。

以降のdiffの結果はdiff [AndroidStudio] [Eclipse]で出力してます。

3.1 .gitignoreがない

Android Studioで作成した場合は.gitignoreが自動で追加されますが、インポートした場合は追加されません。適時、手動で追加する必要があります。

3.2 ProGuardファイル

Android Studioで作成した場合はプロジェクトに含まれるproguard-rules.proを使用するのに対し、インポートした場合はデフォルトのproguard-android.txtを使用します。

ProGuardの設定を変更したい場合は、proguard-rules.proを追加し、app/build.gradleでproguard-rules.proを読み込むようにします。

Eclipseからインポートした場合はproguard-rules.txtを読み込むようになっています。proguard-rules.proという名前にしたい場合はapp/build.gradleを修正する必要があります。

     buildTypes {
         release {
             minifyEnabled false
-            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
+            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
         }
     }

3.3 自動生成されたJavaファイル

インデントの差があるだけです。

3.4 自動生成されたresディレクトリ配下のxmlファイル

Eclipseで作成したものとAndroid Studioで作成したもので違いはありますが、Eclipseで作成したものをAndroid Studioでそのまま使えます。

3.5 mipmap-xxxとdrawable-xxx

Eclipseではdrawable-xxxであった各解像度向けの画像ファイルが、Android Studioではmipmap-xxxになっています。

これはAndroidManifest.xmlで決定しています。mipmap-xxxにしたい場合は、AndroidManifest.xmlで@drawableを@mipmap変更してディレクトリ名を変えれば良いでしょう。

  AndroidManifest.xml
     <application
         android:allowBackup="true"
-        android:icon="@mipmap/ic_launcher"
+        android:icon="@drawable/ic_launcher"
         android:label="@string/app_name"
         android:theme="@style/AppTheme" >
         <activity

3.6 アプリのバージョンとAndroid SDKのバージョン

アプリのバージョン情報とAndroid SDKのバージョンはapp/build.gradleに記載されるようになっています。

 <?xml version="1.0" encoding="utf-8"?>
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
-    package="com.example.myapplication" >
+    package="com.example.myapplication"
+    android:versionCode="1"
+    android:versionName="1.0" >
+
+    <uses-sdk
+        android:minSdkVersion="23"
+        android:targetSdkVersion="23" />

Android Studioで作成したプロジェクトのapp/build.gradleは以下の通りです。

apply plugin: 'com.android.application'

android {
    compileSdkVersion 23
    buildToolsVersion "23.0.1"

    defaultConfig {
        applicationId "com.example.myapplication"
        minSdkVersion 23
        targetSdkVersion 23
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
}

3.7 .idea/misc.xmlでMavenのインポート設定がない

Android Studioで作成した場合は.idea/misc.xmlにMavenのインポート設定が記述されますが、インポートした場合は記述されません。Mavenを使っていない場合は特に問題ないでしょう。

diff -uprN AndroidStudio/.idea/misc.xml Eclipse/.idea/misc.xml
--- AndroidStudio/.idea/misc.xml  2015-09-29 10:19:26.000000000 +0900
+++ Eclipse/.idea/misc.xml  2015-09-29 10:17:59.000000000 +0900
@@ -1,12 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <project version="4">
-  <component name="MavenImportPreferences">
-    <option name="generalSettings">
-      <MavenGeneralSettings>
-        <option name="mavenHome" value="Bundled (Maven 3)" />
-      </MavenGeneralSettings>
-    </option>
-  </component>
   <component name="ProjectLevelVcsManager" settingsEditedManually="false">
     <OptionsSetting value="true" id="Add" />
     <OptionsSetting value="true" id="Remove" />

3.8 Support Library

Android StudioはデフォルトでSupport Libraryを組み込まないようです。Eclipseで作成した場合は組み込まれます。

差分とは無関係な話ですが、Support Libraryを組み込んでおくと、旧バージョンのAndroidでActionBarが使えたりするので、プロジェクトでどうするかを決めてください。

 dependencies {
-    compile fileTree(dir: 'libs', include: ['*.jar'])
+    compile 'com.android.support:support-v4:23.0.1'
 }