Как изменить имя пакета apk
Перейти к содержимому

Как изменить имя пакета apk

  • автор:

Как изменить имя пакета в Android Studio.

Иногда возникают ситуации, когда по окончанию работы над проектом обнаруживается, что имя пакета, заданного при создании проекта, следует изменить. Подобная ситуация может возникнуть, если в магазине приложений Google Play данное имя уже используется или же, к примеру, вы допустили ошибку при создании проекта и теперь не можете обновить свое приложение. Такая неприятность легко решается если вы использовали в качестве IDE старенький Eclipse,но вот с Android Studio дела обстоят немного хуже.

Попытка сделать рефакторинг имени пакета в студии приводит к тому, что корректно изменится лишь название проекта – com.name. appname . Это происходит потому, что Anndroid Studio объединяет средние имена пакета (по сути папки) в одно название и считает остальную часть принадлежащей конкретному разработчику или компании, а значит является их идентификатором. Но все же изменить средние имена пакета можно и без особых проблем. Первым способом является изменение название папок внутри проекта, но за этим последует рутинное изменение всех связей в проекте, к тому же и так тормозной Gradle начнёт капризничать пуще прежнего и привести его работу в порядок будет крайне сложно. Потому я рекомендую воспользоваться вторым, более простым и быстрым способом полного изменения имени пакета.
Для начала необходимо открепить объединение средних имен в пакете, для этого нужно выбрать параметры отображения структуры проекта, которая находится над самой текстурой и убрать галочку “Compact Empty Middle Packages”.

Когда имена будут откреплены, каждое из имён можно изменить отдельно. Меняем необходимые имена выбрав из контекстного меню Refactor – > Rename или нажав сочетание клавиш Shift+F6. При появлении предупреждения нажимаем кнопку Rename Package.

При изменении первого имени пакета – com/ru/ua необходимо нажать “Rename all”, так как внутри этой папки расположены паки библиотек, в которых так же необходимо заменить имена.
Теперь имя пакета изменено, связи в классах переписаны, но настройки проекта еще не знают что мы что-то сделали. Для оповещения открываем файл с настройками Gradle который называется build.gradle (Module:app), находим в нём следующий участок кода и изменяем имя пакета на новое.

defaultConfig

В большинстве случаев Gradle сам определит, что были внесены изменения и предложит синхронизироваться с проектом, показав соответствующее уведомление в правом верхнем углу. Но если этого не произошло — необходимо выполнить синхронизацию вручную. Для этого отправляемся в меню студии Tools –> Android –> Sync Project With Gradle Files .
Последнее что осталось сделать, это изменить имя пакета в манифесте, хотя для активностей имена уже будут изменены. Открываем файл манифеста AndroidManifest.xml и в самом верху изменяем имя

 http://schemas.android.com/apk/res/android" package="com.awesomedevelop.test" >

Если после выполнения всех шагов Android Studio не сможет инициализировать R.java , и будут выводиться соответствующие уведомления «Cannot resolve symbol R» — необходимо очистить проект перейдя в соответствующее меню студии Build -> Clean Project.

How to change package name of any apk file using apktool

In this blog I will guide you how to rename the package name of any apk file. Usually this type of thing is needed when apk is related to any enterprise level feature where you want to give the same apk for different kinds of manufacture for signing purposes, or might be required for any other scenarios where you need to change the package name of the same apk for different purposes.

You can do such a thing using a preferred IDE as well (like Android Studio, Eclips, IntelIiJ IDEA, ect.) but for that you need basic programming knowledge and doing the same will need some time also for generating a new apk with new package name. But you can do the same without any programming knowledge and with minimal time using apktool.

To know more about what is apktool, you can refer below link

To install and configure apktool, you can refer steps from below official link

