現: 2020-12-26 (土) 15:07:35 yuji ソース
Line 1: Line 1:
 +*odex拡張子って? [#pb5ce700]
 +MotorolaのMilestoneを覗いてみたら,.odexという拡張子のついたファイルが存在していた。だいたい同じファイル名を持つ.apkとセットになっていた。aaaa.apkとaaaa.odexのような状態。~
 +.apkはアプリケーションパッケージですが,じゃあ.odexは何かっていうとどうも「Optimized dex」っていうことらしい。~
 +それじゃ,dexはなんなんだっていうと,「Dalvik Excecutable」のことみたいだ。~
 +つまり,.odexファイルは,AndroidのDalvik VMで実行可能なファイルの.dexを最適化したものということになる。
 +普通は,.dexファイルは.apkに含まれた形で配布される。.apkはzipアーカイブなんで,覗いてみたりすると「classes.dex」というファイルがある。~
 +端末でアプリが実行される時は,このclasses.dexを元にしてodexを作った後,実行するようになっているみたいだ。この時,.odexファイルは/data/dalvik-cacheディレクトリに保管される。~
 +
 +じゃあこのMilestoneの/system/appディレクトリに最初から存在している.odexはどんなやつかっていうと,/data/dalvik-cacheに置いてしまうと/data以下の容量がどんどこ減ってしまう。~
 +それに比べ,/systemは読み込み専用なわけで,端末が動いているときにファイルなんかが追加されることはない。(通常ね)プリインストールされたアプリでは,/data以下を無駄にすること無くアプリを実行できるようになる,っていうことかなぁ。~
 +
 +ということで,.odexがあれば.apk内の.dexはいらないはずなんでclasses.dexは無いはず。でもこうなると実行ファイルが存在しないので,.apkだけではアプリのインストールが出来なくなっちゃう。.odexファイルもDalvikごとに違うファイルになるはずなんで,単純に.apkと.odexをコピーした場合は動かない可能性がある気がする。~
 +
 +*.odexを.dexに変換して.apkに入れる手順 [#g6d6eb53]
 +必要なのは,.apkと.odex,それとsmali(odexをsmaliにディスアセンブルするbaksmaliと,smali をdexにアセンブルするsmaliのツール。java実行環境も必要)。
 +それと,baksmaliを実行する時に.odexの含まれるAndroid環境の/system/framework以下のjarファイルなどが必要になる場合があるようだ。~
 +
 +-odexをsmali形式にディスアセンブル~
 +aaa.apk,aaa.odex,baksmali.jarとsmali.jarを同じディレクトリに入れて,以下のコマンドを実行する。~
 + java -jar baksmali.jar -x aaa.odex
 +もしエラーが出たら,/system/frameworkのファイルが必要になると思う。必要なファイルを baksmali.jarなどと同じディレクトリにコピーするか,ディレクトリ位置を指示する-dオプションを追加する。~
 + java -jar baksmali.jar -d ../system/framework -x aaa.odex
 +うまく行けば,「out」というディレクトリが作成され,その中に.smaliファイルが出来る。
 +-smali形式からdexファイルを作成~
 +smaliコマンドを使ってdexに変換する~
 + java -jar smali.jar -o aaa.dex out
 +うまく行けば,「aaa.dex」というファイルが作成されます。~
 +
 +-dexファイルをapkに入れる~
 + mkdir temp
 + cd temp
 + unzip ../aaa.apk
 + rm META-INF/*
 + cp ../aaa.dex classes.dex
 + jar cvf ../aaa_new.apk .
 + cd ..
 + mv aaa.apk aaa_old.apl
 + mv aaa_new.apk aaa.apk
 +
 +-apkに署名をする~
 +--鍵を作る~
 +まず署名するための鍵を作成します。鍵は一度作れば使いまわせる。~
 + keytool -genkey -dname "c=j" -keypass [password] -keystore test.keystore -storepass [password] -validity 10000 -alias test -keyalg RSA
 +--apkに署名を追加~
 + jarsigner -keystore test.keystore -verbose aaa.apk test
 +「test.keystore」は鍵を作成したときの「-keystore」オプションに指定した値を,test」は「-alias」オプションに指定した値を使う。実行するとパスワードを聞かれるので,「-storepass」で指定した値を入力すると,apkに署名が追加される。~
  

  • 携帯電話/HT-03A/Android/odex拡張子 のバックアップ差分(No. All)
    • 現: 2020-12-26 (土) 15:07:35 yuji

トップ   差分 バックアップ 複製 名前変更 リロード   ページ新規作成 全ページ一覧 単語検索 最新ページの一覧   ヘルプ   最新ページのRSS 1.0 最新ページのRSS 2.0 最新ページのRSS Atom
Counter: 556, today: 1, yesterday: 0