Android Studioプロジェクト構造(対Eclipseプロジェクト構造)


109

私はAndroid開発を学習しようとしていますが、最初はEclipseとAndroid Studioの間の異なるプロジェクト構造に戸惑っています。このため、Eclipse用に設計されたチュートリアルに従うのは困難です。これらの違いが存在する理由を誰かに教えてもらえますか?それらは存在する必要がありますか?

たとえば、2つの異なるIDEでR.javaファイルを見つけると、パスは次のようになります。

Eclipse: app \ gen \ com.example.app \ R.java

Android Studio: app \ build \ source \ r \ debug \ com.example.app \ R.java

これらのパスが異なるのはなぜですか?R.javaがAndroid Studioのデバッグフォルダーにあるのはなぜですか?これは早い段階でいくつかのエラーにつながります。誰かがこれらの違いについて何らかの洞察を持っている場合、私はそれらを感謝します。


3
この質問で画像を投稿しようとしましたが、少なくとも10件の評判が必要です。資格を得たら、投稿を編集して画像を含めます。
ジェシー

9
Eclipseを使用して、IDEの問題ではなくAndroid固有の問題のみに取り組むのはなぜですか(特にAndroid Studioが 早期アクセスプレビューにあるため)。
Luksprog 2013

3
同意した。Android開発の経験が1年以上ない限り、IMHOが「早期アクセスプレビュー」モードを終了するまで、Android Studioをいじってはいけません。
CommonsWare 2013

2
IntelliJ IDEAは非常に安定しているため、代わりに使用することもできます。さらに、Android Studioの安定性が向上すると、同じIDEであるため、Android Studioへの移行は非常に簡単になります(ASは強化されたAndroid統合のみを提供します)。
free3dom 2013

3
私はEclipseを使用したAndroid開発で3年の経験があり、A.Studioを使用することは非常に難しいと感じています。人々が引っ越してきた時なので、誰かがまっすぐな答えを出してくれればいいのに。引っ越しました。私は開発中に直感に取り組みたくありません。
Dheeraj Bhaskar 2013

回答:


203

謎:Android Studioのプロジェクト構造とビルドシステム

これがGradleビルドシステムのせいかどうかはわかりませんが(賭けます)、これまでに理解したことをお話しします。

アップデート4: 2014年9月11日を追加しましたカンニングペーパーのためにBuildTypesFlavorsVariants(私は最終的に、この書き込みが自信:D)の
アップデート3: 2014年9月11日には、正確には比較のワークスペースとプロジェクトを更新
アップデート2: 2014年4月17日ASプロジェクト構造Update 1に詳細を追加
2013/07/29 IntelliJプロジェクト構造を追加しました

IntelliJのプロジェクト構造(最後に表示)は、androidプラグインを備えたIntelliJ用です。ただし、Android Studioには、次のように分割されたプロジェクト構造があります。

構造:プロジェクトとモジュール

モジュールのAndroid Studioは似ているプロジェクトのEclipse

プロジェクトのAndroid Studioは、のようなものである、ワークスペースのEclipse(正確には、相互に依存するプロジェクトを持つワークスペース)

ドキュメントから(Android StudioはIntellij IDEAに基づいています):

IntelliJ IDEAで行うことは何でも、プロジェクトのコンテキストで行います。プロジェクトは、完全なソフトウェアソリューションを表す組織単位です。

完成した製品は、一連の個別の独立したモジュールに分解される可能性がありますが、それらをまとめてより大きな全体に結びつけるのはプロジェクト定義です。

Androidの場合、アプリごとに1つのプロジェクト、ライブラリごと、およびテストアプリごとに1つのモジュールを意味します。

同じプロジェクト内で複数のアプリをビルドしようとすると、複数の問題があります。それは可能ですが、試してみると(私のように)、ほとんどすべてがプロジェクトごとに1つのアプリで動作するように設計されていることがわかります。

たとえば、「プロジェクトを再構築」するオプションがあります。これは、複数のアプリでは意味がなく、他の多くのプロジェクト設定は役に立たず、複数のリポジトリがある場合、組み込みのVCSシステムは適切ではありません。

構造:フォルダー構造

Android Studioプロジェクトの構造

トップレベルのフォルダー

1.主なプロジェクト

これはプロジェクト全体のコンテキストになりますEclipse Land:ワークスペースと同様ですが、プロジェクトに関連するものに限定されます)。例:指定しHelloWorldProjectたアプリケーションの名前がHelloWorld

2. .idea

これは、プロジェクト固有のメタデータがAndroid Studio(AS)によって格納される場所です。(Eclipse Land: project.propertiesファイル)

