Gradleを使用してAndroidプロジェクトのEclipseおよびIntellijプロジェクトファイルを生成することは可能ですか?
Mavenでは、mvn Eclipse:eclipse
そしてPlayFrameworkではplay eclipsify
。 GradleにはAndroidプロジェクトのこの機能がありますか?
Gradle(1.6)をインストールし、Android SDK Manager(22.0.1)の説明 here
これは私のbuild.gradleファイルです:
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.Android.tools.build:gradle:0.5.0'
}
}
apply plugin: 'Android'
apply plugin: 'Eclipse'
sourceCompatibility = 1.7
version = '1.0.2'
repositories {
mavenCentral()
}
dependencies {
compile fileTree(dir: 'libs', include: '*.jar')
}
Android {
buildToolsVersion "17"
compileSdkVersion 8
defaultConfig {
versionCode 1
versionName "1.0"
minSdkVersion 7
targetSdkVersion 8
}
sourceSets {
main {
manifest.srcFile 'AndroidManifest.xml'
Java.srcDirs = ['src']
resources.srcDirs = ['src']
aidl.srcDirs = ['src']
renderscript.srcDirs = ['src']
res.srcDirs = ['res']
assets.srcDirs = ['assets']
}
instrumentTest.setRoot('tests')
}
}
そして、次のコマンドを実行します。
gradle clean build cleanEclipse Eclipse
うまくビルドされますが、プロジェクトをEclipseにインポートすると、通常のJavaプロジェクトのように見えます。
誰でもGradleを取得してAndroid特定Eclipseプロジェクトファイル?
これはGradleによる優先機能ですか?
-UPDATE-
これは問題だと思います。だから私はAndroidツールチーム issue#57668 に投稿しました。問題に優先順位を付けるためにスターを付けてください:)
-UPDATE-
Androidツールチームはこの問題を調査中です。だから今のところ Android Studio gradleプロジェクトをインポートできる場所に変換しましたIDEを介した依存関係。
Gradle自体は汎用のビルドツールであり、Android用に特別に作成されたものではありません。
すべての機能はプラグインを使用して有効化されます。従来、ビルドプラグインはプロジェクト構造を生成しません。それがプロジェクト固有のツールの仕事です。 GradleのAndroidプラグインはこれに続きます。
問題は、SDKの現在のAndroid
ツールが古いタイプのプロジェクト構造(antビルド)を生成することです。新しいプロジェクト構造は、Android Studio。
Mavenのようなツールにはarchetypes
という概念があり、プロジェクトテンプレートを使用できます。 Gradleはまだサポートしていません(この機能についてはリクエストが行われています)。
このスレッドを参照してください: http://issues.gradle.org/browse/GRADLE-1289 、一部のユーザーは、構造を生成するスクリプトを提供しています。
ビルドの初期化機能が進行中です: https://github.com/gradle/gradle/blob/master/design-docs/build-initialisation.md
それを行うスクリプトを作成できる人がいることを願っています。新しいプロジェクト構造については、このガイドを参照してください。 http://tools.Android.com/tech-docs/new-build-system/user-guide
更新
公式のAndroid=IDE: Android Studio があります。Intellijに基づいており、新しいビルドシステムはGradleベースです。
Gradleプラグイン「com.Android.application」と「Eclipse」の組み合わせには4つの問題があります。最初に、構成クラスパスはEclipseのクラスパスに追加されませんが、これは簡単に修正できます。第二に、.AAR依存関係について何かをしなければなりません。これは少し面倒でした。 3番目に、R.Javaなどの生成されたソースを含める必要があります。最後に、Android.jar自体を含める必要があります。
Android Studio .classpath
からEclipse用の適切なbuild.config
ファイルを生成するgradle構成を一緒にハックできました。この効果は、Android Studioで常に実行されていたCPUファンにとって非常に満足のいくものでした。 Eclipseは、結果のプロジェクトを完全に機能するJavaプロジェクトと見なしますが、それだけです。
私は自分のアプリプロジェクトのbuild.gradleに以下を直接入れました:
apply plugin: 'Eclipse'
Eclipse {
pathVariables 'GRADLE_HOME': gradle.gradleUserHomeDir, "Android_HOME": Android.sdkDirectory
classpath {
plusConfigurations += [ configurations.compile, configurations.testCompile ]
file {
beforeMerged { classpath ->
classpath.entries.add(new org.gradle.plugins.ide.Eclipse.model.SourceFolder("src/main/Java", "bin"))
// Hardcoded to use debug configuration
classpath.entries.add(new org.gradle.plugins.ide.Eclipse.model.SourceFolder("build/generated/source/r/debug", "bin"))
classpath.entries.add(new org.gradle.plugins.ide.Eclipse.model.SourceFolder("build/generated/source/buildConfig/debug", "bin"))
}
whenMerged { classpath ->
def aars = []
classpath.entries.each { dep ->
if (dep.path.toString().endsWith(".aar")) {
def explodedDir = new File(projectDir, "build/intermediates/exploded-aar/" + dep.moduleVersion.group + "/" + dep.moduleVersion.name + "/" + dep.moduleVersion.version + "/jars/")
if (explodedDir.exists()) {
explodedDir.eachFileRecurse(groovy.io.FileType.FILES) {
if (it.getName().endsWith("jar")) {
def aarJar = new org.gradle.plugins.ide.Eclipse.model.Library(fileReferenceFactory.fromFile(it))
aarJar.sourcePath = dep.sourcePath
aars.add(aarJar)
}
}
} else {
println "Warning: Missing " + explodedDir
}
}
}
classpath.entries.removeAll { it.path.endsWith(".aar") }
classpath.entries.addAll(aars)
def androidJar = new org.gradle.plugins.ide.Eclipse.model.Variable(
fileReferenceFactory.fromPath("Android_HOME/platforms/" + Android.compileSdkVersion + "/Android.jar"))
androidJar.sourcePath = fileReferenceFactory.fromPath("Android_HOME/sources/" + Android.compileSdkVersion)
classpath.entries.add(androidJar)
}
}
}
}
// We need build/generated/source/{r,buildConfig}/debug to be present before generating classpath
// This also ensures that AARs are exploded
eclipseClasspath.dependsOn "generateDebugSources"
// Bonus: start the app directly on the device with "gradle startDebug"
task startDebug(dependsOn: "installDebug") << {
exec {
executable = new File(Android.sdkDirectory, 'platform-tools/adb')
args = ['Shell', 'am', 'start', '-n', Android.defaultConfig.applicationId + '/.MainActivity']
}
}
gradle Eclipse
を実行すると、インポートおよびコンパイルできるEclipseプロジェクトが作成されます。ただし、このプロジェクトは通常のJavaプロジェクトとして機能します。 apkをビルドするには、gradleコマンドラインに戻ってgradle installDebug
を実行する必要があります。 gradle processDebugResources
はAndroid XMLファイルの変更を取得し、build/generated/source
の下でファイルを再生成します。アプリログを表示するには、Android SDKで「モニター」プログラムを使用します。これまでのところ、Android Studioなしでデバッグする方法は見つかりませんでした。
Android Studioで見逃している唯一の機能は、デバッグ(バグの時間がある人)と視覚的なリソースの編集です。
Issue 57668 by Android team(raise by @arcone))
プロジェクトメンバー#2 x ... @ Android.com
Eclipseプラグインは、Androidプラグインと互換性がありません。
EclipseのデフォルトのGradleサポートを使用して、Android gradleプロジェクトをEclipseにインポートすることはできません。
Eclipseで機能させるには、EclipseのGradleプラグインを変更する必要があります。IntelliJでGradleサポートを変更するのと同じ方法です。
AndroidチームはIntelliJのgradleプラグインに取り組んでおり、Eclipseのgradleプラグインも更新する必要があります。
現在、Eclipseで可能なのは
.1。プロジェクトを一般プロジェクトとしてインポートします
.project
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>OpenSpritz-Android</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
</buildSpec>
<natures>
</natures>
</projectDescription>
.2。 2 Eclipseを置きます。 「ドット」ファイルをモジュールに/OpenSpritz-Android/app/src/main
および/OpenSpritz-Android/lib/src/main
.project
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>OpenSpritz-Android-app</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>com.Android.ide.Eclipse.adt.ResourceManagerBuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>com.Android.ide.Eclipse.adt.PreCompilerBuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.Eclipse.jdt.core.javabuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>com.Android.ide.Eclipse.adt.ApkBuilder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>com.Android.ide.Eclipse.adt.AndroidNature</nature>
<nature>org.Eclipse.jdt.core.javanature</nature>
</natures>
</projectDescription>
.classpath
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" path="Java"/>
<classpathentry kind="src" path="gen"/>
<classpathentry kind="con" path="com.Android.ide.Eclipse.adt.Android_FRAMEWORK"/>
<classpathentry exported="true" kind="con" path="com.Android.ide.Eclipse.adt.LIBRARIES"/>
<classpathentry exported="true" kind="con" path="com.Android.ide.Eclipse.adt.DEPENDENCIES"/>
<classpathentry kind="output" path="bin/classes"/>
</classpath>
.3。既存としてインポートAndroidコードをワークスペースに
慣れた方法でコードを参照できますが、それ以降でもEclipse ADTで実行することはできません。
.4。
これで、ビルドとタスクをgradle
CLIまたは Nodeclipse/Ecide for Gradle for Eclipse ( marketplace )で実行できます
適切なEclipseを生成する新しいGradleプラグインを作成しました.project
および.classpath
ファイル。このスタックオーバーフローに関するJohannes Brodwallからの回答に基づいています。
詳細については、 https://github.com/greensopinion/gradle-Android-Eclipse をご覧ください。
次は私のために働いた
Eclipse.classpath.plusConfigurations += configurations.compile
Eclipse.classpath.file {
beforeMerged { classpath ->
classpath.entries.removeAll() { c ->
c.kind == 'src'
}
}
withXml {
def node = it.asNode()
node.appendNode('classpathentry kind="src" path="src/main/Java"')
node.appendNode('classpathentry kind="src" path="src/debug/Java"')
node.appendNode('classpathentry kind="src" path="gen"')
node.children().removeAll() { c ->
def path = c.attribute('path')
path != null && (
path.contains('/com.Android.support/support-v4')
)
}
}
}
Eclipse.project {
name = 'AndroidGradleBasic'
natures 'com.Android.ide.Eclipse.adt.AndroidNature'
buildCommand 'com.Android.ide.Eclipse.adt.ResourceManagerBuilder'
buildCommand 'com.Android.ide.Eclipse.adt.PreCompilerBuilder'
buildCommand 'com.Android.ide.Eclipse.adt.ApkBuilder'
}
ソース- http://blog.gouline.net/2013/11/02/new-build-system-for-Android-with-Eclipse/
たぶん私は非常に明白な何かを見逃していますが、 Eclipseプラグイン あなたが探しているものではありませんか?これにより、.projectファイルと.classpathファイルが生成され、以降の実行時に必要に応じてこれらが更新されます。
IDEAプラグイン もありますが、私はこれを使用したことはなく、話せません。
お役に立てば幸いです。