Як налагодити apk, підписаний до випуску?


114

У мене є apk, який я підписав і завантажив на Android Market, і встановив на своєму телефоні. Я хотів би налагодити цей випуск apk (за допомогою Eclipse), поки він працює на моєму телефоні. Я робив це раніше (і пам’ятаю, що це було з одним із інструментів розробки Android; можливо, Dalvik Debug Monitor), але, на жаль, не можу згадати, як це зробити, і не вдалося знайти жодної статті в Інтернеті. Хтось знає, як це можна зробити?

Примітка: Я б встановити android:debuggable="true"в маніфесті і включили USB налагодження на телефоні.


що ти зараз намагаєшся? Ви не знаєте, як використовувати перегляд пристроїв у Eclipse?
Сем Дозор

Тепер у мене вигляд пристроїв, який відображається у Eclipse. Я можу побачити свій пристрій у списку Пристрої. Я натискаю на нього, але кнопка "Налагодити вибраний процес" відключена, незважаючи на те, що програма працює на телефоні та джерело проекту присутній та відкритий у робочій області. Будь-які ідеї ?!
Аділ Хуссейн

Ви натискаєте назву пакета для свого додатка?
Сем Дозор

Так. Дивіться коментар у своїй відповіді. (Дякую за допомогу. Дорога. Вдячний.)
Аділ Хуссейн

Відповіді:


77

Переконайтеся, що android:debuggable="true"встановлено в applicationтезі файлу маніфесту, а потім:

  1. Підключіть телефон до комп’ютера та ввімкніть налагодження USB на телефоні
  2. Відкрийте затемнення та робочу область, що містить код для вашої програми
  3. У Eclipse перейдіть у вікно-> Показати перегляд-> пристрої
  4. Подивіться на перегляд пристроїв, який тепер повинен бути видимим, ви повинні побачити свій пристрій у списку
  5. Якщо вашого пристрою немає в списку, вам доведеться відстежувати драйвери ADB для вашого телефону, перш ніж продовжувати
  6. Якщо ви хочете перейти через код, встановіть точку перерви десь у вашій програмі
  7. Відкрийте додаток на телефоні
  8. У вікні "Пристрої" розгорніть запис для свого телефону, якщо він ще не розгорнутий, і знайдіть назву пакета програми.
  9. Клацніть на назві пакета, і в правому верхньому куті представлення пристроїв ви побачите зелену помилку разом з низкою інших невеликих кнопок. Клацніть зелену помилку.
  10. Тепер вам слід приєднати / налагодити додаток.

Я переходжу до кроку 8, але чомусь назва пакета мого додатка не відображається, коли я запускаю підписаний / випущений APK. (Дивно, що це показує, коли я запускаю додаток (налагодження apk) на своєму телефоні прямо з Eclipse.) Плутати ...
Аділ Хуссайн

2
Зрозумів! Я поставив android:debuggable="true"атрибут у manifestтег замість applicationтегу в маніфесті !! Моє погано :( Дякую Sam_D за стільки ваших вказівок. Не обійшлося б без тебе, або в кращому випадку давно б забратися!
Аділ Хуссейн

Коли я додаю ключове слово для налагодження у build.gradle та хочу опублікувати в магазині гри, воно відображає цю помилку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. Дивіться інші відповіді.
Антимоніт

@hasnain_ahmad Ви змогли знайти рішення для цього?
Шашанк Саксена

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 це minifyEnabled замість runProguard - див. Tools.android.com/tech-docs/new-build-system/migrating-to-1-0-0
m02ph3u5

Як зауваження до цієї нинішньої відповіді, я сам уникав би надсилати випуск, що виводиться з ладу, до магазину Google Play, і він може не пускати вас, як у випадку hasnain_ahmad у попередній застарілій відповіді. Тільки робити це тимчасово для тестування випуску, завантаженого з магазину, як-от відстеження коду покупки inapp, було б менш ризиково. Ви також можете спробувати працювати з бета-доріжкою (я не знаю, чи це може призвести до такої ж помилки, що й хастіан) або перенести версію apk-версії на свій телефон з вашого комп’ютера, щоб уникнути проблем із безпекою (робота з набором - це швидше ).
Androidcoder

40

Окрім Мануеля, ви можете використовувати Маніфест.

У стабільній програмі Android Studio потрібно додати applicationу AndroidManifestфайл наступні 2 рядки :

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

Перший дозволить налагоджувати підписаний APK, а другий запобігатиме помилці під час компіляції.

Після цього ви можете приєднатися до процесу за допомогою кнопки «Приєднати налагоджувач до процесу Android».


@jaibatrik це повинен бути ваш apk, і ви повинні приєднати налагоджувач з джерел. якщо ви робите обидва, і це все ще не працює, поділіться додатковою інформацією, і я можу спробувати допомогти
sandalone

2
Я отримав "[Fatal Error]: 7: 203: Префікс" tools "для атрибута" tools: ignore ", пов'язаний з елементом типу" application ", не пов'язаний." Тут інструменти: 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.!
Олівер Д

9

Я спробував із наступним, і це спрацювало:

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

Цю тему Мануель Лопера вже дав цю відповідь ... три роки тому! Дивіться тут: stackoverflow.com/a/27181562/1071320
Аділ Хуссей

@AdilHussain Але я спробував цю відповідь, це не працює для мене. Дивіться, що в моїй відповіді "minifyEnabled false" є різниця, і це runProguard trueв його випадку. Перегляньте зміни
Шилендра Мадда

Не велика справа, але його відповідь містить оновлення цього ефекту. Все одно. Не велике діло. Дякую за відповідь.
Аділ Хуссей

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 готове (що без підпису означає, що не може публікувати магазин). Ви можете налагоджувати за бажанням.
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.