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

  1. Извините, сменена система комментариев (возможно, временно). Если вы не успели скачать какое-то приложение, напишите сюда.

    1. Не получается. Вернее, копия устанавливается и запускается, но для настроек и миров использует одну и ту же директорию (т.е. какую копию ни запускай, там будут одни и те же миры). Изменить её нельзя, т.к. она определяется в двоичном файле lib/armeabi-v7a/libminecraftpe.so

      PS. Если не секрет, зачем копия, если в одном приложении можно создавать несколько миров?

    2. Да чтобы держать сервер на версии 0.7.6 и играть одновременно на версии 0.8.0

    3. Ну попробуй, может, в двух версиях разные пути (хотя надежды мало):
      http://zalil.ru/34839344

      Чтобы изменить пути, нужно иметь исходник того двоичного файла, а его нет.

    1. В той про-лига настоящий ник не светит, да и денег меньше с рп — не совсем удачная версия какая то. Сделайте пожалуйста 1.6.3 на которую я вам ссылку дал. Заранее благодарен.

    2. Благодарю. Все отлично… и главное про-лига работает.

    1. Работает! Огромнейшее спасибо! Ещё тогда замечание: не помешало бы в статье указать, как переименовывать приложение.

    2. Тогда лайкни :)

      По поводу названия: это будет отдельная статья, эту не хотел перегружать. Но вообще это просто: в файле AndroidManifest.xml есть атрибут android:label в параметре application. Вот там можно вписать текст, который будет новым названием приложения.

      На самом деле, там может быть такая строка:
      android:label=»@string/app_name»
      В этом случае название берётся из файлов res/vaules*/strings.xml, но в кавычках может быть и просто текст, например
      android:label=»Моё приложение с новым именем»

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

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

    2. Очень жаль, но спасибо, что уделили время.

    1. Извини, не получается: после запуска копия зависает, не реагируя на кнопки. Не понял пока, как это побороть.

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

    3. И вправду зависает. Мне немного странным показалось что копия весит на 0.17 мб меньше,так вот что на это влияет?

    4. Не знаю, что влияет. На то, как работает apktool, я повлиять не могу. А может, дело в оптимизации с помощью zipalign.

    5. Понятно. Спасибо что уделили мне время!

    1. Рано благодаришь. Сделать не получится. Точнее, я сделал, но обе копии используют один аккаунт. А логин берёт из настроек телефона (а именно тот email на Gmail, который в аккаунте Google). Поэтому смысла от копии нет никакого. Но если вдруг надо, то вот:

      http://gfile.ru/uploaded/a2PfU

    2. Все равно спасибо. Я знаю,что это трудно.

    3. Для большинства приложений — нет. Но бывают сложные случаи… Копия-то сделалась нормально, но вот что у приложения внутри, это уже вне моей компетенции.

    4. Я сейчас попробовал.Установил. У меня зашло сразу с двух аккаунтов. Играется прекрасно.

    5. Ну если так, я только рад! Видимо, какая-то особенность моего телефона не дала запуститься копии.

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

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