ということでアプリを早速作ってみようと思ったのですが、今までwidgetを作ったことがない初心者なので、デフォルトの状態でWidgetがどのように作成されるのかを見ていく。
Android Studio を起動、New Projectを選択。
Widgetだけなので「Add No Activity」を選択して、Nextをクリック。
目次
No ActivityとEmpty Activityの違い
「No Activity」は画面やコードが一切含まれない完全な空のプロジェクトを作成し、「Empty Activity」は最新のUIツール「Jetpack Compose」を使用した初期画面付きのプロジェクトを作成。
No Activityファイルが何も作られない自分で最初から画面や設定を追加する構成を完全に自由に変えたいときに向いている。
従って、初めの作成で、何もしないで一応アプリらしきものを見たい場合は「Empty Activity」がおすすめということになる。
プロジェクト名は「My First Widget」とする。
プロジェクトの作成
以下のところから、またはFile -> New Projectから

Empty Activityを選択。

Nameのところにプロジェクト名を入れる。Finishをクリック。

一番下に警告が出ている。
Save location should not contain whitespace, as this can cause problems with the NDK tools.
NDKツールで問題が発生する可能性があるため、保存場所のパスには空白を含めないようにしてください。
A-Silicon Power 1TBというところの半角スペースがダメなようだ。A-Silicon-Power-1TBに変更した。

この後のエラーになる箇所を修正する
最新のAndroid Studioを使っているのに、APIバージョンが37以上にするように警告が出る。
これは、Android Studioが最新でも警告が出るのは、ソフトウェア自体のバージョンではなく、プロジェクトのbuild.gradle.kts(またはbuild.gradle)にある設定(compileSdkやtargetSdk)が古いAPI 37未満を指定しているため、またはSDKマネージャーに該当のAPI 37がインストールされていないため。
解決方法としてはSDKのインストール:Android Studioの「SDK Manager」を開き、API 37(Android 17など)のプラットフォームを追加でダウンロード。
ファイルの書き換え: プロジェクトのモジュールレベルのbuild.gradle.ktsを開き、compileSdk と targetSdk の値を 37 以上に書き換える。
コードを修正したら、右上に表示される「Sync Now」をクリックして設定を反映させる。

Widgetアプリを作成
File -> New -> Widget -> App Widget を選択。

基本デフォルトのまま、横のサイズだけを2に変更した。そのままでも問題ないと思う。Finishをクリック。ソース言語はKotlin。

これで、基本的なウイジェットのアプリが作成されたことになる。
36のままだが、エラーなくここまで来た。

A Not targeting the latest versions of Android; compatibility modes apply. Consider testing and updating this version. Consult the ‘android.os.Build.VERSION_CODES”javadoc for details.
Dependency’platform (libs.androidx.compose.bom) ” is declared mutiple times:42
Dependency ‘platform (libs.androidx.compose.bom) ” is declared mutiple times :51
A Androidの最新バージョンをターゲットにしていないため、互換モードが適用されます。このバージョンのテストと更新を検討してください。詳細については、android.os.Build.VERSION_CODES の Javadoc を参照してください。
依存関係 ‘platform (libs.androidx.compose.bom)’ が複数回宣言されています:42
依存関係 ‘platform (libs.androidx.compose.bom)’ が複数回宣言されています:51
これはあくまで警告なので、そのままビルドまでやって、ウイジェット作成の流れだけを確認する。
ビルドを実行する

エラーが出た

