androidにプリインストールされたアプリのodexをbaksmaliでdeodexしてapkに収める方法 #androidjp

公開日: : 最終更新日:2013/12/31 ガジェット , , , , , , ,

Pocket

androidにプリインストールされたアプリを他機種に移植したりする際に、問題になるのが、odexです。

通常のアプリはapkファイルさえあればインストールでき、起動時にodexファイルを出力するのですが、プリインストールアプリの場合は、少し挙動が違い、もともとsystem/appフォルダにodexファイルを持っています。

 

これはプリインアプリの使用時にdata領域を圧迫しないように、との配慮なのだと思うのですが、問題は、このプリインアプリを別機種に移植しようと思ったときに起こります。

odexというのは、機種・バージョン固有のものなので、別の機種にそのまま移しても、動かないのです。

 

つまり、apkとodexファイルを別機種に移そうとしても起動はおろか、インストールすらできないという現象が起きます。

これは、本来はapkに含まれているはずのclass.dexが存在せず、apk外のodexしか持たないから、というのが原因です。

今回は、このodexをdeodexしてapk内にclass.dexとして戻す方法をご案内します。

 

※リソースが足りなかったりbuild.propで機種を判別したり、セキュリティがかけられているなど、この作業だけでは他機種では動かない可能性もあります。

※システムファイルを弄ることになりますので、失敗したり文鎮化する可能性もあります。自己責任でお願いします。

まず、端末側で必要なものは3つ

・apkファイル system/app内

・同名のodexファイル system/app内

・system/frameworkフォルダ内のファイル

 

この三つをPCをにコピーして用意します。

ファイルエクスプローラ系のソフトで圧縮して送ってもいいですし、androidSDKのインストールされている方ならadb pullでひっぱても構いません。

 

次に、PC側で用意するものは

・java JDK http://www.oracle.com/technetwork/jp/java/javase/downloads/index.html

・smaliとbaksmaliに関するファイル4つ http://code.google.com/p/smali/

・apk manager Apk Manager 4.9 – Makes Modifying Ur Apk A Breeze (Windows/Linux) – xda-developers

の三つです。

smali baksmaliはjarファイルなので、javaが動く環境が必要ですなので、JDKをインストール。

baksmali

smaliとbaksmaliはhttp://code.google.com/p/smali/の左にあるFeaturedから4つのファイルをダウンロードし、

baksmali-1.2.6.jarsmali-1.2.6.jarはそれぞれ使いやすいようにbaksmali.jar smali.jarとリネームしておきます。

 

さて、baksmaliをダウンロードしたフォルダに、odexを入れさらに/system/framework/とフォルダを作り、ここにframeworkフォルダの中身を置くいておきます。

baksmali2

すべてのプログラム→アクセサリ→コマンドプロンプトを右クリックして、「送る」→「デスクトップ(ショートカットを作成)」をすると、コマンドプロンプトのショートカットができます。

右クリック→プロパティ

baksmali3

作業フォルダを

さきほどbaksmaliをいれたフォルダの場所

に変更して、OK

このショートカットを起動します。

 

baksmali4

このように、コマンドプロプトが起動しますので、ここに以下のとおりコマンドを入力します。

 

java -jar baksmali.jar -d system/framework -x hogehoge.odex

hogehoge.odexの部分は、実際にdeodexしたいファイルの名前に置き換えてください。

 

しばらくまつと、outというフォルダが作られ、その中にjpだとかcomだとかというフォルダがひとつもしくは複数作成されます。このれがbaksmaliされたsmaliファイルです。これがclass.dexの中身となるファイル群が取り出せました。

 

次に、apkを分解する作業に入ります。

 