3.プロジェクトモジュール

これが実際のプロジェクトです。例:指定したHelloWorldアプリケーション名がHelloWorldの場合

4.グラドル

これは、gradleビルドシステムのjarラッパーです。つまり、このjarは、ASがWindows(私の場合はOS)にインストールされているgradleと通信する方法です。

5.外部ライブラリ

これは実際にはフォルダーではなく、参照ライブラリ(Eclipse Land: Referenced Libraries)が表示される場所です。ここにターゲットプラットフォームなどが表示されます。

[ 補足: Eclipse Landの多くの人が、参照されたライブラリを削除し、参照エラーを修正するためにプロジェクトプロパティを修正していたのを覚えていますか?]

プロジェクトフォルダーの詳細

これは、上記のリストの#3です。次のサブディレクトリがあります

1.ビルド

これは、makeプロセスのすべての完全な出力、つまり、classes.dex、コンパイルされたクラスとリソースなどを持っています。

Android Studio GUIでは、いくつかのフォルダーのみが表示されます。重要な部分は、ということであるあなたのR.javaがここに発見されたの下でbuild/source/<flavor>/r/<build type(optional)>/<package>/R.java

2. libs

これは、Eclipseの土地にも表示される標準のlibsフォルダーです。

3. src

ここでは、Eclipse Landのフォルダーとフォルダーに対応するjavaおよびresフォルダーのみが表示されます。これは、IMHOで大いに歓迎される簡略化です。srcres

モジュールに関する注意:

モジュールはEclipse Landに似ていますプロジェクトにます。ここでの考え方は、1つのアプリケーションプロジェクト(上記のリストのモジュール#3)と、アプリケーションプロジェクトが依存する複数のライブラリプロジェクト(グローバルプロジェクトフォルダーの下の個別のモジュール(上記のリストの#1)として)があるということです。これらのライブラリプロジェクトを他のアプリケーションでどのように再利用できるかについては、まだわかりません。

[ 補足:全体の再編成には、srcフォルダーの簡素化などのいくつかの利点がありますが、非常に複雑です。合併症は主に起因している非常に非常にこの新しいプロジェクトのレイアウト上の薄いマニュアルを参照してください。]

新しいビルドシステム

新しいビルドシステムのユーザーガイド

フレーバーやビルドタイプなどの説明-ハラハラとは何ですか?

フレーバーとビルドタイプのチートシート

BuildType: debugおよびreleasebuildTypes、デフォルトですべてのプロジェクトで使用できます。これらは、同じコードをビルド/コンパイルしてさまざまなAPKを生成するためのものです。たとえば、releaseAPKで(難読化のために)proguardを実行し、(デバッグキーに対して)キーで署名し、最適化を実行(多分proguardまたは他のツールを介して)、わずかに異なるpackageNamescom.company.productfor releasecom.company.product.debugforで使用debug)を使用します。またBuildConfig.DEBUGreleaseビルド時にログフラグへのロギングをオフにする(アプリが遅くなるため)ために、デバッグフラグ()も使用します。これにより、debug開発中のビルドが高速になりますが、releasePlayストアに配置するための最適化されたビルドも可能になります。

製品のフレーバー:デフォルトのフレーバーはありません(正確には、デフォルトのフレーバーは空白/名前なしです)。彼らは異なるコードを持っている無料版または有料版であるFlavors可能性があります。それらは同じコードを共有しますが、いくつかのソースコードファイルまたはリソースの異なるバージョン(またはバージョンなし)を共有します。Main

BuildVariant: A buildVariantは、生成されたAPKが実際に対応するものです。それらはそのように(順番に)Product Flavor+ Build Type=のBuild Variantように命名されます。
例1:あなたが持っている場合freeと、paid2つの種類など。入手できるビルドバリアントは次のとおりです。
無料-無料デバッグ
-
有料リリース-
有料デバッグ-リリース
つまり、4つの可能なAPK構成です。いくつかの構成は特定のプロジェクトでは意味をなさない場合ありますが、それら利用可能です。

例2:(新しいプロジェクトの場合/フレーバーなし)buildVariantsデフォルトのフレーバーは名前なし/空白であるため、2 個またはAPKを使用できます:
デバッグ
リリース

これが役立つ場合は、これをIntellijのプロジェクト構造と比較してください。

Intellijプロジェクト構造のスナップショット

.idea(1)フォルダーには、主に内部IntelliJ IDEA情報を含む多数のサブフォルダーが含まれています。

src(2)フォルダーには、アプリケーションの機能を実装するMyActivity.java (3)ファイルのソースコードが含まれています。ファイルはcom.exampleパッケージに属しています。

res(4)フォルダーには、さまざまなビジュアルリソースが含まれています。

layout / main.xmlファイル(5)は、さまざまなタイプのリソースで構成されるアプリケーションの外観を定義します。

値フォルダー(6)は、さまざまなタイプのリソースを記述する.xmlファイルを格納するためのものです。現在、フォルダーにはStringリソース定義を含むstrings.xmlファイルが含まれています。「色の追加」セクションからわかるように、レイアウトフォルダーには、たとえば、色の記述子を含めることもできます。

ドローアブルフォルダー(7)には画像が含まれています。

gen(8)フォルダーには、ビジュアルリソースとJavaソースコードをリンクするR.java(9)ファイルが含まれています。以下のセクションからわかるように、IntelliJ IDEAは静的リソースとR.java間の緊密な統合をサポートしています。リソースが追加または削除されるとすぐに、R.javaの対応するクラスおよびクラスフィールドが自動的に生成または削除されます。R.javaファイルもcom.exampleパッケージに属しています。


3
EclipseとAndroid Studioのプロジェクト構造を比較していただき、ありがとうございます。そして、はい、このプロジェクト構造とそれが日常の開発でどのように使用されるかに関するドキュメントは存在しません。
kpsfoo 14

1
より正確には「ここ3. SRC、あなただけのフォルダ... JavaとRESが見る」、javaそしてres下にありますsrc/main
Code-Apprentice 2014年

Android Studioのフォルダー構造に関するドキュメントは次のとおりです:developer.android.com/sdk/installing/studio-build.html
David d C e Freitas

31

Android Studio:app \ build \ source \ r \ debug \ com.example.app \ R.java

これらのパスが異なるのはなぜですか?R.javaがAndroid Studioのデバッグフォルダーにあるのはなぜですか?これは早い段階でいくつかのエラーにつながります。誰かがこれらの違いについて何らかの洞察を持っている場合、私はそれらを感謝します。

簡単に言うと、Android Studioは、システムでデバッグビルドタイプをビルドするように構成されています。

Eclipse / ADTは、一度に1つのビルドをサポートするように設計されています(私が知る限り)。新しいビルドシステムの主な目標の1つ(ユーザーガイドから):

Make it easy to create several variants of an application, 
either for multi-apk distribution or for different flavors of an application

したがって、Eclipse / ADTが1つのR.javaファイルを生成できる場合、Android Studioは複数をサポートします。生成さR.javaれたdebugファイルはフォルダーに配置されます。これは、デフォルトでは、新しいビルドシステムがサポートされているタイプをすぐにサポートdebugしてreleaseビルドするためです。ビルドバリアント(ボタン、ASの左下隅)をリリースに変更した場合、AS R.javareleaseディレクトリに生成されます。

これは単純なプロジェクトには何の意味もないかもしれませんが、Build Variantsのサポートは、私が取り組んでいるプロジェクトを含め、多くの開発者のビルドプロセスを大幅に簡素化することを意味します。

私たちのプロジェクトは2つのビルドタイプ(デバッグとリリース)で4つのフレーバーをサポートし、合計8つの異なるAPKの組み合わせをサポートします。そして、これらの組み合わせはそれぞれ構成がわずかに異なるため、このビルドシステムは実際に機能しました。私のAndroid Studioは別のマシンにインストールされていますが、メモリが適切に機能する場合、R.javaファイルはに存在しbuild/source/<flavor>/r/<build type>/package/R.javaます。CIサーバーがAPKファイルをビルドするとき、これらの各R.javaファイルを使用して個別のパッケージを生成します。


0

Google は、EclipseでのAndroid Developer Tools(ADT)のサポートを終了します。アプリ開発プロジェクトは、できるだけ早くAndroid Studioに移行する必要があります。Android Studioへの移行の詳細については、Android Studioへの移行をご覧ください。

Android Mの今後のすべてのサポートについてのみ、Android Studio向けのAndroid開発ツールに最適---


Androidの開発者のためのEclipse - eclipse.org/downloads/packages/...
Yousha Aleayoub

-2

Android Studio 3.0.1とすべての機能を選択した場合:

  • Android O最新
  • Android Auto
  • Androidのもの
  • アンドロイドウェア
  • Android TV
  • C ++サポート
  • Kotlinサポート

バージョン3.0.1の構造は、他のすべての回答のようには見えません。

最近の構造は、2018年に表示されているAndroid Studio 3.0.1 01/2018です。

初心者は、機能サブフォルダで使用可能なものに似ているものを見つけました:

Android Studio 3.0.1 01_2018を更新します。

ツールチップ:

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.