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 027 thoughts on “Android: как установить два одинаковых приложения на один телефон”

    1. Спасибо большое, а не можешь подсказать точнее, что именно надо поменять, чтоб запустить третью и так далее копии?

    2. Так для того статья и написана. В ней всё подробно изложено. Подробнее некуда.

  1. Добрый день, очень нужно двойной мобаил такси,, готов компенсировать умственные труды)) 0939537714, 0683270207
    Заранее благодарен.

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

  2. Добрый день, прошу помочь.

    правила читал — но моей программы нет в playmarket

    вот ссылка:

    https://www.dropbox.com/s/qva88zr7rq0o0s4/stmobile.apk

    нужно иметь возможность работать под разными логинами (от логина зависит база которая загружается в программу)
    тк это поможет мне и моим коллегам сэкономить время и деньги с меня компенсация.

    1. Ссылка может быть любая, главное, чтобы по ней можно было скачать.

      Кстати, программа есть в Google Play: https://play.google.com/store/apps/details?id=ru.systtech.mobile (ну это к слову просто).

      Вот копия (сделал на основе версии из дропбокса, не из маркета): http://goo.gl/fAwg7E

      Проверить, работают ли оригинал и копия с разными аккаунтами, не могу: у меня нет ни одного аккаунта. Так что жду отзыва о том, работает или нет.

    2. Спасибо, неожиданно быстро. Приложение устанавливается, но при запуске выдает ошибку.
      вы пробовали запустить?

    3. Может, вот так заработает: http://goo.gl/JCXX25
      Хотя не обещаю. Программа подгружает какие-то библиотеки, что может нарушить полноценную работу копии.

    4. добрый день.
      заработало, но путь к рабочим директориям остается в обоих программах одинаков.
      в программе в настройки вводятся данные для соединения и подгрузки данных по паре логин пароль.
      когда обе программы запущены — изменение в одной тут же происходят в другой. цель как раз работать с двумя разными базами (двумя парами логин пароль)
      реально поправить пути? учитывая что работа с программой подразумевает ежедневную загрузку и выгрузку изменений в этой самой базе данных, а значит пути должны быть поправлены все?
      PS я бы предпочел дальнейшую беседу через почту, если Вы сочтете это возможным.

    1. Что-то стрёмно мне копию банковского приложения делать и в общий доступ выкладывать.

    1. Нашёл )http://kodopik.ru/2013-09-18/android-kak-ustanovit-dva-odinakovy-h-prilozheniya-na-odin-telefon/#comment-1242700322

    2. как работает? не мешают друг другу? и при обновлении клон не обновляется?

    3. Клон обновиться не может, т.к. package name — это уникальный идентификатор приложения, и если мы его меняем, то, по сути, это уже другое приложение.

    4. понятно. поставил потестил, друг другу не мешают, лагов никаких не было. Спасибо)

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

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