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. Вот эта игра https://play.google.com/store/apps/details?id=com.kabam.fortress&hl=ru&referrer=utm_source%3Dgoogle%26utm_medium%3Dorganic%26utm_term%3D%D1%81%D0%BA%D0%B0%D1%87%D0%B0%D1%82%D1%8C+hobbit+king.+of+middle-earth&pcampaignid=APPU_o93fU_S9GOGb0QXjpIHwCg

    Вы говорили что не смогли когда-то сделать. А за отдельное вознаграждение попытаетесь еще рпз , пожалуйста?

    1. За что мне брать вознаграждение, если у меня не получается? :) Или Вы намекаете, что я «недостаточно хорошо пытался»? :)
      Как раз недавно попробовал, ниже в комментариях просили. Нет, возникает ошибка, которую я не могу устранить. Впрочем, это нормально: в онлайн-играх так часто бывает.

    1. К сожалению, с программами-мессенджерами ещё ни разу не получилось. Это касается и WhatsApp, и Viber, и других аналогичных. Видимо, это как-то связано с системой авторизации по номеру телефона. Т.е. копия устанавливается, но толку от неё нет, т.к. не получается активировать. Впрочем, если хочешь попробовать, то вот ссылка:
      http://dfiles.ru/files/uqcw59guh

  2. привет не могли бы помочь

    I: Smaling…

    I: Building resources…

    /sdcard/1 Protect/Home_src/res/values/styles.xml:12: error :Error retrieving parent for item: No resource found that matches the given name ‘Layout’.

    Exception in thread «main» brut.androlib.AndrolibException: brut.androlib.AndrolibException: brut.common.BrutException: could not exec command:

    [/data/data/per.pqy.apktool/lix/aapt, p, —min-sdk-version, 15, —target-sdk-version, 15, -F,

    /data/data/per.pqy.apktool/APKTOOL2802122322761797394.tmp, -0, arsc, -I, ?/apktool/framework/1.apk, -I, ?/apktool/framework/2.apk, -S, /sdcard/1 Protect/Home_src/res, -M, /sdcard/1 Protect/Home_src/AndroidManifest.xml]

    at brut.androlib.Androlib.buildResourcesFull(Androlib.java:358)

    at brut.androlib.Androlib.buildResources(Androlib.java:283)

    at brut.androlib.Androlib.build(Androlib.java:206)

    at brut.androlib.Androlib.build(Androlib.java:176)

    at brut.apktool.Main.cmdBuild(Main.java:228)

    at brut.apktool.Main.main(Main.java:79)

    Caused by: brut.androlib.AndrolibException: brut.common.BrutException: could not exec command:

    [/data/data/per.pqy.apktool/lix/aapt, p, —min-sdk-version, 15, —target-sdk-version, 15, -F,

    /data/data/per.pqy.apktool/APKTOOL2802122322761797394.tmp, -0, arsc, -I, ?/apktool/framework/1.apk, -I,

    ?/apktool/framework/2.apk, -S, /sdcard/1 Protect/Home_src/res, -M, /sdcard/1 Protect/Home_src/AndroidManifest.xml]

    at brut.androlib.res.AndrolibResources.aaptPackage(AndrolibResources.java:357)

    at brut.androlib.Androlib.buildResourcesFull(Androlib.java:336)

    … 5 more

    Caused by: brut.common.BrutException: could not exec command: [/data/data/per.pqy.apktool/lix/aapt, p, —min-sdk-version, 15,

    —target-sdk-version, 15, -F, /data/data/per.pqy.apktool/APKTOOL2802122322761797394.tmp, -0, arsc, -I, ?/apktool/framework/1.apk,

    -I, ?/apktool/framework/2.apk, -S, /sdcard/1 Protect/Home_src/res, -M, /sdcard/1 Protect/Home_src/AndroidManifest.xml]

    at brut.util.OS.exec(OS.java:89)

    at brut.androlib.res.AndrolibResources.aaptPackage(AndrolibResources.java:355)

    … 6 more

    1. /sdcard/1 Protect/Home_src/res/values/styles.xml:12: error :Error retrieving parent for item: No resource found that matches the given name 'Layout'.

      Тут может быть либо криворукость разработчиков, либо баг в apktook (или старая его версия; кстати, какая она у тебя?). Я бы предложил просто попробовать удалить эту 12-ю строчку из файла styles.xml :)

      А ещё там в пути есть пробел (/1 Protect/) — откуда он взялся?

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

    1. Спасибо Вам за Ваш труд. Все качественно и очень быстро,очень радует. На пиво бросил на яндекс деньги. И еще раз спасибо…

    1. Отлично, спасибо тебе большое!!! Временя инвизибл настали:)

    1. спасибо, видео всего процеса для того чтобы зделать клон а то ето приложение очень часто обновляется и прежние версии не открываются

    2. Пока я не снимал такого видео. Но в будущем, возможно, попробую снять.

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

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