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. Сложная задача:
    Есть приложение Таксометр: https://play.google.com/store/apps/details?id=com.taximeter.android&hl=ru
    Необходимо чтобы параллельно работали 2 версии: 6.31 и 6.39
    https://onedrive.live.com/redir?resid=F0144EAF2F3C0396!912&authkey=!AJKCJ1IlbmK_ARw&ithint=folder%2capk
    Но при этом проверяется версия программы, т.е. 6.31 должен представляться как 6.39, и работать параллельно с оригинальным 6.39
    И самое главное: при 2-х сразу запущенных программах в режиме таксометр они начинают мигать показаниями на экране, и показания счетчика в одной программе синхронно мигают в другой, хотя там счетчик не запущен. Как будто идет «наводка»…
    Необходимо чтобы они работали полностью независимо.
    Делал клоны Lucky Patcher и APK Editor Pro, получается именно так, с «наводкой»
    Благодарность не будет знать границ в пределах разумного :)

    1. Копию я сделал, но как проверять, я не знаю. Наверное, нужны какие-то данные аккаунта для авторизации. В общем, пробуйте, комментируйте:
      https://yadi.sk/d/EsMhP-sajCPTi

    1. «Он» выполняет заказы. А вы — почитайте, пожалуйста, правила. Сделаю, когда будет время. И быстрый интернет.

  2. Я прочитал их ещё давно просто я подумал что записи 2 года и вв могли уже прекратить этим заниматся извините если чем-то обидел

    1. Ого, и правда уже 2 года…
      Ничуть не обидели. Просто ниже куча комментариев, на которые я отвечаю.
      Ваша копия ниже, я ответил на исходный комментарий.

    2. Спасибо но неработает выдаёт ошибку

    3. Щас на планшета попробую там память по-другому распределяется

    1. К сожалению не работает корректно, при работе 2х приложений, дает вводить данные — логинется приложение, НО при работе 2х приложений киви входить повторно в клона не получается — не дает вводить защитный код для разблокировки приложения клона, однако оригинальное работает в это время корректно
      Исправьте клона

    2. Я сделал всё что мог. Попробуйте не использовать защитный код для одной из версий приложения.

    3. к сожалению без кода приложение не работает, только с кодом

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

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