Стол заказов — в конце статьи.
Для установки двух (или больше) одинаковых приложений на один телефон нужно сменить значение package
в файле AndroidManifest.xml
, находящемся внутри apk-билда.
Например, имеем:
android:versioncode="20110420"
android:versionname="1.8.0"
package="ru.e_num"
xmlns:android="http://schemas.android.com/apk/res/android">
Для того, чтобы установить это приложение ещё раз, нужно сделать примерно следующее:
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
прописаны относительные пути к различным активити. Например:
android:label="E-NUM"
android:name=".SplashScreenActivity"
android:screenOrientation="portrait">
В такой ситуации нужно прописать полный путь ко всем активити, то есть:
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
). Например, было:
android:authorities="com.someapp.android"
android:name="com.someapp.android">
Стало:
android:authorities="com.someapp.android.test"
android:name="com.someapp.android">
Как и в проблеме 2, значение атрибута name
менять не надо.
Стол заказов
Я снова принимаю заказы! Если вы прочитали инструкцию, но у вас с ней возникли какие-то сложности, пишите в комментариях ссылку на приложение. Это обязательно! Искать «вайбер» или «клаш оф кланс» я не буду. Одну копию я делаю бесплатно. Результат не гарантирую — тестируйте. Если нужно больше копий, или есть какие-либо нестандартные пожелания — пишите в обратку, договоримся. Если хотите отблагодарить пинтой пива и за одну копию, то кошельки здесь.
PS. Пользователи *NIX-систем могут попробовать сделать копии приложений автоматически с помощью этого несложного bash-скрипта:
https://github.com/kodopik/Copyroid
Пулл-реквесты приветствуются!
https://play.google.com/store/search?c=apps&q=%D1%83%D0%BB%D0%B5%D1%82%D0%BD%D1%8B%D0%B9++%D0%BA%D0%BB%D0%B5%D0%B2 вот такая Вот просьба
Пробуй: http://dfiles.ru/files/iizlg2qoe
А вы бы не могли написать какие строки и в какую другую папку перенести , что бы соблюдались пути.Попробую сделать это ,може что то получится.Спасибо.
Это реально ОЧЕНЬ много изменений нужно внести. Именно поэтому я и сделал скрипт, который делает это автоматически. Чаще всего нужно внести изменения в несколько сотен файлов *.smali, что вручную практически невозможно. Вам будет проще освоить азы Linux и воспользоваться моим скриптом, чем вручную проделывать такое количество работы. Скрипт бесплатен и его исходный код открыт:
https://github.com/kodopik/Copyroid/blob/master/Copyroid.bash
По сути, вам просто нужно его запустить на *NIX-подобной системе (например, Linux) и указать в качестве аргумента apk-файл (и, по желанию, суффикс, который добавляется к имени package). Например:
Вот, кстати, пример ниже: WhatsApp не удалось сделать моим скриптом, но получилось вручную. Как повезёт. Тут не угадаешь.
Спасибо за советы.А такой скрипт под виндовс сделать у Вас желания нет?
Желание есть, нет возможности :) Ну или знаний: я не особо представляю, как это на Windows сделать.
Понятно.А всётаки ради эксперимента не хотите ручками сделать клон моего приложения , а по результатам написать как это сделать с ньюансами , что бы и у меня получилось , что бы и я поверил в себя ,что могу сам это сделать.Спасибо.
Так я именно это и делал, и у меня не получилось. Причину я не нашёл, поэтому и дал ссылку на копию, сделанную скриптом.
Даже так?!Ну что ж спасибо за помощь,если вдруг найдёте причину напишите пожалуйста,что да как.
Конечно напишу. А пока воспользуйтесь той копией, что я сделал скриптом. Это одна из самых популярных программ в моём «Столе заказов», поэтому копии новых версий появляются стабильно.
https://play.google.com/store/apps/details?id=com.instagram.android
Доброго дня )
Вот такая просьба )
Привет! Пробуй: http://dfiles.ru/files/vy1lcrm20
Огромное спасибо ) пользуюсь с удовольствием )
Спасибо,уже пользуюсь.
доброго дня,программа сделанная вами работает на ура(http://www.x007.ru/prog/Micra_2T.apk) клон (http://dfiles.ru/files/r48fbo099) ,мне нужно еще 6 отпишитесь можете ли вы это для меня сделать и сколько мне кинуть на пиво.
Напишите в обратную связь, договоримся:
http://kodopik.ru/mailtome/
ответ пока еще не пришел
Что-то пока ничего не получал… Возможно, какая-то задержка в почтовике. Отвечу сразу же, как получу.
Привет) вроде в комментариях не нашел клона.. Сделай пожайлуста вот эту)) https://play.google.com/store/apps/details?id=su.skat.client&hl=ru
Привет! Пробуй: http://dfiles.ru/files/cy3kvkf42
спасибо большое) с первого заказа с клона, подкину на пиво)
Здравствуйте! Не могли бы Вы сделать копию к вот этой программе?) https://yadi.sk/d/GaGrrODlcmeWa
Пробуйте: http://dfiles.ru/files/qr7w3i63x
Спасибо огромное!