Найти в Дзене
mamaich

Как сменить имя package внутри APK файла

Данную статью не стоит принимать, как универсальную инструкцию. Для ряда программ достаточно просто изменить "package=" в файле AndroidManifest.xml. Для других - даже просто разобрать APK с помощью apktool и собрать без изменений ей же назад в пакет - уже приведет к проблемам. Так что вопрос этой темы - очень творческий, и описать его в одной статье просто невозможно. Описанный ниже способ сработал на Lampa, с небольшими изменениями на FX File Explorer, но на ряде приложений, например, на MiXplorer он не приводит к результату. -------------------------------------------------------------------------------------- Для установки пакетов на устройства с урезанным маркетплейсом, может потребоваться поменять имя пакета внутри APK. Опишу как превратить APK файл от Lampa в, например, IPTV Portal.
Я пробовал готовые утилиты, переименовывающие пакеты - однако с ними у меня именно Лампа не заработала. Зато вручную всё прошло гладко. Для ручного переименования потребуются утилиты apktool (чтобы

Данную статью не стоит принимать, как универсальную инструкцию.

Для ряда программ достаточно просто изменить "package=" в файле AndroidManifest.xml. Для других - даже просто разобрать APK с помощью apktool и собрать без изменений ей же назад в пакет - уже приведет к проблемам. Так что вопрос этой темы - очень творческий, и описать его в одной статье просто невозможно.

Описанный ниже способ сработал на Lampa, с небольшими изменениями на FX File Explorer, но на ряде приложений, например, на MiXplorer он не приводит к результату.

--------------------------------------------------------------------------------------

Для установки пакетов на устройства с урезанным маркетплейсом, может потребоваться поменять имя пакета внутри APK.

Опишу как превратить APK файл от Lampa в, например, IPTV Portal.
Я пробовал готовые утилиты, переименовывающие пакеты - однако с ними у меня именно Лампа не заработала. Зато вручную всё прошло гладко.

Для ручного переименования потребуются утилиты apktool (чтобы "разобрать" и потом "собрать назад" APK), apksigner (подойдет любая утилита, подписывающая готовые АРК).


1. Разбираем APK Лампы на составляющие:

java.exe -jar apktool_2.9.3.jar d lampa.apk

Будет создана папка lampa с развернутым и готовым для редактирования содержимым АРК.

2. В папке правим файл AndroidManifest.xml, в самой первой строке заменяем package="top.rootu.lampa" (название пакета лампы) на package="ru.iptvportal.stb". Другие строки не трогаем. В инструкциях, бродящих по интернету, правят также файл apktool.yml - но у меня в нем строк с именем пакета не было.

3. Идем в папки smali, smali_classes2, smali_classes3 и тд. Находим в них папки, принадлежащие Лампе (top/rootu/lampa) и копируем их в папки с названием подменяемого приложения (ru/iptvportal/stb). Именно копируем, а не переименовываем, как делают некоторые утилиты. Таким образом мы сохраняем старые классы - повышаем шанс, что пакет потом заработает.

См скриншот, слева оригинальный путь, справа новый:

и так по всем папкам smali*
и так по всем папкам smali*

4. А теперь самое ответственное. Внутри всех файлов в "новых" папках smali*/ru/iptvportal/stb ищем строку "Ltop/rootu/lampa" (без кавычек, L заглавная, после нее имя класса Лампы, разделенное слешами) и заменяем на "Lru/iptvportal/stb" (тоже без кавычек). Меняем везде:

-2

Данное действие проводим только над новыми файлами в папках smali, созданными в пункте 3, другие файлы и папки не трогаем!

4.1 Добавлено 17.12.2024: требуется также поправить файл AndroidMainfest.xml. Везде где в строках указано относительное имя класса (например, строки вида android:value=".some.string") надо поменять на полное имя класса относительно оригинального имени пакета (android:value="top.rootu.lampa.some.string").

5. Собираем APK назад:

java.exe -jar apktool_2.9.3.jar b lampa

Новый APK будет лежать в папке lampa/dist.

6. Подписываем APK.

java.exe -jar apksigner.jar sign --ks mykey.jks lampa/dist/lampa.apk


После чего тестируем и убеждаемся, что Лампа заработала, но в списке пакетов у нее числится класс ru.iptvportal.stb.