最近、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周りの設定がまだ難しいですが、
ざっくりとした対応は把握できたと思います。