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 のオーバーライドで警告
Android 14 からはデフォルトになるそうだ
→ 33に上げた。問題は特になかった
Android 12 (API 31)でビルドすると動かない件
対応中。書いてあることを試したが動かなかったので待つ。
Build Toolsを30.0.3に固定するのは採用した。
あるページに従い、一旦Androidのプロジェクトとして出力、Android Studioのエミュレータで動かすことで、
原因となるエラーが出た。
どうやら使っている AdMob バージョンが Android12 に対応してなかったらしい
20.5.0を含むUnityプラグインはv7.0.0
→動くようになった。起動後にエラーは出たがそれは別件
日本語化の方法
Android StudioをIntelliJ公式プラグインで日本語化する
- バージョン情報を見る
- #AI-???.・・・ の???を覚える
- Versionの2022などの年は無視して、行ごとの先頭 ???.XXX の一致している物を探す
- ダウンロード
- インストールはメニュー File → Settings → プラグイン。歯車アイコンから disk
Android暗号化
プロジェクトの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 ビルドログの文字化け
Android Studio再起動が必要だった。
Android WifiDirect
discoverPeersによって所属ピアを得る時点ではオーナーは未決定で、誰かがconnectすると決定するようだ。
さらに
WIFI_P2P_CONNECTION_CHANGED_ACTION
はconnectするまで呼ばれない。→接続処理中に他の人が接続しに来たらどうなるか
AndroidでBluetooth
記事通りしているが、Enableのイベントは来ない。
startDiscoveryの戻りがfalseにならない。
→旧スマフォはAndroid6だが、こっちだとアドレスが取れた。
API28で問題があるとのこと
ターゲット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のアップデート
メニューのファイル→プロジェクト構造を開いて、提案の項目を全部更新。
ビルドが成功した後ももう一度見てみると増えていることがあった。
Android Studioが起動しない場合
大抵が日本語化によるものなので再度日本語化する。
それ以外はPowerShellなどで
C:\Program Files\Android\Android Studio\bin\studio.bat
を起動。エラーを見る。
日本語化解除