ソースのない既存の .APK ファイルがあります。Bluestacks (またはその他の) エミュレーターで Eclipse を使用してデバッグしたいと考えています。最終的にはブレークポイントを設定したいのですが、とりあえずエミュレータ上で動かしたいだけです。adb を使用してエミュレーターにインストールし、そこで実行するだけではありません。Eclipse によってビルドされた結果の .apk をエミュレーターで実行することに失敗しました。
私が行った手順は次のとおりです。
- .apk の名前を .zip に変更し、フォルダーに解凍しました。
- Eclipse で、新しい「既存のコードからの Android プロジェクト」を作成しました。次の「プロジェクトのインポート」画面で、apk を解凍したフォルダーを参照しました。
しかし、このプロジェクトにはEclipseでエラーがあります! そこで、次の手順を試しました。
- .apk で apktool を実行すると、手順 2 で説明したのと同じインポートに使用するフォルダーが作成されました。これで、プロジェクトにエラーがなくなりました。
- Eclipse では、このプロジェクトを Android アプリケーションとして「実行」または「デバッグ」し、エミュレーターで起動します。
ダメ!logcat には、「dalvikv - キャッチされていない例外で終了するスレッド」などのエラーが表示されます。また、アプリケーションと java.lang.ClassNotFoundException をインスタンス化できないことに関する他の logcat メッセージもあります。
質問 1: これを「良い」プロジェクトに変えるには、他にどのような手順が必要か教えてもらえますか? クラスについて私が見逃している明らかなものはありますか?
「run as」または「debug as」のいずれかを正常に実行できるようになったら、ブレークポイントを設定してデバッグします。しかし、ソースフォルダーを正しく取得できないようです。ステップ 3 で説明した apktool ステップの結果として .smali ファイルがあります。また、dex2jar や jd-gui などのさまざまなツールを試して、.java ファイルを作成しました。しかし、これらのソースがあるフォルダーを Eclipse に指示するたびに (そして「サブフォルダーの検索」をチェックしている)、Eclipse は「ソースが見つかりません」と表示します。そして「ソースルックアップパスの編集」。また、ワークスペースの /src フォルダーにソースを入れてみました。
質問 2: Eclipse が見つけられるように、ソースをどこに置くことができますか? これらのソース ファイルは .smali または .java のどちらでもかまいませんか?