0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

AndroidのNativeActivityを使ってみる

Posted at

はじめに

突発的に Android の NativeActivity を使う必要があったので、公式が提供しているサンプルを使おうとしたのですが、現状(2023.11.10時点)そのままでは動かない状態になっているので、必要な修正手順を記します。

修正手順

1. git clone

# ndk-samples を取得
git clone https://github.com/android/ndk-samples

# native-activity を AndroidStudio で開く
studio ndk-samples/native-activity

2. gradleのアップグレード

Android Studio で開いた時 Start AGP Upgrade Assistant が出ると思われるので、念のためアップグレードをしておきましょう。

image.png

3. AndroidManifest.xmlを修正

その後、ビルドして起動すると androidx.startup.InitializationProvider not found というエラーで常にクラッシュするので、AndroidManifest.xml から android:hasCode="false" という行を削除する必要があります。

% git diff
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index f35e5f3..718050e 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -7,7 +7,6 @@
     <application
         android:allowBackup="false"
         android:fullBackupContent="false"
-        android:hasCode="false"
         android:icon="@mipmap/ic_launcher"
         android:label="@string/app_name">

ここまでの修正で起動できるようになります。

確認

起動するとブラックスクリーンになり、画面を触ると画面の色が変わる感じで動作します。

折角なのでどういう処理をしているか覗いてみました。

app/cpp/cpp/main.cppがメインコードのようです。

android_main 関数がエントリポイントで、初期化 & 復帰処理後にイベントを拾って処理することを繰り返していることが分かります。

何故か(C++なのに)Cのような実装になっていたり、warningが大量に出ていて気持ち悪かったので、軽くモダン化改修しつつwarningを対処したバージョンを作ってみました。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?