最近、iOS・Androidの継続的デリバリーのお仕事やったりしてるんですが、Androidわからなさすぎてつらいので、
iOSプロジェクトとの違い含めて一旦まとめてみました。
(どちらもSampleCompanyのSampleAppという形になっています)
iOSプロジェクトの構成
基本的なファイル
設定ファイル
- SampleApp.xcodeproj
- SampleApp/Info.plist
ソースコード
- SampleApp/
- SampleApp/AppDelegate.swift
- SampleApp/ViewController.swift
- SampleApp/Main.storyboard
- SampleAppTests/
解説
SampleApp.xcodeprojはプロジェクトに関する全ての設定を定義したファイル。
Info.plistはアプリに関する設定(アプリ名やアプリのバージョン、カメラや位置情報にアクセスできるか等)を定義したファイル。
SampleAppはアプリケーションコードを格納するためのディレクトリ。
AppDelegate.swiftはiOSアプリのエントリーポイントとなるファイル。iOSアプリ全体のライフサイクル管理等も担当している。
ViewController.swiftはMVCにおけるVCの役割を果たすファイル。
Main.storyboardはアプリのUIや画面間の遷移を定義するためのファイル。
SampleAppTestsはテストターゲットに関連したファイル(テストコード等)を格納するためのディレクトリ。
CocoaPodsを利用する場合に追加
- Podfile
- Podfile.lock
- Pods/
- SampleApp.xcworkspace
解説
CocoaPodsはRubyで記述されたCocoa用の依存関係管理システム。
Podfileに使いたいライブラリを記述し、pod installを実行することで
インストールされたバージョンを記述したPodfile.lock、
実際のライブラリのソースコードを含むPodsディレクトリ、
アプリのプロジェクトとPodsプロジェクトを管理するためのxcworkspaceファイルが生成される。
Carthageを利用する場合に追加
- Cartfile
- Cartfile.resolved
- Carthage/
解説
CarthageはSwiftで記述されたCocoa用の依存関係管理システム。
Cartfileに使いたいライブラリを記述し、carthage bootstrapを実行することで
インストールされたバージョンを記述したCartfile.resolved、
ソースコードやビルドされたframeworkを含むCarthageディレクトリが生成される。
Androidプロジェクトの構成
基本的なファイル
設定ファイル
- app/src/main/AndroidManifest.xml
ソースコード
- app/
- app/src/main/java/samplecompany/sampleapp/MainActivity.java
- app/src/main/res/layout/activity_main.xml
解説
AndroidManifest.xmlはアプリに関する設定(アプリ名やアプリのバージョン、パーミッション等)を定義したファイル。iOSプロジェクトにおけるInfo.plistに対応するファイルっぽい。
app内にはAndroidアプリに関するファイルが格納される。
app/build.gradleはPodfileやCartfileのように、ライブラリを管理するためのファイル。
MainActivity.javaはAndroidアプリのエントリーポイントとなるファイル。
activity_main.xmlはレイアウトを定義するためのファイル。iOSプロジェクトにおける.Storyboardに対応するファイルっぽい。
自動生成されるもの
- build/
解説
ビルド結果として生成されるファイルがこの中に格納される。
gradle
- app/build.gradle
- build.gradle
- gradle.properties
- gradle/
- gradlew
- gradlew.bat
- settings.gradle
Gradleは、Ant、Mavenに次ぐAndroid向けのビルドシステム。
app/build.gradleにはアプリモジュールに対する設定を、
build.gradleには、アプリモジュール含め全てのモジュールに対して適用する設定を記述する。
pluginの設定や、ライブラリの依存関係は、app/build.gradleに記述する。
gradle.propertiesには、Gradleデーモンの最大ヒープサイズなどのgradle自体の設定を記述する。
gradlewはLinux/macOS向け、gradlew.batはWindows向けのgradleのラッパーコマンド。
settings.gradleにはアプリのビルドで含める必要のあるモジュールを記述する。
まとめ
iOSアプリをメインに開発しているので、gradle周りの設定がまだ難しいですが、
ざっくりとした対応は把握できたと思います。