Safer dynamic code loading
一言で表すと
アプリがAndroid 14をターゲットとし、ダイナミック・コード・ローディング(DCL)を使用する場合、動的にロードされるファイルはすべて読み取り専用としてマークする必要がある。
概要
そうしないと例外がスローされる。
動的に読み込まれるファイル(DEX、JAR、APKファイルなど)を、読み取り専用に設定する。
code:kotlin
val jar = File("DYNAMICALLY_LOADED_FILE.jar")
val os = FileOutputStream(jar)
os.use {
// Set the file to read-only first to prevent race conditions
jar.setReadOnly()
// Then write the actual file content
}
val cl = PathClassLoader(jar, parentClassLoader)
Go.icon つまりは誤ってJarファイルに書き込まないための考慮。
そもそも動的にコードを読み込むことは、コードインジェクションやコード改ざんによってアプリが侵害されるリスクを大幅に高めるため、可能な限り避ける。
気になるポイント
Go.icon 外部ライブラリとして静的に?追加しているのは大丈夫なのか(実装イメージ) メモ
コメント