リリース用に署名されたapkをデバッグする方法は?


114

署名してAndroidマーケットにアップロードしたAPKを携帯電話にインストールしました。このリリースのapkを(Eclipseを使用して)電話で実行している間にデバッグしたいと思います。私はこれを以前に行ったことがあります(Android開発ツールの1つ、おそらくDalvik Debug Monitorを使用していることを覚えています)が、残念ながらその方法を思い出せず、オンラインで記事を見つけることができませんでした。これを行う方法を誰かが知っていますか?

注:私がしている設定android:debuggable="true"マニフェストにし、自分の携帯電話上でのデバッグUSBを有効にしています。


あなたは現在何をしようとしていますか?Eclipseでデバイスビューを使用する方法がわかりませんか?
Sam Dozor

これで、Eclipseに[デバイス]ビューが表示されました。デバイスリストにデバイスが表示されます。私はそれをクリックしますが、電話で実行されているアプリケーションとソースプロジェクトがワークスペースに存在して開いているにもかかわらず、[選択したプロセスをデバッグ]ボタンが無効になります。何か案は?!
Adil Hussain

アプリのパッケージ名をクリックしていますか?
Sam Dozor

はい。回答のコメントを参照してください。(助けてくれてありがとう。感謝します。)
Adil Hussain

回答:


77

それandroid:debuggable="true"applicationマニフェストファイルのタグで設定されていることを確認してから、次のようにします。

  1. 電話機をコンピュータに接続し、電話機でUSBデバッグを有効にします
  2. アプリのコードを含むEclipseとワークスペースを開く
  3. Eclipseで、ウィンドウ->ビューの表示->デバイスに移動します。
  4. 今表示されているはずのデバイスビューを見てください、あなたのデバイスがリストされているはずです
  5. デバイスがリストにない場合は、続行する前に電話のADBドライバーを追跡する必要があります
  6. コードをステップ実行する場合は、アプリのどこかにブレークポイントを設定します
  7. スマートフォンでアプリを開きます
  8. デバイスビューで、スマートフォンのエントリがまだ展開されていない場合は展開し、アプリのパッケージ名を探します。
  9. パッケージ名をクリックすると、デバイスビューの右上に、緑色のバグと他のいくつかの小さなボタンが表示されます。緑のバグをクリックします。
  10. これで、アプリがアタッチ/デバッグされます。

手順8まで進みましたが、署名済み/リリースAPKを実行しているときに、何らかの理由でアプリのパッケージ名が表示されません。(奇妙なことに、Eclipseから直接スマートフォンでアプリ(デバッグAPK)を実行すると表示されます。)混乱しています...
Adil Hussain

2
とった!私は入れていたandroid:debuggable="true"内の属性manifestの代わりに、タグapplicationマニフェスト内のタグを!! 私の悪い:(あなたの指導のためにこれまでにSam_Dに感謝します。あなたなしではそれを成し遂げなかっただろう、またはせいぜい長い時間を費やしていたでしょう!
Adil Hussain

build.gradleにデバッグ可能なキーワードを追加し、playストアで公開しようとすると、このエラーが表示されますYou uploaded a debuggable APK. For security reasons you need to disable debugging before it can be published in Google Play.
hasnain_ahmad

1
この答えは時代遅れです。代わりにandroidManifest.xml更新する必要がありますbuild.gradle。他の回答を参照してください。
Antimonit

@hasnain_ahmadこれに対する解決策を見つけることができましたか?
Shashank Saxena

126

これは古い質問ですが、今後の参考文献です。Android StudioでGradleを使用する場合:

buildTypes {
    release {
        debuggable true
        runProguard true
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
    }
}

ラインdebuggable trueは私にとってトリックでした。

更新:

Gradleの1.0のでそれはだminifyEnabledの代わりにrunProguardここを


5
gradle 1.0以降では、runProguardではなくminifyEnabledになっていることに注意してください。tools.android.com/ tech
docs

この現在の回答へのメモとして、私自身はデバッグ可能なリリースをGoogle Playストアに送信することを避け、以前の古い回答のhasnain_ahmadの場合のようにあなたを許可しないかもしれません。アプリから購入するコードの追跡のように、ストアからダウンロードされたリリースの問題をテストするために一時的にそれを行うだけでも、リスクは低くなります。また、ベータトラックで作業することもできます(これによりhasnianが取得したのと同じエラーが発生するかどうかはわかりません)。または、リリースビルドのapkをコンピュータから携帯電話に転送して、セキュリティの問題を回避します(バンドルの扱いが面倒です)。 )。
-Androidcoder、

40

マヌエルの方法以外にも、マニフェストを使用できます。

Android Studioの安定版でapplicationは、AndroidManifestファイルに次の2行を追加する必要があります。

    android:debuggable="true"
    tools:ignore="HardcodedDebugMode"

1つ目は署名済みAPKのデバッグを有効にし、2つ目はコンパイル時エラーを防止します。

この後、「デバッガをAndroidプロセスにアタッチ」ボタンを使用してプロセスにアタッチできます。


@jaibatrikそれはあなたのapkでなければならず、ソースからデバッガをアタッチする必要があります。両方を実行しても問題が解決しない場合は、詳細情報を共有して私がお手伝いします
Sandalone

2
「[致命的エラー]:7:203:要素タイプ「アプリケーション」に関連付けられている属性「tools:ignore」の接頭辞「tools」はバインドされていません。」tools:ignore = "HardcodedDebugMode"は正当な構成ですか?
JD

1
私は追加する必要がありましたlintOptions { abortOnError false }私のアプリ/ build.gradeに代わりに使用してtools:ignore:そのように android { lintOptions: { abortOnError false } }
YoshiJaeger

わかったThe prefix "tools" for attribute "tools:ignore" associated with an element type "application" is not bound.
Oliver D

9

私は次のことを試してみましたがうまくいきました:

release {
            debuggable true
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }

この答えは、マヌエルロペラによってこのスレッドですでに与えられています... 3年前!ここを参照してください:stackoverflow.com/a/27181562/1071320
Adil Hussain

@AdilHussainしかし、私はそれが私にはうまくいかない答えを試しました。`minifyEnabled false`で私の答えに違いがあることを見てください、そしてそれはrunProguard true彼の場合です。変更をご覧ください
Shylendra Madda 2017

大したことではありませんが、彼の答えにはこの効果の更新が含まれています。とにかく。大したことではない。答えてくれてありがとう。
Adil Hussain 2017

9

以下をアプリのbuild.gradleに追加し、指定されたリリースビルドバリアントを選択して実行します。

signingConfigs {
        config {
            keyAlias 'keyalias'
            keyPassword 'keypwd'
            storeFile file('<<KEYSTORE-PATH>>.keystore')
            storePassword 'pwd'
        }
    }
    buildTypes {
      release {
          debuggable true
          signingConfig signingConfigs.config
          proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
        }
    }

5

あなたの場合、デバッグに決めたあなたのデバッグであることを、すでに市場ではなく、割り当てられているAPKを、あなたは再びそれを公開する必要はありません。以下の手順に従ってください。

  1. APK逆コンパイルApkTool(例えば。apktool d <APK_PATH>
  2. 逆コンパイルされたファイルからAndroidManifest.xmlを開きます
  3. 設定するandroid:debuggable="true"にはapplication、タグ
  4. ApkToolで修正されたソースのコンパイル(例えば。apktool b <MODIFIED_PATH>
  5. デバッグ可能なapk準備完了(署名なしはストアを公開できないことを意味します)。必要に応じてデバッグできます。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.