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. Сожалею, но не получится: проблема возникает уже на этапе распаковки apk-файла (т.е. даже до замены чего-либо дело не доходит).

      Если интересно, ошибка такая:

      Exception in thread "main" brut.androlib.err.UndefinedResObject: resource spec: 0x0101045f

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

    2. если это возможно ))) то да очень даже устроит ))

  1. добрый день! Надеюсь на вашу помощь. Работаю с двумя программами такси драйвера (основная и альтернативная сборка). Но нужна еще третья, для работы с третьей фирмой. Если это возможно, попробуйте пож-та сделать рабочий клон либо основной либо альтернативной сборки, естественно отблагодарю вас за работу через киви)

    http://wap.taxsee.ru/soft/android/index.html

    1. При включении всех трех программ, клон не может отобразить заказы и количество машин в районах. Получается проблема в работе с сервером или?

    2. К сожалению, я не могу проверить, т.к. не имею позывного и пароля.

    1. Подскажите с помощью чего открыть recourses ,нужно там много чего переименовывать.Раньше это делал с помощью apkeditor прямо на смарте,а с 46 версии это сделать не могу.

  2. Здравствуйте,спасибо за клон.Нужен еще один ,но вы написали что не делаете больше одного поэтому решил попробовать сделать сам по вашей инструкции.ВЫ наверной что то не дописываете я не смог декомпилировать приложение останавливается процес декомпиляции с ошибкой .Пробовал апекатулом,апекаменеджером результата нет. Направте на путь истинный.

    1. Здравствуйте. Я всё дописываю :) Но случается, что программа не распаковывается. Встречался недавно с таким на попытке клонировать Facebook, вот комментарий: http://goo.gl/WTExdf

      Что касается Вашей ситуации, то напишите текст ошибки.

  3. Вы мне сделали клон,значит приложение распаковалось.А у меня при декомпиляции доходит до resource и останавливается с ошибкой-java.io.ioexception:expected:0x001c0001,got:0x00000000

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

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