備忘録:Android開発は一番ややこしい

今回はAndroid開発で、あれ?となったことを備忘録として残す。

1:Android14でWritable dex file '/data/data/~/code_cache/.overlay/base.apk/classes3.dex' is not allowed.というエラーが出るように(SecurityException)

はじめは、android14からの変更点である動的にコードを読み取る場合FileにsetReadOnlyを付けなければならないというやつかと思ったが、これはandroid studioのバージョンが古いことに起因するもの。それならそう書け。
今回はやたらとキャッシュファイルにデータを一時保存していたし、assetsからコードを動的に生成したりもしていたので特に混乱した。
大抵のエラーは自分のコードのどこかが示されているか、ビルド時のエラーだったりするからすぐ解決できるが、これは一瞬悩んだ。

2:Android14ではレシーバーにFLAGの設定が必要

これはAndroid14からの一般的な変更点。

3:AndroidでのMulticast受信はデバイスに依存する

とある開発でマルチキャストを使用してM-SEARCHをするのだが、同じPixel系でもタブレットは特定のメッセージを受信でき、6aも問題ないが、なぜかテスト用で買った中古の4aだけがレスポンスを受信できない。
何度繰り返しても、wps_deviceのレスポンスしか受信できない。

ひょっとすると・・・?と思い、やってみたのがWifiManagerのMulticastLockの設定。
バッテリー節約のため、Androidではマルチキャストの受信を行わないようになっていることがあるらしい。半信半疑ながらこれを設定すると無事にマルチキャスト受信が可能になった。
デバイス間の微妙な違いやバージョンによる違いが多くて心が折れそうになるな。
また、onDestroyでのreleaseを忘れないように。

4:Applicationクラスのログ表示

なぜかonCreateでのlogd表示ができない。もう謎だが処理はされている模様。
多分Logcatの開始とApplicationのインスタンス生成が前後したり?と推察


この記事が気に入ったらサポートをしてみませんか?