Come eseguire il debug dell'apk firmato per il rilascio?


114

Ho un apk che ho firmato e caricato su Android Market e installato sul mio telefono. Vorrei eseguire il debug dell'apk di questa versione (tramite Eclipse) mentre è in esecuzione sul mio telefono. L'ho già fatto (e ricordo che era con uno degli strumenti di sviluppo Android; forse Dalvik Debug Monitor) ma sfortunatamente non ricordo come farlo e non sono riuscito a trovare alcun articolo online. qualcuno sa come questo potrebbe essere fatto?

Nota: Ho ho impostato android:debuggable="true"nel manifesto e hanno permesso a USB Debugging sul mio cellulare.


cosa stai provando attualmente? Non sai come utilizzare la vista Dispositivi in ​​Eclipse?
Sam Dozor

Ora ho la vista Dispositivi che mostra in Eclipse. Posso vedere il mio dispositivo nell'elenco dei dispositivi. Ci clicco ma il pulsante "Debug del processo selezionato" è disabilitato nonostante l'applicazione in esecuzione sul telefono e il progetto sorgente siano presenti e aperti nell'area di lavoro. Qualche idea?!
Adil Hussain

Stai facendo clic sul nome del pacchetto per la tua app?
Sam Dozor

Sì. Vedi il commento nella tua risposta. (Grazie per l'aiuto btw. Lo apprezzo.)
Adil Hussain

Risposte:


77

Assicurati che android:debuggable="true"sia impostato nel applicationtag del tuo file manifest, quindi:

  1. Collega il telefono al computer e abilita il debug USB sul telefono
  2. Apri eclipse e un'area di lavoro contenente il codice per la tua app
  3. In Eclipse, vai su Finestra-> Mostra vista-> Dispositivi
  4. Guarda la vista Dispositivi che ora dovrebbe essere visibile, dovresti vedere il tuo dispositivo elencato
  5. Se il tuo dispositivo non è elencato, dovrai rintracciare i driver ADB per il tuo telefono prima di continuare
  6. Se vuoi scorrere il codice, imposta un punto di interruzione da qualche parte nella tua app
  7. Apri l'app sul tuo telefono
  8. Nella vista Dispositivi, espandi la voce per il tuo telefono se non è già espansa e cerca il nome del pacchetto della tua app.
  9. Fai clic sul nome del pacchetto e in alto a destra nella vista Dispositivi dovresti vedere un bug verde insieme a una serie di altri piccoli pulsanti. Fare clic sul bug verde.
  10. Ora dovresti essere collegato / eseguire il debug della tua app.

Arrivo al passaggio 8 ma per qualche motivo il nome del pacchetto della mia app non viene visualizzato quando eseguo l'apk firmato / rilasciato. (Stranamente viene visualizzato quando eseguo l'app (debug apk) sul mio telefono direttamente da Eclipse.) Confuso ...
Adil Hussain

2
Fatto! Avevo inserito l' android:debuggable="true"attributo nel manifesttag invece del applicationtag all'interno di manifest !! Colpa mia :( Grazie Sam_D tanto per la tua guida. Non l'avrei fatto senza di te, o nella migliore delle ipotesi ci sarebbe voluto molto tempo!
Adil Hussain

Quando aggiungo la parola chiave debuggable in build.gradle e desidero pubblicare nel Play Store, viene visualizzato questo erroreYou uploaded a debuggable APK. For security reasons you need to disable debugging before it can be published in Google Play.
hasnain_ahmad

1
Questa risposta è decisamente obsoleta. Invece di androidManifest.xmldovresti aggiornare build.gradle. Vedi altre risposte.
Antimonit

@hasnain_ahmad Sei riuscito a trovare una soluzione per questo?
Shashank Saxena

127

So che questa è una vecchia domanda, ma riferimenti futuri. In Android Studio con Gradle:

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

La linea debuggable trueera il trucco per me.

Aggiornare:

Dal gradle 1.0 è minifyEnabledinvece di runProguard. Guarda qui


5
Nota che a partire da gradle 1.0 è minifyEnabled invece di runProguard - vedi tools.android.com/tech-docs/new-build-system/migrating-to-1-0-0
m02ph3u5

Come nota a questa risposta attuale, io stesso eviterei di inviare una versione debuggabile al Google Play Store e potrebbe non permetterti come nel caso di hasnain_ahmad nella precedente risposta obsoleta. Solo farlo temporaneamente per testare un problema di rilascio scaricato dal negozio, come il monitoraggio del codice di acquisto inapp, sarebbe meno rischioso. Potresti anche provare a lavorare con la traccia beta (non so se questo potrebbe dare lo stesso errore di hasnian ottenuto) o trasferire l'apk build di rilascio sul tuo telefono dal tuo computer per evitare problemi di sicurezza (gestire il pacchetto è più complicato ).
Androidcoder

40

Oltre alla maniera di Manuel, puoi ancora usare il Manifest.

In Android Studio stabile, devi aggiungere le seguenti 2 righe applicationnel AndroidManifestfile:

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

Il primo abiliterà il debug dell'APK firmato e il secondo impedirà errori in fase di compilazione.

Dopodiché, puoi collegarti al processo tramite il pulsante "Allega debugger al processo Android".


@jaibatrik deve essere il tuo apk e devi collegare il debugger dai sorgenti. se stai facendo entrambe le cose e ancora non funziona, condividi più informazioni e potrei provare ad aiutarti
sandalone

2
Ho ricevuto "[Errore irreversibile]: 7: 203: Il prefisso" tools "per l'attributo" tools: ignore "associato a un tipo di elemento" application "non è associato." Tools: ignore = "HardcodedDebugMode" è una configurazione legittima qui?
JD

1
Ho dovuto aggiungere lintOptions { abortOnError false }nella mia app / build.grade invece di usare in questo tools:ignoremodo: android { lintOptions: { abortOnError false } }
YoshiJaeger

ho The prefix "tools" for attribute "tools:ignore" associated with an element type "application" is not bound.!
Oliver D

9

Ho provato con quanto segue e ha funzionato:

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

Questa risposta è già stata data in questo thread da Manuel Lopera ... tre anni fa! Vedi qui: stackoverflow.com/a/27181562/1071320
Adil Hussain

@AdilHussain Ma ho provato quella risposta non ha funzionato per me. Vedi, c'è una differenza nella mia risposta a "minifyEnabled false" ed è runProguard truenel suo caso. Si prega di vedere le modifiche
Shylendra Madda

Non è un grosso problema, ma la sua risposta contiene un aggiornamento in tal senso. Comunque. Non un grande affare. Grazie per la risposta.
Adil Hussain

9

Aggiungi quanto segue alla tua app build.gradle e seleziona la variante di build di rilascio specificata ed esegui

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

Nel caso in cui tu abbia deciso di eseguire il debug del tuo apk che è già sul mercato ma non assegnato come debug e non vuoi pubblicarlo di nuovo. Quindi segui i passaggi seguenti;

  1. Decompilare l'Apk con ApkTool (es. apktool d <APK_PATH>)
  2. Apri AndroidManifest.xml dai file decompilati
  3. Impostato android:debuggable="true"in applicationtag
  4. Compila il sorgente modificato con ApkTool (es. apktool b <MODIFIED_PATH>)
  5. Apk debuggable pronto (che non firmato significa che non può pubblicare l'archivio). Puoi eseguire il debug come desideri.
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.