Androidプロジェクトの2つの構築方式の統合(Eclipse/ideaとAndroid Studio)

4920 ワード

github記事のバックアップにより、より良い読書体験が得られます.
Androidの2つの構築方法
現在androidには主にant(伝統的)に基づく2つの構築方式があり、もう1つは13年Google/IOでGraldeに基づく構築(Android Studio)が新たに発売された.sdkのsamplesのルーチンからもapi 18後のルーチンのプロジェクトディレクトリ構造が変わっていることがわかります.
2つの構築方式のディレクトリ構造を簡単に見てみましょう.現在の最新sdk 19を例に挙げます.
  • 従来のant構築(EclipseとIdeaのデフォルトのAndroid構造)
  • $ANDROID_HOME/samples/android-19/legacy/ActionBarCompat
    res/
    src/
    AndroidManifest.xml

    これは最も簡単な構造で、assets、libsなどのディレクトリがあるかもしれません.つまり、ideにandroidプロジェクトのスケルトン構造を新規作成しました.Orz
  • GradleベースAndroid Studio構築ディレクトリ
  • $ANDROID_HOME/samples/android-19/ui/DoneBar
    DoneBarSample/
        src/
            main/
                java/
                res/
                AndroidManifest.xml
        tests/
            src/
                AndroidManifest.xml
        build.gradle        # DoneBarSample    gradle    
    gradle/                 # gradle     ,   
    build.gradle            #    (DoneBar) gradle    
    gradlew                 # gradle-wrapper windows      (             Gralde)
    gradlew.bat             # gradle-wrapper linux,mac        (    )
    settings.gradle         # gradle          
    README.txt

    Gradleはもっと複雑になったように見えますが、gradleの利点はマルチプロジェクトの構築にあります.実際、1シナリオは私たちのプロジェクトのコアのソースコードにすぎず、依存していません.通常、androidアプリケーションを書くとサードパーティのライブラリに依存し、jarであればやりやすいが、サードパーティのリソースファイル(actionbar-compat、actionbar-sherlockなど)を同時に導入する必要がある場合が多い.これはサードパーティ製ライブラリをプロジェクトとして私たちの独立したプロジェクトに導入することに相当します.(そしてこの中のプロジェクト間の依存は自分でコントロールしなければなりません.例えば、私たちのプロジェクトはsupport-v 4に依存しています.では、v 4を導入してプロジェクトの中で依存関係を明らかにします.次に、私たちのプロジェクトはsupport-v 7-appcompatに依存しています.このライブラリを導入します.ニマ、このライブラリにはjarだけでなく、リソースファイルもあります.では、この2つを導入し、依存関係を宣言します.ああ、この時、v 7のjarはv 4のjarに依存しているので、プロジェクトがまだ間違っていることに気づきます...)
    嫌なの?まあまあですが、たくさん配合すると卵が痛くなります.だから、Gradleが優位に立っている理由です.以上の問題については、プロジェクトのbuild.gradleで声明する必要があります.
    dependencies {
        compile "com.android.support:support-v4:$supportLibVersion"
        compile "com.android.support:support-v13:$supportLibVersion"
        // compile project(':your project')
        // compile ('libs/*.jar') // all your jar in the libs dir
    }

    これは最も簡単なアプリケーションにすぎません.gradleは、サードパーティ製ライブラリをサブプロジェクトとして直接依存するなど、構築された多くの特性を提供しています.具体的には、ドキュメントを参照してください.
    antコンストラクションからAndrod StudioのGraldeコンストラクションに移行すべきですか?
    明らかに、Android Studioはgoogleが力を入れている開発ツールであり、トレンドであり、また、正直に言うとEclipseはandroidアプリケーションの開発においてAndroid-Studio(idea)よりも使いやすい.しかし、Android Studioはまだ正式版になっていません.まだ開発段階で、バグを出してもOrzを傷つけることはできません.
    また、Gradleの構築は現在も遅く、antの構築に比べてかなり遅く、場所を変更しました.run、多くの時間を待たなければなりませんが、ideaやeclipseではすぐに構築しました.
    以上の2つの問題を解決していないとandroid-studioはあまりお勧めできませんが、eclipseを使ってandroidを開発することをお勧めします.Intellij IDEAのオープンソースコミュニティ版を使ってandroidを開発することがあります.実際、Android StudioはIDEAに架かっていますか.
    2つの構築方法をサポートする移行方法
    既存のプロジェクトや新しいプロジェクトについて、今後どのようにAndroid Studioに移行するのか、あるいは、Android Studioでこのプロジェクトを開発してみたいと思っています.Gradleの柔軟性により、2つの構築方式を同時にサポートするプロジェクトを完全に作成できます.
    プロジェクトの構造は従来と同様であり、androidプロジェクトとしてeclipseまたはideaに直接導入することができ、コアはgradleのbuild.gradleファイルにある.
    あまり紹介しないで、直接コードをつけて、見て直してください.もっと需要があれば、ここを参考にしてください.
    /*
     * The MIT License (MIT)
     * Copyright (c) 2014 longkai
     * The software shall be used for good, not evil.
     */
    buildscript {
    	repositories {
    		mavenCentral()
    	}
    	dependencies {
    		classpath 'com.android.tools.build:gradle:0.6.+'
    	}
    }
    
    // for our non-android-support libs, such as gson, etc.
    repositories {
    	// prefer and fall back
    	jcenter()
    	mavenCentral()
    }
    
    apply plugin: 'android'
    
    ext {
    	supportLibVersion = '19.0.1'
    }
    
    android {
    	compileSdkVersion 19
    	buildToolsVersion = '19.0.1'
    
    	sourceSets {
    		defaultConfig {
    			testPackageName 'tingting.chen.tests'
    		}
    
    		main {
    			assets.srcDirs = ['assets']
    			res.srcDirs = ['res']
    			aidl.srcDirs = ['src']
    			resources.srcDirs = ['src']
    			renderscript.srcDirs = ['src']
    			java.srcDirs = ['src']
    			manifest.srcFile 'AndroidManifest.xml'
    		}
    
    		instrumentTest {
    			assets.srcDirs = ["tests/assets"]
    			res.srcDirs = ["tests/res"]
    			resources.srcDirs = ["tests/src"]
    			java.srcDirs = ["tests/src"]
    		}
    	}
    }
    
    dependencies {
    	// if you use Android Studio with a lib has its own res/ directory,
    	// and that lib is not available in remote maven repo,
    	// you need to use gradle' s multi-project build facility.
    	// if you don' t know how it works, please refer Gradle' s docs or google.
    	compile files("libs/*.jar")
    	compile "com.android.support:support-v4:$supportLibVersion"
    	compile "com.android.support:support-v13:$supportLibVersion"
    	// please download google android-volley and compile it to a jar or multi-project build!
    }
    
    task wrapper(type: Wrapper) {
    	// 1.9+ is not supported for now!
    	gradleVersion = 1.8
    }

    本作品は知識共有署名−同方式共有4.0国際ライセンス契約によりライセンスされる.
    2014-02-07