Как управлять отладкой и выпуском версии на устройстве Android? - PullRequest
23 голосов
/ 10 февраля 2011

Я новичок в Android dev и почти готов выпустить первую версию своего приложения:)

Во время тестирования apk с подписанным выпуском на моем телефоне он отказывается устанавливать, потому что отладочная версияустанавливается с отладочной подписью.

Так что мне нужно удалить отладочную версию, но она удалит всю мою базу данных (и она сделает это с моими друзьями, которые ее тестируют).

Есть лиспособ управления отладочной и выпускной версией одного и того же приложения без потери данных?

Ответы [ 5 ]

33 голосов
/ 02 апреля 2014

Многие проекты Android начинают использовать систему сборки gradle (мы перешли на нее, когда начали использовать Android Studio).К счастью, gradle позволяет очень просто установить и версию разработчика, и версию выпуска одновременно, каждая из которых имеет свои независимые данные. Документы Android охватывают это, просто добавьте applicationIdSuffix к вашему типу сборки отладки, например:

android {
    buildTypes {
        debug {
            applicationIdSuffix ".debug"
        }
    }
}
4 голосов
/ 10 февраля 2011

Я не знаю ни одного простого способа обойти процесс удаления / переустановки, так что ваши варианты включают ...

  • Купить второе устройство для тестирования (некоторые устройства Android оченьдешево сейчас, особенно на eBay)
  • Используйте эмулятор для тестирования

Я вижу ту же проблему, но это ожидаемо, поэтому я использую телефон для отладки dev, ипланшет для производственных испытаний.Когда я близок к выпуску, я тестирую рабочую версию на обоих устройствах и эмуляторе.

С вашими тестерами я бы посоветовал вам всегда предоставлять им версии выпуска, но вы могли бы включить расширенную регистрациюпомогите с проблемами.Отладочные версии тогда используются только вами, а выпускаемые ими версии.Если вы предоставляете тестировщикам выпускную версию, они используют и накапливают данные, когда они переходят на обновление до следующей версии, данные можно сохранить (или обновить, если вы измените схему) для переноса своих данных.

Я не вижу необходимости в том, чтобы ваши тестеры использовали версии отладки и выпуска.

2 голосов
/ 16 декабря 2014

Спасибо @Evan, ваше решение отлично работает:

android {
    buildTypes {
        debug {
            applicationIdSuffix ".debug"
        }
    }
}

Чтобы добавить "(DEBUG)" к заголовку вашего приложения при работе в режиме отладки, поместите этот код в onCreate вашей активности:

PackageInfo pInfo = getPackageManager().getPackageInfo(getPackageName(), 0);
    //The .debug specified in gradle
    if (pInfo.packageName.equals("YOUR_PACKAGE_NAME_HERE.debug")) {
        setTitle(getTitle() + " (DEBUG)");
}
2 голосов
/ 10 февраля 2011

Зачем удалять приложение?Обычно при установке новой версии того же приложения (определяется идентификатором пакета) сохраняются все данные приложения.

РЕДАКТИРОВАТЬ: чтобы вручную сохранить данные приложения, скопируйте их из /data/data/my.package.name/... в безопасное место, затемвосстановить при необходимости.

1 голос
/ 19 апреля 2016

Мне тоже нужно было добавить:

<permission                                                                               
      android:name="${applicationId}.permission.C2D_MESSAGE"                                
      android:protectionLevel="signature" />                                                

<uses-permission android:name="${applicationId}.permission.C2D_MESSAGE" /> 

В противном случае оба получили бы одно и то же разрешение C2D_MESSAGE, в результате чего:

Failure [INSTALL_FAILED_DUPLICATE_PERMISSION perm=<your applicationId>.permission.C2D_MESSAGE pkg=<your applicationId>] 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...