使う範囲は非常に限定されるんですが、非常に便利ですのでメモとして残しておきます。
・.odexについて
Androidには.odexというファイルが存在します。
odexとは”Optimized Dalvik Executable"の事です。
Android の Dalvik VM で実行可能な.dexを最適化したものが.odexなのです。
つまり、odexファイルはVM環境に依存しているのでDalvik VM環境が違うと動作しないんです!(非常にめんどくさい)
・deodexの下準備
この2種類のファイルを使用し、odexファイルをdexにします。
ダウンロードしてきた
・baksmali-1.2.6.jarをbaksmali.jar
・smali-1.2.6.jarをsmali.jar
にリネームしてください。
・odexファイルをbaksmaliでdisassembleする。
ここでdisassembleするには端末から/system/frameworkディレクトリが必要になります。
ddmsのFile Managerあたりを使用してコピーしてきましょう。(odexが入っている端末のものを用意)
- java -jar .../baksmali.jar -d .../system/framework -x aaa.odex
ターミナルを使用しodexファイルのdisassembleが完了しました。
・smali.jarを使用してassembleする。
- java -jar .../smali.jar -o aaa.dex out
ホームフォルダ内にaaa.dexというファイルが作成されました。
次にこのaaa.dexファイルをapkに投入します。
・対象となるapkにdexファイルを投入する。
先ほど作成されたdexファイルをapkに投入しなければなりません。
apkの正体は単なるzipファイルですので、拡張子をzipにし解凍します。
解凍が終了したら中にある"META-INF"フォルダの内容をすべて削除してください。
また、先ほど作成したaaa.dexファイルを"classes.dex"にリネームし同フォルダにコピーしてください。
すべての作業が終了したら再度apk化してください。
・apkに署名をする。
このままでは署名がないため起動しません。
apkに署名を行います。
- keytool -genkey -dname "c=j" -keypass [ここに好きなpasswordを決めて入力] -keystore test.keystore -storepass [同様に] -validity 10000 -alias test -keyalg RSA
これで署名するのに必要なkeystoreが出力されました。
- jarsigner -keystore .../test.keystore -verbose .../aaa.apk test
先ほど出力したtest.keystoreでapkに署名をします。
コマンドを入力後に、先ほど決めたパスワードが求められます。入力してください。
以上でdeodexの完了です。apkを他端末にもインストールすることが可能になりました。
※deodexしてもその他に必要となるパッケージがある場合はそちらも移行しなければ使用できません。
0 件のコメント:
コメントを投稿