home ホーム search 検索 -  login ログイン  | reload edit datainfo version cmd icon diff delete  | help ヘルプ

技術/Android/DynamicClassLoading

技術/Android/DynamicClassLoading

技術 / Android / DynamicClassLoading
id: 1003 所有者: msakamoto-sf    作成日: 2011-08-07 18:04:41
カテゴリ: Android 

Androidで、ClassLoaderをカスタマイズして実行時にモジュールをロードする方法について参考リンクをメモ。

流れとしてはdexファイルを読み込んでパッケージローカルに保存、DexClassLoaderを使ってloadClass()する。
ただしこの時注意点があって、DexClassLoaderのコンストラクタには"Optimized Dex"ファイルの出力先ディレクトリを指定する引数がある。これをうっかりSDカードにしてしまうと、SDカードはパーミッション制御の範囲外になるので、悪意のあるアプリによって置き換えられてしまう可能性がある。

"dexファイルを読み込んで・・・"と書いてしまっているが、実際は"dexファイルが入ってるだけのjarファイル"なのでそこだけ注意。

ということで、動的なClassLoadingを行うときのセキュリティ上の注意点についてはとりあえず下記参照。

あと変わり種としてはPackageManagerを使って任意のパッケージからclassを取り出すサンプル:

プラットフォーム的な仕組みであるとか、プラグインモジュールのアーキテクチャに使うと面白そうです。
ただし、Android Developers Blog の記事にもありますが、ロードするDexファイルをビルドするためにAntを使わざるをえないなど、開発に一手間加わってしまう点に注意。



プレーンテキスト形式でダウンロード
現在のバージョン : 1
更新者: msakamoto-sf
更新日: 2011-08-07 18:20:32
md5:b84849b27864c0e671814410d42300c1
sha1:50d60b106c6f7c43c5338a9ac36d82f3f58b34d6
コメント
コメントを投稿するにはログインして下さい。