Как сохранить две версии приложения?


43

Android Market только что обновил приложение на моем устройстве. Мне понравилось обновление, но оно полностью отличается от предыдущей версии, которая также была моей любимой. Итак, я хочу сохранить последнюю версию тоже. У меня есть последняя версия apk благодаря Titanium Backup. Но я не могу установить его без замены текущего (архитектура Android - отстой). Есть какой-либо способ сделать это? Хаки и т. Д.
Примечание: я хочу сохранить текущую версию, которая должна быть связана с Market, чтобы получать будущие обновления.

Ответы:


29

Это может быть сделано, но не просто по причинам , eldarerathis упомянутого. Тебе нужен apktool . Обратитесь к этому руководству о том, как его использовать. И это при подписании apk после того, как вы закончите.

Вам нужно изменить файл AndroidManifest.xml. Найдите строку, которая выглядит так:

manifest package="com.example.app"

и измените его на что-то вроде:

"com.example.app.foo"

После того, как вы закончите, перекомпилируйте и подайте в отставку. Чтобы восстановить ваши данные, попробуйте следующее через adb:

adb rm /data/data/com.example.app.foo
adb push /data/data/com.example.app /data/data/com.example.app.foo

Где com.example.appимя пакета оригинала и com.example.app.fooявляется измененным.

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

Конечно, два приложения не будут использовать одни и те же настройки и данные.


2
Отлично ... Я не думаю, что это будет связано с юридическими вопросами, так как я не собираюсь распространять / продавать это .. Спасибо!
Android Quesito

1
Это зависит от вашей страны. В Венгрии законно перепроектировать приложение для обучения / личных целей, но я не знаю об остальном мире. Но поскольку вы ничего не распределяете, у вас не будет проблем.
RR

16

Вы не можете сделать это. Каждое Android-приложение имеет имя пакета, которое эффективно определяет пространство имен Java / Dalvik, которое занимают его классы. Вы не можете установить два пакета с одинаковыми именами, потому что это создаст перекрывающиеся пространства имен, поэтому он всегда заменяет старый, когда вы устанавливаете новый. Единственный способ, которым вы могли бы это сделать, - это получить исходный текст приложения и изменить все определения пакетов.


7

Сделай это за 5 минут

Метод : Измените имя пакета, чтобы Android распознал его как другое приложение.

Нет APKtool, нет ADB, не нужны навыки супер пользователя.

Требуются инструменты

  • ПК с JAVA (Windows, Linux, Mac) (предпочтительно JDK 8)
  • ApkRename

меры

  1. Резервное копирование / Скачать копию нужного приложения ( app.APK)
  2. Перенос на ПК
  3. На ПК скачайте JAVA и ApkRename
  4. Измените имя пакета, указав путь к файлу APK и имя нового пакета, на ApkRename
  5. Подпишите APK с помощью ApkSign
  6. Перенесите новый APK на телефон и установите его.

ПРИМЕЧАНИЕ. В случае каких-либо затруднений при подписании APK, используйте приложение-редактор android APK Advanced permission managerи внесите любые изменения, нажмите «Сохранить и установить». В это время они подпишут приложение.


2

Вы можете попробовать переупаковать приложение. Однажды я установил какую-то отредактированную версию игры, и результатом стали две игры. Если помните хорошо, имена пакетов не были одинаковыми.


0

Иногда в исполняемой библиотеке ( .so) есть некоторые ссылки , и изменение имени пакета (также smali -> classes.dex) также не помогает.

В простых случаях ищите ApkEditor .


1
Это хорошее начало, но оно не объясняет, какие изменения необходимо внести в ApkEditor. Если вы хотите, чтобы ваш ответ был полезным, вы можете отредактировать его, чтобы добавить немного больше информации.
Дэн Халм
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.