前提
OS:Windows 11 Pro
Android Studio:Flamingo 2022.2.1 Patch1
新規プロジェクトについて
今回は新規プロジェクトの作成時のこれまでのActivity/Fragmentベースのプロジェクト、Jetpack Composeベースのプロジェクトの作成方法についてです。
※そもそも『「Jetpack Compose」ってなんやねん』って事はここでは置いておきます。
新規プロジェクトの作成
Android Studio のバージョンがFlamingo以降で新規プロジェクトを作成する場合、Welcome画面の「New Project」ボタンを押したり、Fileメニューの「New」→「New Project…」を選択します。
その後、プロジェクトの種別を選択する画面が表示されます。
ツールバーの色(紫や緑など)で分類されているのかなと思いきやそうでは無いようです…。
自分はこれまでEmpty(空)のプロジェクトを選択していましたが、似たようなのが2つあります。
- Empty Activity
- Empty Views Activity
これら2つは似て非なるものになります。
Jetpack Composeベースのプロジェクトの作成
Empty Activityの選択
Jetpack Composeベースのプロジェクトを作成するには「Empty Activity」(中に立方体がデザインされたもの)を選択してプロジェクトを作成します。
まぁ従来のプロジェクトの場合と特に変わった事はありませんが、2行目にひっそりと
「Create a new empty activity with Jetpack Compose」
と書かれています。(わ、わかりにくい…)
各項目を設定して「Finish」を押します。
Android Studioの画面
Gradleのビルドが終わると下記の様な画面が表示されます。
ここではActivity/Fragmentベースのプロジェクトの違いが確認できます。
- MainActivityクラスがCompomentActivityを継承している
- リソースの中に「Layout」がない
- コンストラクタの中でSetContentで何やらしている
- コードの右上に何やら「Code」「Split」「Dedign」の様な切り替えボタンがある
プロジェクトの実行
一旦実行します(ビルドします)。なぜなら一度実行がビルドが必要なので…
「Hello Android!」と表示するアプリが実行されました。
UIの確認
Jetpack Composeベースのプロジェクトにはレイアウト用のXMLが存在しません。
UIはコードと紐づけられています。
ソースコード右上の「Split」というボタンを押すと以下の様な分割画面になります。(複数回押すと、垂直分割→水平分割になります)
コードがそのままUIに反映されます。
従来のレイアウト用XMLとUIデザインの関係に似ていますが、UIデザイン側を操作してコードが変わるという事はなさそうです。
Jetpack Composeについて
正直に言うと、私はJetpack Composeについては、ほぼわかりません…。(これまでの知識や経験がほぼ役に立たないので、しばらくは触れずに行くと思います。)
詳細を知りたい方は下記の公式ページを参照していただければと思います。(「チュートリアルを表示」の先lが分かりやすいかな…)
https://developer.android.com/jetpack/compose/tutorial?hl=ja
立方体デザイン(?)がJetpack Composeのアイコンの様ですね。
新規プロジェクトの種類を選択する場合、このアイコンの有無で「Jetpack Compose」ベースかそうでないかを判別するようになっているようです。(わかりにくい…)
従来のActivity/Fragmentベースのプロジェクトの作成
Empty Views Activityの選択
従来のActivity/Fragmentベースのプロジェクトを作成するには「Empty Views Activity」(中が真っ白なもの)を選択してプロジェクトを作成します。
各項目を設定して「Finish」を押します。
Android Studioの画面
Gradleのビルドが終わると下記の様な画面が表示されます。
MainActivityクラスは「AppCompatActivity」を継承しており、リソースにもレイアウト用XMLファイルが存在します。
こちらは従来通りです。
ちなみに「Empty Activity」以外はすべて従来のActivity/Fragmentベースのプロジェクトです。
その他
「example.com」ドメインについて
よくサンプルコードで、ドメインに「example.com」が使われているのを良くみると思います。
(この記事のサンプルでも利用しています。)
「特にこのドメイン名でなくても良いのでは?」と思ってしまいますが、このドメインには意味があります。
ちなみに、ブラウザで「example.com」にアクセスすると、下記ページが表示されます。
「このドメインは、文献・ドキュメントの中で例として利用可能ですよ。特に許可なく使っても良いですよ」みたいな事が書いてあります。
「More information」をクリックすれば、より詳細(英語)が見られますが、このドメインは国際的にサンプル・例用として予約されている特別なドメインです。
逆に言えば、「example.com」以外のドメインを利用する場合には注意が必要です。
どんなにサンプルっぽいドメイン名であっても、個人や組織(会社・団体)が権利を持っているドメインの可能性があるからです。
また、「example.com」ドメインで開発したアプリを配布したり、リリースする事もやめた方がいいでしょう。(利用が認められているのはあくまで「ドキュメント内の例としての利用」であるからです。)
個人や組織ですでにドメインがあるのなら、そちらを利用するのが良いでしょう。
「マカフィー🄬リブセーフ」について
私はウィルス対策ソフトに「マカフィー🄬リブセーフ」を利用していますが、「マカフィー🄬リブセーフ」を利用していると、PC起動後のAndroid Studioの最初起動(Gradleビルド)がやたら重くなります。
CPU負荷が100%になり、ファンがブーンと音を立てて回り始めます。そして、いつもは十秒程度で終わる起動時のGradleビルドが6分以上かかります(非力なPCだと数十分掛かった記憶があります)。
ウィルススキャンを一時的に停止すれば、起動は早くなりますが、再開した後の最初のGradleビルドが遅くなります…。
仕事開始前、PCを起動したら、AndroidStudioの何らかのプロジェクトを起動しておくのが良いのかも知れません。(Mcafee側で何とか対応してほしいものですが…)