※記事内に広告を含む場合があります

SecurityException Writable dex file ‘~/code_cache/.overlay/base.apk/classes17.dex’ is not allowed. が原因でデバッグできない問題の解決方法

android開発環境エラーSecurityException(アイキャッチ画像) android開発環境エラー
android開発環境エラーSecurityException(アイキャッチ画像)

何年も前から使っているAndroid用の買い物メモアプリ(覚えてねこ!)の音声認識結果が、突然英語でしか返ってこなくなってしまいました。

原因を調べるためにデバッグしようとして、いつものようにスマホをUSB接続し、デバッグボタンをクリックすると、以下のようなエラーが表示され、先に進めなくなってしまいました。同じように悩んでいる人のためにブログに残すことにしました。このページではエラーの原因と対処方法を書いています。

E/AndroidRuntime: FATAL EXCEPTION: main
    Process: biz.myftp.virnetcom.memoinput, PID: 11514
    java.lang.SecurityException: Writable dex file '・・・・・/classes17.dex' is not allowed.
            ・
            ・
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1049)

SecurityExceptionが発生し、上記のような「classes17.dexは許可されていません」というエラーが表示されました。

SecurityExceptionは、プログラムが実行中に許可されていない操作を行おうとしたときに発生するエラーです。例えば、アプリが他のアプリのデータにアクセスしようとしたり、システムファイルを変更しようとする場合、Androidシステムはセキュリティを守るためにアクセスを拒否し、このエラーを発生させます。

つまり、このエラーは「classes17.dexにアクセスできない」というエラーです。

ネットで調べてみると、原因はAndroid Studioのバグであり、バージョンアップを行うことで解決するとのことでした。

Girafe of Hedgehog などの Android Studio の最新バージョンを使用してください。
古いバージョンでは dex ファイルが r/w に変更されるため、
Android 14 をターゲットにしている場合、アプリは正しくデプロイされません。

アプリが Android 14 (SDK 34) をターゲットにしている場合は、
最新の Android Studio Iguana に更新すると、この問題を解決できる場合があります。

このバグの原因はよくわかりません。
ただし、私のアプリは Android SDK 34 をターゲットにしていましたが、
古いバージョンの Android Studio (Electric Eel) を使用していたため、
dex に関するクラッシュが発生していました。Studio を更新したところ、問題は解決しました。

以前、Googleから「2024年8月31日までに、AndroidアプリをAPIレベル34(Android 14)に上げないと、Playストアで新しいアプリやアップデートを配信できなくなる」とのお達しが来て、それに従ってアプリの修正をした記憶があります。どうやら、APIレベルを34(Android 14)にアップしたことで、Android Studioのバグと出会うことになったようです。

Android Studioをバージョンアップした

なんとな~くもやっとした感じの原因がわかりました。もう少し堀探ってちゃんと突き止めようかとも思いましたが、Android Stuidioも結構古くなっているし、バグを突き止めたところで、いつかバージョンアップはしなければならないので、素直にバージョンアップを行うことにしました

Android Studioバージョンアップ方法はこちらに書いています。よろしければ参考にしてください。

Android StudioをLadybugにアップデート手順とその後の作業の注意点【Chipmunkから移行】
最先端技術は日進月歩です。日常欠かせないスマホも日々進化しており、それを支える開発ツールであるAndroid Studioも、定期的にアップデートを行わないと、最新の機能やデバイスに対応できなくなることがあります。 先日、アプリの動作がある

補足

最近私が嵌まっている沸かせる温調ボトル。電源コードは本体にしまえるし、日本製なので変換用のアダプタも必要ありません。便利ですよ~。

これ、何に使うかというと、私は熱燗飲むために使っています。とっくりを入れた時の高さが丁度いいんですね。

dretec(ドリテック)沸かせる温調ボトル
dretec(ドリテック)沸かせる温調ボトル
熱燗
熱めの熱燗が好き

沸かせる温度は4種類ありますが、基本的には95℃で沸かせば、とっくりの中の日本酒は60℃くらいになります。程よい少し熱めの熱燗が楽しめます。注いでもボトルに戻せば温かさはキープされますし、もう一杯飲みたいときや、冷めたときは、温め直せばOKです。週末、基本、部屋でテレビを見ながら机の上に置いて楽しんでいますが、300Whなので、そのくらいの性能を持ったモバイルバッテリーで利用できます。車中泊で使うのもありですね。これ、超おすすめですよ~。

コメント

タイトルとURLをコピーしました