Androidメモ

AndroidJavaException: java.lang.NoSuchMethodError: No virtual method close()V in class
Landroid/net/wifi/p2p/WifiP2pManager$Channel; or its super classes (declaration of
'android.net.wifi.p2p.WifiP2pManager$Channel' appears in /system/framework/framework.jar)

→ WifiP2pManager.Channel.close が対応しているSDKのバージョンを確認する。使用箇所を囲うなどする

if (Build.VERSION_CODES.O_MR1 <= Build.VERSION.SDK_INT) {
                wifiP2pManagerChannel.close();
}
API 32 と 33 の差が大きかったのでメモ

BluetoothDevice bluetoothDevice = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
→ BluetoothDevice bluetoothDevice = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE, BluetoothDevice.class);

onBackPressed のオーバーライドで警告
https://codelabs.developers.google.com/handling-gesture-back-navigation
https://stackoverflow.com/questions/72634225/onbackpressed-deprecated-what-is-the-alternative
Android 14 からはデフォルトになるそうだ
→ 33に上げた。問題は特になかった
Android 12 (API 31)でビルドすると動かない件
https://developers.google.com/ar/develop/unity-arf/android-12-build
対応中。書いてあることを試したが動かなかったので待つ。
Build Toolsを30.0.3に固定するのは採用した。

あるページに従い、一旦Androidのプロジェクトとして出力、Android Studioのエミュレータで動かすことで、
原因となるエラーが出た。

どうやら使っている AdMob バージョンが Android12 に対応してなかったらしい
https://developers.google.com/admob/android/rel-notes#20.5.0
20.5.0を含むUnityプラグインはv7.0.0
→動くようになった。起動後にエラーは出たがそれは別件
日本語化の方法
Android StudioをIntelliJ公式プラグインで日本語化する
https://qiita.com/kuluna/items/7c24a8c5d06a44a5f748
  1. バージョン情報を見る
  2. #AI-???.・・・ の???を覚える
  3. https://plugins.jetbrains.com/plugin/13964-japanese-language-pack------/versions
  4. Versionの2022などの年は無視して、行ごとの先頭 ???.XXX の一致している物を探す
  5. ダウンロード
  6. インストールはメニュー File → Settings → プラグイン。歯車アイコンから disk
Android暗号化
https://developer.android.com/guide/topics/security/cryptography
lib https://developer.android.com/jetpack/androidx/releases/security
プロジェクトのgradle.buildに追加  https://developer.android.com/studio/build/dependencies#google-maven
AndroidSDKをUnityデフォルトを使うようにする
プレイヤー設定で、ビルドのカスタムGradleプロパティテンプレートにチェック
C:\MyUnityProject\Assets\Plugins\Android\mainTemplate.gradle に、AndroidStudioでのビルドと同様に参照追加
implementation "androidx.security:security-crypto:1.1.0-alpha03"
Android Studio ビルドログの文字化け
https://teratail.com/questions/256326
https://qiita.com/watanaby0/items/bc2459e03c81a4b708c7
Android Studio再起動が必要だった。
Android WifiDirect
discoverPeersによって所属ピアを得る時点ではオーナーは未決定で、誰かがconnectすると決定するようだ。
さらに

WIFI_P2P_CONNECTION_CHANGED_ACTION

はconnectするまで呼ばれない。
→接続処理中に他の人が接続しに来たらどうなるか
AndroidでBluetooth
https://developer.android.com/guide/topics/connectivity/bluetooth?hl=ja
記事通りしているが、Enableのイベントは来ない。
startDiscoveryの戻りがfalseにならない。
→旧スマフォはAndroid6だが、こっちだとアドレスが取れた。
API28で問題があるとのこと
https://stackoverflow.com/questions/56440201/target-sdk-28-and-bluetooth-connectivity-issue
ターゲットAPIレベルを27(Android8.1)にしたらアドレスが取れたので、とりあえずこれで行く
→WifiDirectで権限

ACCESS_FINE_LOCATION

が必要になるので、

ACCESS_COARSE_LOCATION

を削除したらとれるようになった。
→つまりAPI28の問題ではなく、権限が理由だった。
Android 6と10で動作の違い。
BluetoothのgetScanModeについて、6だと

SCAN_MODE_CONNECTABLE

にならず、初めから

SCAN_MODE_CONNECTABLE_DISCOVERABLE

になっているようだ。
10だとインテントで制限時間も含めて設定が必要。
Android Studioでビルドエラー。またはGradleのエラー
Gradleのアップデート
https://qiita.com/izuki_y/items/3c20cd1c655fc4fc6127
メニューのファイル→プロジェクト構造を開いて、提案の項目を全部更新。
ビルドが成功した後ももう一度見てみると増えていることがあった。
Android Studioが起動しない場合
大抵が日本語化によるものなので再度日本語化する。
https://mergedoc.osdn.jp/#pleiades.html#PLUGIN
それ以外はPowerShellなどで
C:\Program Files\Android\Android Studio\bin\studio.bat
を起動。エラーを見る。
日本語化解除
https://qiita.com/chocolatranran/questions/fa9ffa7b48331beb62e3