Copyroid

Android: как установить два одинаковых приложения на один телефон

Стол заказов — в конце статьи.

Для установки двух (или больше) одинаковых приложений на один телефон нужно сменить значение package в файле AndroidManifest.xml, находящемся внутри apk-билда.
Например, имеем:

<manifest
android:versioncode="20110420"
android:versionname="1.8.0"
package="ru.e_num"
xmlns:android="http://schemas.android.com/apk/res/android">

Для того, чтобы установить это приложение ещё раз, нужно сделать примерно следующее:

<manifest
android:versioncode="20110420"
android:versionname="1.8.0"
package="ru.e_num.test"
xmlns:android="http://schemas.android.com/apk/res/android">

После такого изменения заново собранный apk-файл придётся подписать сертификатом. Информацию о том, как распаковывать, запаковывать и подписывать apk-файлы, можно найти в любом поисковике по запросу SmartApkTool. Вот ссылка на приложение: v.2.2 (распакуйте содержимое архива в пустую директорию). А вот более правильный способ работы с apk-файлами: Использование apktool.

Совет. Устанавливайте одну из копий неизменённой, чтобы знать об обновлениях в Маркете.

Под катом описаны некоторые встречающиеся проблемы, а также находится Стол Заказов.

ВОЗМОЖНЫЕ ПРОБЛЕМЫ

Проблема 1

Если рядом с AndroidManifest.xml не создаётся файл apktool.yml, то в домашней директории пользователя найдите папку apktool\framework и удалите из неё файл 1.apk. (Совет с 4pda.ru, спасибо Alex Boroda.)

Проблема 2

Иногда обычная смена имени package не помогает. Чаще всего это бывает в случаях, когда в файле AndroidManifest.xml прописаны относительные пути к различным активити. Например:

<activity
android:label="E-NUM"
android:name=".SplashScreenActivity"
android:screenOrientation="portrait">

В такой ситуации нужно прописать полный путь ко всем активити, то есть:

<activity
android:label="E-NUM"
android:name="ru.e_num.SplashScreenActivity"
android:screenOrientation="portrait">

Обратите внимание, что прописывать нужно не новое имя package (то есть в нашем случае не ru.e_num.test), а реальный путь к активити в директории smali распакованного apk-файла. Естественно, в общем случае путь совпадает со старым именем package (в нашем случае это ru.e_num).

Проблема 3

Если в файле AndroidManifest.xml есть тег provider, то в его атрибуте authorities нужно также дописать символы, которые мы использовали в качестве дополнения к параметру package (в нашем случае это .test). Например, было:

<provider
android:authorities="com.someapp.android"
android:name="com.someapp.android">

Стало:

<provider
android:authorities="com.someapp.android.test"
android:name="com.someapp.android">

Как и в проблеме 2, значение атрибута name менять не надо.

Стол заказов

Я снова принимаю заказы! Если вы прочитали инструкцию, но у вас с ней возникли какие-то сложности, пишите в комментариях ссылку на приложение. Это обязательно! Искать «вайбер» или «клаш оф кланс» я не буду. Одну копию я делаю бесплатно. Результат не гарантирую — тестируйте. Если нужно больше копий, или есть какие-либо нестандартные пожелания — пишите в обратку, договоримся. Если хотите отблагодарить пинтой пива и за одну копию, то кошельки здесь.

PS. Пользователи *NIX-систем могут попробовать сделать копии приложений автоматически с помощью этого несложного bash-скрипта:
https://github.com/kodopik/Copyroid
Пулл-реквесты приветствуются!

2 009 thoughts on “Android: как установить два одинаковых приложения на один телефон”

    1. Уже нет ни 1.4.52, ни 1.4.51 — видать сырые, ссылка ведет на 1.4.49

    2. Странно ) очень странно.
      Я успел скачать версию 1.4.52 — но она на 1 мб. меньше версии 1.4.49

  1. Здравтвуйте,сделайте пожалуйста измененый файл бум бич с плей маркета

    1. Попробовал на Linux с помощью Copyroid разобрать файл, но он не признал его за файл Android: «Copyroid makes a copy of an Android application.»

    2. bash /usr/local/bin/Copyroid.bash mobiletaxi.apk MODE
      Папки пробовал менять. Мне кажется, надо установить framework. Только какой, еще не знаю.

    3. Понял. Ваша копия работает, спасибо большое. Единственное, что не работает — это карта, правда, я ею не пользуюсь, но надо будет самому вникнуть (когда научусь компилировать с помощью Вашего скрипта).

    4. В общем, получилось. Не совсем красиво, но получилось. При запуске напрямую через терминал упорно пишет: «Copyroid makes a copy of an Android application.». Причина в том, что не видит apktool.jar.
      Получилось же, когда я запустил bash как исполняемый файл. Правда, не подписался файл на выходе. Подписал в другой программе. Работает параллельно с Вашей копией (устанавливал с другим суффиксом).
      Спасибо еще раз.
      Буду дальше ковырять.

    5. Удалось подключить карту Google к своему клону.

    6. Интересно было бы узнать про карту. Как удалось подключить?

    7. Воспользовался советом на 4pda: http://4pda.ru/forum/index.php?showtopic=461675&st=21600#entry38803006, только SHA1 certificat получил попроще с помощью программки certchecker.jar (взял ее отсюда: http://4pda.ru/forum/index.php?s=&showtopic=557858&view=findpost&p=33768613).
      Карта подключилась, но не определялось местонахождение. Пришлось править манифест: в строке <provider android:authorities="copy.ua.copy.com.evos.google_map.google_apis.places.PlaceProvider" убрал вначале copy.

  2. Добрый день! Я как и колега хочу сделать клон mobiletaxi по Вашему рецепту, но после установки приложение не запускается, пишет «приложение остановлено». Можете сказать где ошибка? Мой файл-клон http://rghost.ru/6Jn285vd9 . Оригинал файла http://rghost.ru/64yMDmCh6

    1. Вы переименовали com.evos в com.evos1, но таких ресурсов в файле нет. Вам нужно было выполнить то, что написано в «Проблеме 2», а особенно внимательно отнестись к тому, что написано там после слов «Обратите внимание».

      Вот копия, должна работать, проверяйте: http://dfiles.ru/files/k2ejbwdjs

    2. Спс. Я просто переименовал все com.evos наcom.evos1… а оказывается некоторые необходимо было оставить без изменений. Ок.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *