Apktool逆コンパイルツールは詳細な説明を使用します

APKToolはある Googleが提供する APKのあなたが必要とする、コンパイラツールを JAVAの実行環境が推奨 JDK1.6 または JDK1.7を

APK ファイル変更する場合は、 APKTool を使用する必要があります。フォーラムには、 framework-res.apk systemUI.apk などの APK ファイルを自分変更する必要のある ROM 美化に関する投稿が多数あります

多くの方は読んだ後で個人的に修正したいと思っていると思いますが、結果として、さまざまなエラーが発生した後は修正できず、どこにいるかさえわかりません。

1。APKTOOL 使用環境構成

1. JAVA インストールし環境変数設定します。

ダウンロードとインストールは非常に簡単です。重要なのは、他のプログラムが JAVAを使用できるようにするには、インストール後に環境変数を自分で設定する必要があるということです

WIN7 、例えば、でデスクトップ -コンピュータ]を右クリック > プロパティ- > [ 高度なシステム設定- > 環境変数- > システム変数の下で新しい変数を作成し、という名前の変数JAVA_HOM Eは、ある JAVAのインストールパス、たとえば、私はH:\ ProgramFiles \ Java \ jdk1.6.0_26

2。APKToolのインストール

1. 実際には、これはインストールに関するものではありませんが、必要に応じて、ダウンロードした APKTOOL から Windowsのインストールディレクトリに3つのファイル(aapt.exe apktool.bat apktool.jar )を抽出すると便利です。 Dos コマンドを使用します。

2. 一部の人々はダウンロードしてもよい APKTOOLがそこにマウントされているバットファイルを、そしてそこにある他の二つの使いやすいバット、ここで私は、これらの使用はお勧めしませんファイルをバット非常に使いやすい(実際には、私は簡単に感じることはありませんが、ファイルを)、しかし、エラーが発生したかどうかを表示するのは便利ではありません。

3。APKTool 使用

1.デコード

このコマンドは apk ファイルを逆コンパイルするために使用され、一般的な使用法は

apktool d <file.apk> <dir>

<file.apk> は、逆コンパイルする apk ファイルのパスを表します。C:\ MusicPlayer.apk などの絶対パスを書き込むことをお勧めします(注:中国語をパスに含めないでください)

<dir> は、 C:\ MusicPlayer などの逆コンパイルされたファイルの保存場所を表します

指定された <dir>がすでに存在する場合、コマンドを入力するとプロンプトが表示され、実行できません。コマンドを変更して-f コマンドを追加する必要があります

apktool d –f <file.apk> <dir>

これにより、既存のファイルが強制的に上書きされます

2.ビルド

このコマンドは、ファイルをコンパイルおよび変更するために使用されます。一般的な使用法は

apktool b <ディレクトリ>

这里的<dir>就是刚才你反编译时输入的<dir>(如C:\MusicPlayer,输入这行命令后,如果一切正常,你会发现C:\MusicPlayer内多了2文件夹builddist,其中分别存储着编译过程中逐个编译的文件以及最终打包的apk文件。

3.install-framework

该命令用于为APKTool安装特定的framework-res.apk文件,以方便进行反编译一些与ROM相互依赖的APK文件。具体情况请看常见问题



四.常见问题

1.关于安装和管理framework文件

以下大部分其实是翻译自http://code.google.com/p/android-apktool/wiki/FrameworkFiles

一般来说,你在使用apktool进行反编译前不需要做其他的事情,然而由于有的厂商,如HTC三星等,他们定制了framework文件并且在他们的系统应用中使用了这些文件,这时,为了能正常的反编译这些apk文件,你就必须从你的设备中拷贝出framework文件并且安装到apktool中。

举一个例子,比如你想反编译HTCHero这款手机中的HtcContacts.apk,当你尝试反编译的时候,你会得到以下错误信息。


 

  1. $ apktool d HtcContacts.apk 
  2. I: Loading resource table...
  3. I: Decoding resources...
  4. I: Loading resource table from file: /home/brutall/apktool/framework/1.apk
  5. W: Could not decode attr value, using undecoded value instead: ns=android, name=drawable, value=0x02020542
  6. ...
  7. W: Could not decode attr value, using undecoded value instead: ns=android, name=icon, value=0x02020520
  8. Can't find framework resources for package of id: 2. You must install proper framework files, see project website for more info.
复制代码

 

这就是在通知你必须先安装HTC定制的framework文件,事实上在修改一些三星的系统应用时也是如此。

以三星的设备来举例,你需要复制两个framework文件来进行安装,framework-res.apktzframework-res.apk,一般来说,这两个文件在手机中的位置应该是system\framework\

使用以下代码进行安装

apktool if C:\framework-res.apk

apktool if C:\tzframework-res.apk

这里假设2个文件都放在C盘根目录


2.直接用build编译后在dist中找到的apk文件无法使用

其实这个问题我也不是特别理解,目前知道的就是,APK文件虽然本质是个zip文件,但是事实上zip包中的文件是按照两种方式压缩的,即XML文件进行deflate压缩,其他文件不进行压缩(使用store存储),而直接编译得到的APK文件对任何的文件都进行了deflate压缩,因此你会发现编译得到的文件比原文件小好多。

同样的,当你使用build文件夹中的文件替换原apk文件中的资源时,请务必确认是使用store存储还是deflate压缩

3.其他错误

其实在编译过程中会遇到很多其他的问题,大多数是由于删除、修改、添加了资源后,没有对应的修改res\values\public.xml文件而造成的,这里我给大家说下修改的原则:

第一,public.xml文件中的资源不能重复定义。

第二,public.xml文件中的任意两个资源的ID不能一样

第三,public.xml文件中定义的资源必须能找到该文件(如果你删除了一些文件,必须要对应的删除public.xml中的该行)

第四,public.xml文件中尽可能全面(如果你添加了某资源,最好确保在public.xml中也添加)

第五,public.xml文件中的资源的ID尽可能连续(当你为添加的文件添加声明时,赋予的ID尽可能是连续的)

发布了6 篇原创文章 · 获赞 4 · 访问量 1万+

おすすめ

転載: blog.csdn.net/sjc53yy/article/details/10026689