誤ってプロジェクトをEclipseから消去してしまい、携帯電話に転送したAPKファイルしか残っていません。アプリケーションを .apk ファイルにエクスポートするプロセスを逆にして、プロジェクトを元に戻す方法はありますか?
13 に答える
未知のAPKファイルからJavaコード(大まかな、しかし十分に良い)を生成する2つの便利なツールがあります。
dex2jarからdex2jarツールをダウンロードします。
ツールを使用してAPKファイルをJARに変換します:Windows:
$ d2j-dex2jar.bat demo.apk dex2jar demo.apk -> ./demo-dex2jar.jar
MacOS / Linux:
$ d2j-dex2jar.sh -f demo.apk -o demo.jar
JARファイルが生成されたら、JD-GUIを使用してJARファイルを開きます。Javaファイルが表示されます。
出力は次のようになります。
次に、他のツールを使用して、APKファイルからAndroidManifest.xmlとリソースファイル(画像、翻訳など)を取得できます。
-
$ java -jar apktool.jar -q decode -f demo.apk -o outputDir
-
$ apkinfo demo.apk
-
$ ninjadroid demo.apk --all --extract
まず第一に、this
ビデオをお勧めします。これであなたの疑問がすべて解消されます
そうでない場合は、それを通過してください
Procedure for decoding .apk files, step-by-step method:
Step 1:
新しいフォルダーを作成し、その中に .apk ファイル (デコードしたいファイル) を入れます。この.apk
ファイルの拡張子の名前を変更して.zip
(例: filename.apk から filename.zip に名前を変更)、保存します。
.zip への変換に問題がある場合は参照してくださいlink
.zip を取得すると、classes.dex ファイルなどが取得されます。この段階では、drawable は表示されますが、xml および java ファイルは表示されないので、続行します。拡張機能が表示されない場合は、構成を確認してください
Step 2:
この zip apk ファイルを同じフォルダーに抽出します。これからdex2jarをダウンロードしますlink
同じフォルダに解凍します。コマンドプロンプトを開き、ディレクトリをそのフォルダーに変更します。
次にdex2jar classes.dex
、入力してエンターを押します。classes.dex.dex2jar
これで、同じフォルダーにファイルが取得されます。
次に、 Java逆コンパイラをダウンロードします
jd-gui をダブルクリックし、ファイルを開くをクリックします。次にclasses.dex.dex2jar
、そのフォルダーからファイルを開きます。クラスファイルを取得し、これらすべてのクラスファイルをsrc名で保存します(ファイルをクリックしてから、jd-guiで「すべてのソースを保存」をクリックします)。その zip ファイル(classes_dex2jar.src.zip)
を解凍すると、アプリケーションのすべての Java ファイルが取得されます。
この段階で Java ソースを取得できますが、xml ファイルはまだ読み取れないため、続行します。
Step 3:
別の新しいフォルダーを開き、これらのファイルを配置します
デコードしたい.apkファイルを入れてください
windows v1.x
And用のApktoolをダウンロードApktool
Googleを使用してウィンドウをインストールし、同じフォルダーに入れます
Googleを使用してframework-res.apkファイルをダウンロードし、同じフォルダーに入れます(すべてのapkファイルがframework-res.apkファイルを必要とするわけではありません)
コマンド ウィンドウを開く
APKtool のルート ディレクトリに移動し、次のコマンドを入力します。
apktool if framework-res.apk.
上記のコマンドの結果はFramework installed ...
.
- apktool d "appName".apk ("appName" は、デコードするアプリケーションを示します) そのフォルダーにファイル フォルダーが作成され、xml ファイルも簡単に読み取れるようになりました。
Step 4:
最後にres/
、開始時のターゲットであるプロジェクトの Java コードと同様に取得しました。
P.S.
上記の手順で res フォルダーを取得できない場合は、新しいフォルダーをインストールしてください。apktool
- Java 1.7 はインストールされていますか? Apktool 2.x をインストールします
- Java 1.6 以降がインストールされていますか? Apktool 1.x をインストールします。
Enjoy and happy coding
はい、プロジェクトを取り戻すことができます。yourproject.apk
ファイルの名前をに変更するだけyourproject.zip
で、そのZIPファイル内のすべてのファイルを取得できます。ファイル拡張子を.apkから.zipに変更します。そのZIPファイルからファイルを抽出し、classes.dex
次の方法で逆コンパイルします。
まず、DEX上のすべての(コンパイルされた)クラスをJARに抽出するためのツールが必要です。中国の学生が作ったdex2jarというものがあります。
次に、JD-GUIを使用して、JAR内のクラスをソースコードに逆コンパイルできます。dex2jarはいくつかの最適化を適用するため、結果のソースコードは非常に読みやすいはずです。
以下の手順に従ってこれを行うか、このプロセスにapkToJava gemを使用するだけで、必要なツールのインストールも処理されます。
- apk ファイルを zip に変換する
- ファイルを解凍します
- そこから classes.dex を抽出します
- dex to jar を使用して、classes.dex を jar ファイルに変換します
- jadx gui を使用して、jar ファイルを Java ソース コードとして開きます。