2024/7/28(日)

C++製アプリをAndroidにクロスコンパイルするにあたり、まともなAndroid(NDK)プロジェクトの最小構成が知りたく色々実験している。まともな、というのは、正常動作するし極端な切り詰め方じゃない範囲でという話だ。こういうのが見つかった。

https://github.com/czak/minimal-android-project

こんなのはさすがに望んでいない。とりあえずデフォルトのプロジェクトからそぎ落として行く形で最小構成を調べる。

  • junit
  • espresso

この辺はユニットテストのための道具なので切ってよい。

  • proguard

どうやらソースコード難読化の仕組みのようだ(参考)。切っても動作する。

  • appcompat

これはどうやらAndroidでよくあるUI部品を作るための道具のようだ。切っても動作した。

  • android-core-ktx

coreとか付いてるので重要そうに見えたが、意外とこれも切っても動作した。なにこれ。ヘルパー的なもの?(参考)

  • material

これを外すのは厳しそうだった。AndroidManifestのandroid:themeには調べる限りこれを指定するほかない。

ということでそれなり最小限に近そうな構成が出来上がった。

https://github.com/Kiterai/github-android-practice

ところで、jdbを使ったデバッグというものをこれに従ってやってみたのだが、どうもエラーがでる。こちらの記事を参考にしてアタッチのコマンドを変えてみたら通った。


Androidアプリの機構に関して、古典的なmain関数とかの記述に慣れた人の視点からの解説があった。これはだいぶ求めていたものという感じがする。

https://qiita.com/ishihatta/items/831b063ef14b41129df9

Activityの開始終了とApplicationの開始終了は一致しないし、知らなかったのだがActivityは複数だったり0個でありうるらしい。Activityは「画面」に対応するもので、複数のActivityを用意してActivityからActivityへ遷移するなどが出来るようだ。つまりどうやらゲーム開発におけるSceneに近いものらしい。


今日摂取したコンテンツ。

https://qiita.com/ryo_hara_/items/34381dee6f5aff54cee1

スマホゲーム「学園アイドルマスター」がUnityだけで実現できないはずの機能を(おそらく)自前実装で実現しているという話。

フレームワークの中だけに囚われるのは発想を縛る行為であることを確認すると元気が出る。


iOS開発について少し調べたり実験したりしたが、なんかApple developer program(年額99.9ドル)に参加しないとできないことが多そうで腹が立ってきた。TEAM_IDが得られない。

cmakeでのios開発はイケるっぽいのだが、この記事だとTEAM_IDが必要ということになっている。

https://www.isapon.com/iOS/cmake

しかしXCodeで開発した時、実機で動かすのはdeveloper programが必須だったがシミュレータでの開発は出来たはずだ。調べてみたところ、cmakeでもシミュレータ向けビルドは無料で出来るようだった。やったね。

https://cmake.org/cmake/help/latest/manual/cmake-toolchains.7.html#cross-compiling-for-ios-tvos-visionos-or-watchos

-- -sdk iphonesimulatorオプションを付ければ行ける。

Categories: