Bagaimana cara men-debug apk yang ditandatangani untuk rilis?

114

Saya memiliki apk yang telah saya tanda tangani dan unggah ke Android Market, dan dipasang di ponsel saya. Saya ingin men-debug apk rilis ini (melalui Eclipse) saat sedang berjalan di ponsel saya. Saya telah melakukan ini sebelumnya (dan ingat itu terjadi dengan salah satu alat pengembangan Android; mungkin Dalvik Debug Monitor) tetapi sayangnya tidak dapat mengingat cara melakukannya dan tidak dapat menemukan artikel apa pun secara online. Adakah yang tahu bagaimana ini bisa dilakukan?

Catatan: Saya telah mengatur android:debuggable="true"di manifes dan telah mengaktifkan USB Debugging di ponsel saya.

Adil Hussain
sumber
apa yang sedang kamu coba? Apakah Anda tidak tahu cara menggunakan Tampilan Perangkat di Eclipse?
Sam Dozor
Saya sekarang memiliki tampilan Perangkat yang ditampilkan di Eclipse. Saya dapat melihat perangkat saya di daftar Perangkat. Saya mengkliknya tetapi tombol "Debug proses yang dipilih" dinonaktifkan meskipun aplikasi berjalan di telepon dan proyek sumber sedang ada dan dibuka di ruang kerja. Ada ide ?!
Adil Hussain
Apakah Anda mengklik nama paket untuk aplikasi Anda?
Sam Dozor
Iya. Lihat komentar di jawaban Anda. (Terima kasih atas bantuannya. Menghargai itu.)
Adil Hussain

Jawaban:

77

Pastikan itu android:debuggable="true"disetel dalam applicationtag file manifes Anda, lalu:

  1. Colokkan ponsel Anda ke komputer dan aktifkan USB debugging di ponsel
  2. Buka gerhana dan ruang kerja yang berisi kode untuk aplikasi Anda
  3. Di Eclipse, buka Window-> Show View-> Devices
  4. Lihatlah tampilan Perangkat yang sekarang harus terlihat, Anda harus melihat perangkat Anda terdaftar
  5. Jika perangkat Anda tidak terdaftar, Anda harus melacak driver ADB untuk ponsel Anda sebelum melanjutkan
  6. Jika Anda ingin menelusuri kode, setel breakpoint di suatu tempat di aplikasi Anda
  7. Buka aplikasi di ponsel Anda
  8. Dalam tampilan Perangkat, perluas entri untuk ponsel Anda jika belum diperluas, dan cari nama paket aplikasi Anda.
  9. Klik pada nama paket, dan di kanan atas tampilan Perangkat Anda akan melihat bug hijau bersama dengan sejumlah tombol kecil lainnya. Klik bug hijau.
  10. Anda sekarang harus terpasang / debugging aplikasi Anda.
Sam Dozor
sumber
Saya naik ke langkah 8 tetapi untuk beberapa alasan nama paket aplikasi saya tidak muncul saat saya menjalankan apk yang ditandatangani / rilis. (Anehnya itu muncul ketika saya menjalankan aplikasi (debug apk) di ponsel saya langsung dari Eclipse.) Bingung ...
Adil Hussain
2
Mengerti! Saya telah meletakkan android:debuggable="true"atribut di manifesttag alih-alih applicationtag di dalam manifes !! Saya buruk :( Terima kasih Sam_D atas bimbingan Anda. Tidak akan melakukannya tanpa Anda, atau paling banter akan memakan waktu lama!
Adil Hussain
Ketika saya menambahkan kata kunci debuggable di build.gradle dan ingin mempublikasikan di play store itu menunjukkan kesalahan iniYou uploaded a debuggable APK. For security reasons you need to disable debugging before it can be published in Google Play.
hasnain_ahmad
1
Jawaban ini sudah ketinggalan zaman. Daripada androidManifest.xmlAnda harus memperbarui build.gradle. Lihat jawaban lainnya.
Antimonit
@hasnain_ahmad Apakah Anda dapat menemukan solusi untuk ini?
Shashank Saxena
127

Saya tahu ini pertanyaan lama, tapi referensi masa depan. Di Android Studio dengan Gradle:

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

Garis debuggable true itu adalah tipuan bagi saya.

Memperbarui:

Sejak gradle 1.0 itu minifyEnabledbukan runProguard. Lihat di sini

Manuel Lopera
sumber
5
Perhatikan bahwa pada gradle 1.0 ini minifyEnabled alih-alih runProguard - lihat tools.android.com/tech-docs/new-build-system/migrating-to-1-0-0
m02ph3u5
Sebagai catatan untuk jawaban saat ini, saya sendiri akan menghindari pengiriman rilis yang dapat di-debug ke Google Play Store, dan mungkin tidak mengizinkan Anda seperti dalam kasus hasnain_ahmad di jawaban yang sudah ketinggalan zaman sebelumnya. Hanya melakukannya sementara untuk menguji masalah rilis-download-dari-toko, seperti pelacakan kode pembelian dalam aplikasi, akan mengurangi risikonya. Anda juga dapat mencoba bekerja dengan trek beta (saya tidak tahu apakah ini mungkin memberikan kesalahan yang sama seperti yang didapat hasnian) atau mentransfer rilis rilis apk ke telepon Anda dari komputer Anda untuk menghindari masalah keamanan (berurusan dengan bundel itu lebih berantakan ).
Androidcoder
40

Selain cara Manuel, Anda masih bisa menggunakan Manifest.

Di Android Studio stable, Anda harus menambahkan 2 baris berikut ke applicationdalam AndroidManifestfile:

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

Yang pertama akan mengaktifkan debugging APK yang ditandatangani, dan yang kedua akan mencegah kesalahan waktu kompilasi.

Setelah ini, Anda dapat melampirkan ke proses melalui tombol "Lampirkan debugger ke proses Android".

sandalone
sumber
@jaibatrik itu harus apk Anda dan Anda harus melampirkan debugger dari sumbernya. jika Anda melakukan keduanya dan masih tidak berhasil, bagikan info lebih lanjut dan saya dapat mencoba membantu
sandalone
2
Saya mendapat "[Kesalahan Fatal]: 7: 203: Awalan" alat "untuk atribut" alat: abaikan "yang terkait dengan jenis elemen" aplikasi "tidak terikat." Apakah alat: ignore = "HardcodedDebugMode" konfigurasi yang sah di sini?
JD
1
Saya harus menambahkan lintOptions { abortOnError false }ke app / build.grade saya daripada menggunakan tools:ignoreseperti ini: android { lintOptions: { abortOnError false } }
YoshiJaeger
saya dapat The prefix "tools" for attribute "tools:ignore" associated with an element type "application" is not bound.!
Oliver D
9

Saya mencoba dengan yang berikut dan berhasil:

release {
            debuggable true
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
Shylendra Madda
sumber
Jawaban ini telah diberikan di utas ini oleh Manuel Lopera ... tiga tahun lalu! Lihat di sini: stackoverflow.com/a/27181562/1071320
Adil Hussain
@AdilHussain Tapi saya mencoba jawaban itu tidak berhasil untuk saya. Lihat ada perbedaan dalam jawaban saya di `minifyEnabled false` dan itu runProguard truedalam kasusnya. Silakan lihat perubahannya
Shylendra Madda
Bukan masalah besar tetapi jawabannya memang berisi pembaruan untuk efek ini. Bagaimanapun. Bukan masalah besar. Terima kasih atas jawabannya.
Adil Hussain
9

Tambahkan baris berikut ke build.gradle aplikasi Anda dan pilih varian build rilis yang ditentukan dan jalankan

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'
        }
    }
Ramachandra Reddy Avula
sumber
5

Jika Anda memutuskan men-debug apk Anda yang sudah ada di pasar tetapi tidak ditetapkan sebagai dapat di-debug dan Anda tidak ingin menerbitkannya lagi. Jadi ikuti langkah-langkah di bawah ini;

  1. Dekompilasi Apk dengan ApkTool (mis. apktool d <APK_PATH>)
  2. Buka AndroidManifest.xml dari file yang didekompilasi
  3. Tetapkan android:debuggable="true"di applicationtag
  4. Kompilasi sumber yang dimodifikasi dengan ApkTool (mis. apktool b <MODIFIED_PATH>)
  5. Apk siap debuggable (yang berarti unsigned tidak dapat menerbitkan penyimpanan). Anda dapat melakukan debug sesuai keinginan.
Muhammed Yalçın Kuru
sumber