After successful configuration you can refer below process to rename package name of apk file.

  • You can create one folder at a specific location where you want to decompile source files of the apk. Say suppose I am creating folder with name as DecompiledAPK
  • Open command line interface(CLI) from that specific location. Steps can be different for different OS. Refer below screenshot for mac where I have created DecompileAPK inside the Library folder (you can use any folder), and navigate to that folder

  • Now, use apktool d (apk-path) command as per below screenshot, which will generate some files inside the DecompileAPK folder. My current apk file path is inside the download folder.

  • After compilation of the decompilation process you will see some files inside the application name folder. My app name is dummyAPK so decompiled source code will be present inside DecompileAPK -> dummyAPK. You will see some files like the screenshot below. File count can be changed as per functionality inside the apk you are decompiling.

  • Now, you have to replace the new package name at 2 places. Inside AndroidManifest.xml file and inside apktool.yml folder.
  • Inside AndroidManifest.xml you will see package value at the first or second line. Refer screenshot below where package value is com.dummyapk which is the actual package name of the current apk.

  • Now replace the actual package name with the target package name. Say suppose I want an apk with com.tempapk package name. So just change the value of the package to com.tempapk as per below screenshot. Make sure to save the changes after making a change in package name. No need to change anything else.

  • Another change we have to do is inside the apktool.yml file. Open the file and look for renameManifestPackage. You will find null as a value. Refere screenshot below

  • Just change the renameManifestPackage’s value to the same value as com.tempapk(your target package name) and save the changes. Refer below screenshot for the same

  • Now, at the same location where you are inside CLI, execute the command as apktool b (decompiled-folder). In my case the decompiled folder name is dummyAPK. Refer below screenshot for the same.

  • Once after a successful process you will see some new files inside the dummyAPK folder shown in the below screenshot. But to collect the apk file you have to see inside the dist folder. You will see a new apk with the same name (dummyAPK) but the package name of that apk is target package name as com.tempapk rather than com.dummyapk. To verify the same you can use any platform which you are using to check the package name of the application.

That’s all to rename the package name of any application which you want. You can now share this new apk to respected people for further use.

Changing the package name

@SathishKumarJ Read the Question Properly and then comment. He has mentioned usnig Smali in Question .

Apr 23, 2016 at 7:21

3 Answers 3

Assuming your goal is to rename the package name of the apk, the package names used for the classes are irrelevant. The package name of the apk is mostly unrelated to the package names of any classes in the apk. And there’s no reason you need to touch the package id.

I would recommend unpacking the apk with apktool, and then edit the apktool.yml, setting renameManifestPackage to the new package name. Then when you rebuild the apk with apktool, it should use aapt’s —rename-manifest-package functionality to change the package name.

After that, just resign the new apk and you should be good to go.

apktool d app.apk // change "renameManifestPackage: null" in app/apktool.yml // to "renameManifestPackage: my.new.package" apktool b app -o new_app.apk jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore ~/my.keystore new_app.apk mykeyname 

And just to reiterate, you don’t need to modify the package names of any classes.

Saved searches

Use saved searches to filter your results more quickly

Cancel Create saved search

You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session.

This is a program to change an app name, a package name and an icon in Android apk package.

License

dvaoru/ApkRenamer

This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Go to file

Folders and files

Last commit message
Last commit date

Latest commit

History

View all files

Repository files navigation

ApkRenamer

Use the renamer program to change an app name, a package name and an icon in an Android app.

Download:

Usage:

java -jar renamer.jar [-a] [-o] [-n] [-p] [-i]

You can place app.apk to «in» folder, new_icon.png to «icon» folder and run java -jar renamer.jar without arguments. Your renamed_app.apk will be placed in «out» folder

Optionally you can add the [-d] flag to perform a «deep renaming».

This will search for instances of the old package name in all files and replace them with the new package name.

If you rename an app with the deep renaming you can install the renamed app along with the original app on your device.

Note that the deep renaming may cause unintended side effects, such as breaking app functionality.

Optionally you can add the [-t] flag and the program extract all apk resources at «temp» folder where you can modify it as you want.

After you made the changes you can resume program flow, and it builds and signs the renamed apk

Optionally you can add the [-m] flag and the program will not modify the resources of the apk.

It extracts the apk resources to «temp» folder where you can modify what you want manually.

The program will not rename anything. After you made changes resume the program, and it builds and signs the package.

Optionally, you can pass arguments to Apktool.

To implement arguments when Apktool decodes the apk, add the following flag: -da «-option1 -option2» . For example, -da «—keep-broken-res» . The string with arguments for Apktool should be enclosed in quotation marks.

To implement arguments when Apktool builds the apk, add the following flag: -ba «-option1 -option2» . For example, -ba «—use-aapt2» . The string with arguments for Apktool should be enclosed in quotation marks.

You can find a list of Apktool’s arguments on its official site.

Optionally add the [-r] flag and the program will replace text in APK files using a dictionary.

Dictionary file format:

original text:replacement text another original text:another replacement text 

The splitter is «:» symbol. . If you need to include this symbol in the replacement text, you can escape it using «/:».

Notice:

  • You may not use ApkRenamer for any illegal purposes;
  • The repacked APKs should not violate the original licenses.

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

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