apkを分解すると、project/hogehoge.apk/フォルダ内に 「resフォルダ」、「AndroidManifest.xml」、「apktool.yml」の3つがあり(場合によっては他のフォルダがある時もあります、smaliフォルダが無いと思いますので、ここにsmaliフォルダをつくりさきほどのoutフォルダに生成されたjpなりcomなりをここにぶち込みます。

 

あとは、前回の記事同様、再コンパイル、再サインをすれば、完成です。

再コンパイルする過程で自動でsmaliフォルダがclass.dexに変換されますので、これで、odexとして飛び出ていたclass.dexをapk内に含めることができます。

 

以上、プリインストールされたアプfりのodexファイルをbaksmaliでdeodexしてapkに収める方法でした。

 

 

 

関連記事

DSC_0061

Mac OSX LionでGalaxy Nexus(SC-04D)をbootloader unlockする方法 #SC04D #Galaxynexusjp #androidjp

注意!この作業を行うと、データが初期化されます。 必要なデータは必ずバックアップをとって下さい。

記事を読む

treopro

うわさのb-mobileの980円イオンSIMの契約譲渡ができるかどうか問い合せてみた #androidjp #aeon #bmobile

昨日買ってきたイオンSIMですが、ブログにレポート書く前からあんまりいらない子なので(サービス自体が

記事を読む

is05screenshot

#IS05 のPC接続無しでスクリーンキャプチャ(スクリーンショット)を撮る方法 #androidjp

IS03と違い、IS05は標準でスクリーンキャプチャを撮ることができます。 その方法をご紹介します。

記事を読む

amazon cloudplayer

Amazonのクラウド音楽ストリーミング再生CloudPlayerを日本でsoftbank回線で使う方法をsoftbank #001HT で試したその1 #androidjp

5GBまで無料のクラウド音楽ストレージサービス「Amazon Cloud Player」 うわさのこ

記事を読む

image

SoftbankSIMで運用しているGalaxyS(SC-02B)のエラー「プロセスcom.android.phoneは予期せず中断されました」の解決方法 #galaxysjp #androidjp #sc02b

2.3.3化してかなり早くなったので、黒SIMで運用しているgalaxySですが、昨日の夜からこん

記事を読む

写真

2.3.3にアップデートしたdesireHD #001HT でROOT権限を取得する簡単な方法 #androidjp #dhd

これは超簡単です。gingerbreakをつかえば一発でOK。 ※ちなみに、2.3.3にアップデート

記事を読む

スクリーンショット 2012-04-21 15.51.18

WEB製作者にオススメのchrome拡張機能まとめ #chrome #html5jp

僕がchromeに入れている拡張機能をまとめてみます。 web製作者には便利なものが揃っていると思い

記事を読む

iidatheme

#INFOBAR #Iida に搭載のIidaUIのthemeをカスタマイズしてオリジナルのテーマを作る方法! #androidjp #a01

追記:まとめサイトで実機での作り方を補足してくれているようです。感謝http://www45.atw

記事を読む

hikaku

desireHD #001HT のバッテリー消費グラフを2.2と2.3.3アップデート後で比較。やはり悪化してる件 #androidjp #dhd

twitterやら2chやらの情報では、バッテリーのもちがよくなった、という報告がちらほらあったの

記事を読む

7スマフォカフェ

かなりいまさらですが、スマフォカフェで触ったoptimus bright(L-07C)のベンチ、マルチタッチ結果、画面の明るさ比較等 #L07C #androidjp

ブログ書かないうちに気がついたら発売してしまっていましたので、今更感は有りますが、スマフォカフェで

記事を読む

2 Tweets

Comment

  1. 匿名 より:

    This comment was originally posted on Twitter

  2. kusome より:

    【ブログ更新】 androidにプリインストールされたアプリのodexをbaksmaliでdeodexしてapkに収める方法 #androidjp http://bit.ly/iH83pL #kume_blog

    This comment was originally posted on Twitter

  3. seabraves より:

    初めまして。android機のプリインストールアプリをdeodexしようとご参考に拝見させていただいておりました。smaliファイルの生成まで行きapk managerにて再コンパイル後署名のところで躓いてしまっております。御助言いただけると幸いなのですが

seabraves にコメントする コメントをキャンセル

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">

WP-SpamFree by Pole Position Marketing

Additional comments powered byBackType

viralmedia
バイラルメディアはクソだ、とか否定してるけど、あなたには絶対に運営できないと思うよ

ここ最近、バイラルメディアに関する議論やヘイト記事をよく目にします

conoha3-thumb
3.ConoHaVPSで複数ドメインを割り当てるためにVirtual Hostsを設定する

次に、ConoHa VPSに複数のドメインを割り当てる際のVi

conoha2-thumb
2.ConoHaVPSにSFTPでとりあえずログインする方法

前回に引き続き、今回はConoHaにSFTPで接続する方法です

surface-thumb
今更Surface Pro 3ファーストインプレッション #surfaceJP #SurfacePro3

サブ用に使用していたMBAを手放したので、メインのMBP 15

highdpi-chrome
Surface Pro 3のChromeで文字がボケる問題の最新解消法 #surfaceJP

Surface Pro 3をゲットしてきました。 Core i7

→もっと見る

  • WordPressテーマ「GENSEN(TCD050)」
  • WEBデザイナーの為のWEBデザインギャラリー
PAGE TOP ↑