Eclipseのディレクトリの構成をAndroidStudioに変更するスクリプト

ディレクトリの構成だけ変更すれば、Android Studioからインポートすれば、そのまま開発を続けることができる。

gradle はデフォルトのwrapperで。問題あればAndroidStudioでいうところのモジュール内 build.gradle で調整していく。

なんせリソースディレクトリの変更をしておけば、今どきのAndroidStudioでは、設定等で対応。

sh(シェル)でやるけど、ディレクトリ構成の変更の内容は掴めるはず。

元々は、crashlytics がプロジェクトに反応しないのでやってみた。

#!/bin/sh -x

TARGET_ROOT=~/androidstudio

MODULE_NAME=`echo ${PWD##*/}`
PROJECT_NAME=${MODULE_NAME}Project
L_MODULE_NAME=`echo ${MODULE_NAME} | tr '[:upper:]' '[:lower:]'`
#MODULE_PART=`find src -name ${L_MODULE_NAME} -type d | sed -e 's/^src\///'`

PROJECT_DIR=${TARGET_ROOT}/${PROJECT_NAME}
MODULE_DIR=${PROJECT_DIR}/${MODULE_NAME}
MAIN_DIR=${MODULE_DIR}/src/main
JAVA_DIR=${MAIN_DIR}/java
RESOURCES_DIR=${MAIN_DIR}/resources

mkdir -p ${JAVA_DIR}
mkdir -p ${RESOURECES_DIR}

cp -pr src/* ${JAVA_DIR}/
cp -pr resources/* ${RESOURCES_DIR}/
cp -p AndroidManifest.xml ${MAIN_DIR}/
cp -pr res ${MAIN_DIR}/
cp -pr assets ${MAIN_DIR}/
cp -pr aidl ${MAIN_DIR}/
cp -pr rs ${MAIN_DIR}/
cp -pr jni ${MAIN_DIR}/
cp -pr libs ${MODULE_DIR}/

cat << EOT > ${PROJECT_DIR}/settings.gradle
include ':${L_MODULE_NAME}' 
EOT

cat << EOT > ${PROJECT_DIR}/local.properties
sdk.dir=/Applications/Android Studio.app/sdk
EOT

cat << EOT > ${PROJECT_DIR}/build.gradle
EOT

cat << EOT > ${MODULE_DIR}/build.gradle
buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:0.5.+'
    }
}

apply plugin: 'android'

repositories {
    mavenCentral()
}

android {
    compileSdkVersion 18
    buildToolsVersion "18.0.0"

    defaultConfig {
        minSdkVersion 7
        targetSdkVersion 18
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: '*.jar')
    compile 'com.android.support:appcompat-v7:18.0.+'
}
EOT

# overwrite build.gradle
#cp -p build.gradle  ${MODULE_DIR}/build.gradle

.sh で保存して、PATHを通して、プロジェクディレクトリ直下で実行。

AndroidStudioプロジェクトリソースの置き場所(TARDET_ROOT)は ~/androidstudio/ に設定してそこに書き出し。

build.config は現時点AndroidStudioのプロジェクト新規作成時のものを踏襲。

書きだしたディレクトリに対してAndroidStudioからプロジェクトインポート。

Project Structure

The basic build files above expect a default folder structure. Gradle follows the concept of convention over configuration, providing sensible default option values when possible.

The basic project starts with two components called “source sets”. The main source code and the test code. These live respectively in:

  src/main/
  src/instrumentTest/

Inside each of these folders exists folder for each source components.
For both the Java and Android plugin, the location of the Java source code and the Java resources:

  java/
  resources/

For the Android plugin, extra files and folders specific to Android:

  AndroidManifest.xml
  res/
  assets/
  aidl/
  rs/
  jni/

Note: src/instrumentTest/AndroidManifest.xml is not needed as it is created automatically.

Gradle Plugin User Guide - Android Tools Project Site Gradle Plugin User Guide - Android Tools Project Site

逆に、ディレクトリ構成はそのままで、build.gradleの記述をEclipseスタイルで明示しておくことでも対応できる。

公開されているEclipseのマルチプロジェクトリソースをAndroidStudioで使う 公開されているEclipseのマルチプロジェクトリソースをAndroidStudioで使う

問題のcrashlyticsはプロジェクトは認識するもののプラグインから実行できないのが残念。

Issue 55379 - android - Android Studio create new project can't handle symbolic links - Android Open Source Project - Issue Tracker - Google Project Hosting

もっといい方法あれば、fb/tw にてご教授願う。

[追記]
crashlytics いけた。最新版でfixed。
AndroidStudio Gradle 1.8 で「Execution failed for task ‘:libraries:mylib:compileReleaseAidl’.」 AndroidStudio Gradle 1.8 で「Execution failed for task ‘:libraries:mylib:compileReleaseAidl’.」


関連ワード:  AndroidAndroidStudioツールライブラリ開発