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. Привет! Сделай пожалуйста копию на приложение галактика знакомств скачать можно на javagala.ru и скинь ссылку на копию. Заранее благодарен!!!

  2. за хорошее вознаграждение можешь много копий одного приложения сделать?

    1. Delivery to the following recipient failed permanently:
      da1**@gmail.com

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

      Если писал не ты, то извини за беспокойство.

  3. Антон, шесть раз скачивал, скачивал и с компа и с телефона одного друга, даже просил чувака с другой страны, толку нету «Сбой разбора пакета» сделай пожалуйста уй: http://goo.gl/MjDGxF

    1. Тогда не получится. Похоже, они что-то там намудрили внутри, из-за чего заглавный файл имеет неверный формат:

      Failure [INSTALL_PARSE_FAILED_MANIFEST_MALFORMED]

  4. Здравствуйте! Не могли бы Вы сделать копию приложения: http://4pda.ru/forum/index.php?showtopic=522738, версия 1.2.1. Сам я далек от той работы которую вы так подробно изложили чуть выше в теме. Пытался, но только начальный файл порчу. Заранее спасибо большое!

    1. К сожалению, эту не могу. Там некоторые сложности из-за криворукости разработчиков, которые не хотят следовать документации Google. Вылечить можно, но долго и нудно.

      Если интересуют подробности, то путь к ресурсам не совпадает с package приложения. Возможно, именно поэтому и у тебя не получилось.

    1. Вау! Поставилось :-) Буду пробовать в работе. До этого пробовал побороть его сам по разным инструкциям, но не получалось. Там какие-то хитрости были? :_)
      P.S. Выполняю пункт 7 инструкции стола заказов ;-)

    2. Да нет, вроде не было. Скажи, что у тебя не получилось, и я, возможно, укажу проблему. Можешь также прислать свой изменённый вариант, попробую глянуть там.

    3. Продолжаю пробовать :-) Делаю простейшее — меняю имя ru.mw на copy.ru.mw Собираю apk. Устанавливается нормально, но не запускается. Ошибка «Приложение неожиданно остановилось». Собранный apk тут:http://ge.tt/7pcF4UO1/v/0?c Подозреваю что софт для переработки apk кривоват…

    4. Прочитай «Проблему 2» внимательно. Там сказано, что дописываем «test» (ну или «copy», как у тебя) только к package, а в активити нужно прописывать старый параметр package. То есть, к примеру, у тебя должно быть не

      &lt;activity android:name="copy.ru.mw.ITunesActivity" android:theme="@style/Theme.Empty"&gt;</pre>

      а

      &lt;activity android:name="ru.mw.ITunesActivity" android:theme="@style/Theme.Empty"&gt;</pre>

      при том что в теге manifest имеем

      package="copy.ru.mw"</pre>
    5. Прошу прощения за отсутствие — работа… Хотелось бы все-таки прояснить ЧЯДНТ :-) Разобрал Ваш apk, сравниваю со своим. Нашел одно отличие — в вашем apk в директории smail «волшебным» образом появилась директория copy! У меня она автоматически никак не появляется. Вы это делали вручную? Также в вашем apk все activity ссылаются на copy.ru.mw а не на исходное ru.mw…. Проясните, пожалуйста, этот момент…

    6. Я тут раньше в комментах объяснял, почему так; если интересно, почитай: http://goo.gl/gTEVHn

      Если вкратце, то при ручном производстве копий лучше дописывай текст в конец package, не создавай никаких папок, а к activity прописывай «старый» путь (который был до изменения package).

    7. Огромное спасибо за ссылку на коммент. Проанализировав понял, что менял только имя package, а пути не менял. Поменял и все получилось-запустилось. Правда так и остался вопрос почему простой способ (без смены путей) не помогал, ну да бог с ним. Способ со сменой путей наверное более правильный. Еще раз спасибо!

    8. Нет «более правильного» способа. Они абсолютно аналогичны. Только одним менее геморно делать вручную, а другим менее геморно делать автоматически с помощью того скрипта, который я в конце статьи привёл.

    1. ё-маё, у меня arm v7, так что эта не идёт… а на счет копии того что я просил. сделай просто чтоб устанавливалось, больше ничего не меняй ни названия, ни иконки, если это конечно не обязательно)

  5. Привет! А можешь сделать Zello версия: 1.32 (в теме под спойлером в низу, прошлые версии) http://4pda.ru/forum/index.php?showtopic=358202 ? Если возможно, то в названии добавить mod или clon, чтобы можно было знать, какой запускаешь.

    1. Звук не проходит. Заходил и в звуковые уведомления, в настройках, звук при тесте тож не проходит. Засада какая то…

    2. Если в копии что-то не работает, значит, это не из тех приложений, которые я могу сделать. Так как глубже я не копаю и программы не модифицирую. У меня достаточно узкая задача: сделать копию. Если это нарушает какой-то функционал программы (а в 90% случаев не нарушает), то извини, не получится с такой программой.

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

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