Build MyFirstwidget: failed
New Minor Gradle Version Available
& Download info
:app:checkDebugAarMetadata
Aar Dependency compatibility issues
MyFirstwidget のビルド: 失敗
新しいマイナーバージョンの Gradle が利用可能です
& ダウンロード情報
:app:checkDebugAarMetadata
Aar 依存関係の互換性の問題
AAR メタデータの確認中に 3 つの問題が見つかりました:
- 依存関係 ‘androidx.core:core-ktx:1.19.0’ は、これに依存するライブラリやアプリケーションに対し、Android API バージョン 37 以降を使用してコンパイルすることを求めています。
:app は現在 android-36.1 でコンパイルされています。
推奨されるアクション: このプロジェクトを更新し、37 以上の新しい compileSdk
(例: 37.1)を使用するようにしてください。
なお、ライブラリやアプリケーションの compileSdk の更新(新しい API の使用を可能にするもの)は、targetSdk の更新(新しいランタイム動作を有効にするもの)やminSdk の更新(アプリをインストールできるデバイスを決定するもの)とは個別に行うことができます。
- 依存関係 ‘androidx.core:core:1.19.0’ は、これに依存するライブラリやアプリケーションに対し、Android API バージョン 37 以降を使用してコンパイルすることを求めています。
:app は現在 android-36.1 でコンパイルされています。
推奨されるアクション: このプロジェクトを更新し、37 以上の新しい compileSdk(例: 37.1)を使用するようにしてください。
なお、ライブラリやアプリケーションの compileSdk の更新(新しい API の使用を可能にするもの)は、targetSdk の更新(新しいランタイム動作を有効にするもの)やminSdk の更新(アプリをインストールできるデバイスを決定するもの)とは個別に行うことができます。
- 依存関係 ‘androidx.lifecycle:lifecycle-runtime-compose-android:2.11.0’ は、これに依存するライブラリやアプリケーションに対し、
Android API バージョン 37 以降を使用してコンパイルすることを求めています。
:app は現在 android-36.1 でコンパイルされています。
推奨されるアクション: このプロジェクトを更新し、37 以上の新しい compileSdk(例: 37.1)を使用するようにしてください。
なお、ライブラリやアプリケーションの compileSdk の更新(新しい API の使用を可能にするもの)は、targetSdk の更新(新しいランタイム動作を有効にするもの)やminSdk の更新(アプリをインストールできるデバイスを決定するもの)とは個別に行うことができます。
より高い minCompileSdk を必要とする依存関係を持つモジュールにおいて、minCompileSdk を更新してください。
Android API バージョン 37以降を使用してコンパイルすることとなっている。

37に変更したらSync Nowをクリックして更新する。
再度ビルドをやり直す
問題なくビルドが終了した。

ここで一度、ホーム画面に戻る、

ホーム画面が出てら、上の空きスペースを長押しする。
するとWdgetというメニューが出るので選択。
下の左のWdget画面が出るので、一番下にある右側のBrowseをクリック。
中央の画面で下の方にドラッグしていくと作成した「My First Widget」というのが見えるので右端をクリックして出てきたアイコンを長押しするとホーム画面に追加することができる。




位置も大きさも変更することができる。
これで、何もしないでウイジェットアプリをホーム画面に表示することができたことになる。
このアプリは単にテキストと白縁がとってあるというだけのものだが、アプリ開発の始まりになる。
これがウイジェットアプリ作成のデフォルトの流れになる。

これはlayoutのnew_app_wiget.xmlで見た目のレイアウトが作成されていることがわかる。

この他にも、このテキストをクリックしたらどう動くか等を追加して行って、本格的なアプリへと発展していくことになる。
このアプリを実際に自分のスマホにインストールするには?
出来上がったアプリはテストしてみたいよね。
自分のスマホ(実機)にインストールするには、スマホ側で「開発者向けオプション」と「USBデバッグ」を有効にし、PCと接続して実行ボタンを押す。
- 隠しコマンドで開発者モードにする。
- USBデバッグを有効にする。(これを通して、PCのAndroidStudioのアプリから直接スマホにビルドしたアプリを送ることができるようになる)
- 実機を接続して実行する。
実際のやり方
スマホ側の準備「設定」から「ディバイス情報」又は「端末情報」を開く。
すると一番下に「ビルド番号」が出てくるので、その「ビルド番号」を7回連続でタップして開発者モードにする。
ここで、もしこの時すでに開発者モードになっていると、タップ中に「既に開発者モードである」というポップアップが出てくるので、ストップすること。
そうでないなら7回タップすると「デベロッパーになりましたと」か「開発者になりました」とかが出てくるのでわかると思う。
「開発者向けオプション」から「USBデバッグ」をオンにする。
「USBデバッグ」をオンにするには開発者モードでないと出来ないので、開発者モードをオンにしたら、もう一度ホーム画面に戻って、設定をクリック。
続いて、システムをクリック(スマホによって位置が違うかも)。
下の方にスクロールすると「開発者向けオプション」が出るのでタップする。
「開発者向けオプションを使用」をオンにする(既になっている筈)
下にスクロールしてUSBデバッグをオンにする。
これで準備が完了したことになる。
PCとスマホを接続してアプリをインストールする
PCと接続してインストール、USBケーブルでスマホとパソコンを繋ぐ。
スマホ画面に「USBデバッグを許可しますか?」と出たら許可する。
Android Studioの画面右上にある「Run」ボタン(再生マーク)を押す。

接続先デバイスに自分のスマホを選んでOKを押すと、自動でインストールされて起動する。
スマホのホーム画面で長押しするとメニューが出る、Widgetを選択するとその中に作成した「My First Widget」という名前のアプリがあるので、また長押しするとAddボタンが出て追加することができる。
削除するにはウイジェットを長押しすると、上に削除というのが出るのでそこにアプリをドラッグすると削除される。
こんなしてアプリを開くと、普通のアプリ自体もウイジェットで作成されていることがわかる。

