Проблемы с установкой .apk после изменения кода, обновления Windows и переустановки IDE

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

Приложение, которое я сделал, в основном берет некоторые данные, сохраняет их в базе данных SQL и, при необходимости, использует запросы для извлечения различной информации из БД и отображает ее. Если нужно внести какие-то коррективы, я их вношу и просто отправляю им другой .apk. Без проблем, пока...

Недавно я обновился до Windows 10, удвоил оперативную память моего ноутбука и заменил жесткий диск на SSD, а также обновил ОС. Все, включая Android Studio, теперь работает как сон!!! У меня был запрос от моего клиента на внесение нескольких изменений, поэтому я повторно скопировал резервную копию исходного кода в папку моих проектов, открыл код, внес изменения и повторно отправил .apk моему клиенту. Они получают следующее сообщение:

"Приложение X не установлено.

Существующий пакет с таким же именем и конфликтующей подписью уже установлен."

Единственными изменениями, которые я внес в приложение, было добавление таблицы в базу данных (и, конечно же, обновление номера версии БД), изменение некоторых макетов, пары методов и вычислений и т. д. Больше ничего. Я искал вверх и вниз и даже воспроизвел ту же ошибку на своем планшете и не могу найти способ ее обойти. В настоящее время мой клиент вводит данные в приложение за несколько месяцев, поэтому он не может просто удалить его и установить новое приложение. Могу ли я что-нибудь сделать в этот момент? Кроме того, я никогда не делал никакой пользовательской подписи ключей, просто программировал, делал .apk и без проблем отправлял многочисленные обновления. Любая помощь будет принята с благодарностью. (У меня есть резервные копии всех папок моего проекта и .apks для всех разных версий, которые я отправил)

Спасибо!


person Standroid    schedule 23.02.2016    source источник
comment
Вы использовали тот же ключ для подписи релизной версии приложения? Оформить заказ stackoverflow.com/questions/19959890/   -  person Shobhit Puri    schedule 24.02.2016
comment
Хотя несоответствие ключа, вероятно, вызывает эту проблему, в будущем я бы действительно предложил добавить функцию экспорта или резервного копирования в ваше приложение, если единственная копия важных данных вашего клиента в настоящее время находится на одном планшете в формате, к которому они не могут получить прямой доступ. .   -  person Matti Virkkunen    schedule 24.02.2016
comment
@ShobhitPuri, я вообще не создавал ключ и не подписывал приложение. Я только что создал проект и apk, а затем отправил это и любые другие обновления клиенту.   -  person Standroid    schedule 24.02.2016
comment
@MattiVirkkunen, среди прочего, это должно было стать будущей функцией приложения...   -  person Standroid    schedule 24.02.2016
comment
@Standroid Если вы не сделали ключ, он сделает его за вас. Если вы сделали что-то вроде переустановки IDE или использовали другой компьютер, вы использовали бы другой ключ.   -  person Gabe Sechan    schedule 24.02.2016
comment
План действий теперь состоит в том, чтобы выяснить, где Android Studio хранит свой автоматически сгенерированный ключ, и восстановить его из резервной копии, которая, надеюсь, у вас есть.   -  person Matti Virkkunen    schedule 24.02.2016
comment
Я думаю, что он хранится в C:\Users\<user>\.android\debug.keystore, но поскольку вы обновили свою ОС, он мог измениться, что и вызывает проблему.   -  person Shobhit Puri    schedule 24.02.2016
comment
@GabeSechan Я переустановил Windows, а затем и IDE, но у меня есть все мои старые папки с исходным кодом. Есть ли способ увидеть из моих старых файлов, какой ключ был использован?   -  person Standroid    schedule 24.02.2016
comment
Нет. Если бы ключ был бесполезен — это было бы равносильно тому, что злоумышленник смог бы сгенерировать ключ. Ключа почти наверняка уже нет.   -  person Gabe Sechan    schedule 24.02.2016
comment
@MattiVirkkunen и Shobhit Puri, спасибо, я проверю   -  person Standroid    schedule 24.02.2016
comment
@GabeSechan, спасибо. Так ты думаешь, что я абсолютно ничего не могу сделать в этот момент?   -  person Standroid    schedule 24.02.2016
comment
Ничего, чтобы вернуть этот ключ, если только процесс не сохранит старый ключ или что-то в этом роде (проверьте в каталоге @ShobhitPuri сказал). Вы можете сохранить данные, они просто требуют ухода, работы и, возможно, рутирования.   -  person Gabe Sechan    schedule 24.02.2016


Ответы (1)


На данный момент лучше всего, если вы не можете найти/получить исходный ключ, использовать программу резервного копирования (или в худшем случае adb pull) для резервного копирования его папки /data/data/. Затем вы можете удалить исходное приложение и переустановить новую версию. Затем вы можете восстановить / adb отправить содержимое старой папки на телефон, чтобы восстановить файлы данных. Для этого может потребоваться укоренение.

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

person Gabe Sechan    schedule 23.02.2016
comment
Спасибо, я могу проверить это на своем планшете и еще на одном, я думаю. Как я уже сказал, я не профессионал, и это была ОГРОМНАЯ оплошность с моей стороны. Знаете ли вы, есть ли метод, аналогичный использованию Android Device Monitor для передачи и извлечения базы данных с планшета? Например, чтобы проверить свои данные и запросы, я извлекаю базу данных из устройства, эмулируемого Genymotion, и открываю ее в SQLiteman, чтобы просмотреть данные, выполнить запросы и т. д. - person Standroid; 24.02.2016
comment
Вы можете изучить настройку Stetho в приложении, чтобы легко просматривать и тестировать запросы. facebook.github.io/стетто - person michaelcarrano; 24.02.2016