質問: コンパイルされたapkから紛失したコードを復元する 私はここで問題を抱えています。それは本当に緊張しています。 私はこのゲームに取り組んでいました、そして、それはすごく進んでいたので、私のノートパソコンでそれをコピーして、コンピュータから離して仕事をしました。 長いストーリーの短い、ハードドライブの故障+不良なバックアップは私に非常に重要なクラスを失った。 失われたコードの一部を取得するためにapkを逆コンパイルする方法はありますか?それはあまり複雑で洗練されたものではなく、毎回読むことなくそれを書き直すことは不可能です。シングル。ライン。の。コード。それは多くのクラスを初期化し、特定の方法でたくさんのものをロードするので、アプリケーション全体で。 私は素早くGoogle検索をすることで、apktoolを見つけることができました。このファイルは、人間の読書用に設計されていないと思われるたくさんの.smaliファイルに逆コンパイルされています。 私が回復する必要があるのは、クラス内の一つの非常に大きな方法です。私はそれを含んでいるsmaliファイルを見つけました、そして、私はそれが始まる行を見つけたと思います。何かのようなもの > .method public宣言同期ロード(Lcom/X/X/game/X;)I > > 私はこの方法を使わないでゲーム全体を壊さなければならないので誰でも助けてくれれば幸いです。
回答: 迅速なgoogleの結果、apkを逆コンパイルすることができました( apkをjavaソースに逆コンパイルする。しかし、Javaコードが生成されても、ソースコードをバイトコードにコンパイルしたときに回復不能に削除される変数名( `param1` のようなデフォルトのもの)逆コンパイラによっては、/ foreachループがwhileループになり、if/elseブロックがコンパイラの最適化のために元の制御フローを表していない可能性があります。 一般的な助言として:何らかのソースコントロールを使用してください。あなた自身のサーバー上で、githubを使った有料アカウントは何に関係なくソース管理を使用します。あなたがプロジェクトで一人の開発者であっても。これは、このような状況に役立ち、以前のバージョンに戻すのに役立ちます。これは、導入したバグを見つけるのに役立ちます。ツールが利用可能な場合は、それらを使用してください。