Package "com" contains directories which cannot be renamed - android

Trying to change the name of the packages, a warning comes out. I want to change the com.example.app to ru.example.app
Thanks

simply create the new package on the project explorer.
select all the files and folders coming after the root package name from the package 1 (holding shift key on widows)
drop all those files to package 2
that's all. Android studio will do the rest of the refactoring for you.
Note: Before trying drag and drop for the whole files and folders, simply try just one file, and if you succeed, now you understood the trick and you are good to go as described above. (Y)

try to click the button the one with red circle and disable the "Compact Middle Packages"
and you able to you will be able to view the package names separately.you will see the "com directory" - try to "Shift + F6" and click the "Rename Current" then cliked "Refactor".
the android studio will do the refactor all in project

Related

What is the best way to change the package name of an Android project?

I want to change the package name of my Android project using Android Studio from let's say, com.company.myapp to com.name.company.myapp. While there are many questions and answers that deal with renaming a part of existing package name but I couldn't find any help on how to add a new part to it.
Please help me in this regard.
Thanks
Changing the application ID
(which is now independent of the package name) can be done very easily in one step. You don't have to touch AndroidManifest. Instead do the following:
1. Right click on the root folder of your project.
2. Click "Open Module Setting".
3. Go to the Default tab.
4. Change the applicationID to whatever package name you want. Press OK.
P.S. if you're using google-services.json , make sure you update new ID there too.
Rename package name
From project pane (left), click "Show option menu" it has settings like icon. Then from menu select "Compact Middle Packages"
Then you will observe your main package.name folder expands. Right-click your (Package.name/ middle/ last name of your package name) expanded > Refactor > Rename
Click "Do Refactor" from expanded Find tab at the bottom left of it.
Finally click build.gradle (app-level), then change applicationId to 'your.new.packageName'. Then SYNC NOW
Done
I tried more than 10 approaches and none of them worked (and sometimes not explained completely, so I deviated a little and found my own way. Again, my way is also not simple, but it does the job and Google Play didn't give me any errors.
My Solution
1. On the Project pane on the left, select Project (it might say Android).
2. Go to nameOfYourProject -> app ->src -> main ->java ->com -> example
3. Right click on "example" -> Refactor -> Rename and type your desired name, select the two check boxes and hit Refactor.
4. Now go one level above example (folder) and right click on "com", but this time DO NOT check the two check boxes (as it will also rename the "com.google...." parts of your project) and hit Refactor.
5. Now open your Manifist file and manually change the package to your desired name.
6. Rebuild your project. If you see any errors, just open the file with the error and change the package name manually.
7. Open your gradle.build file and change application ID, to your new package (only the parts of it, not everything) and hit Sync (top right side). Hopefully this works.
P.S. Another "easy way" might be to use Agent Ransack, search for the package name by enclosing it with quotations and manually change the package name. You might want to get a copy of your project before doing this. I didn't try it, cause I was already knee-deep with all the other methods here and didn't try.
This answer from the link in the comment provided would be most likely to have any issues arise, and would be simple. Possibly tedious depending on your app. I attempted changing package name once and android studio does not accomplish this very well.
Simple solution
To Rename APP package:
create a new package with the desired name by right clicking on
the Java folder → New → Package;
Cut then paste all your classes to the new package. Android Studio will refactor the package name everywhere;
delete the old package;
change AndroidManifest.xml and build.gradle file to the new package if you use this method.
Note: it’s more safe to make a new project.

Eclipse ADT - project structure changed showing blank packages

I am trying to rename my eclipse android project. I have tried Android Tools -> Rename Application Package. It gave me an error occurred see log.
I can't find any logs and suddenly this happen my project structure shows some blank and garbage packages as shown in picture.I tried deleting it but deleting them deletes my source code too.Any idea will be very helpful..
You can rename classes, packages and projects by right clicking on the class/package/project and choose: Refactor -> Rename. Check the Update references box to make sure all references to the project/class are also changed.
This behavior is totally ok.
A java package corresponds with an folder.
When a package/folder is empty eclipse will show it as "white boxed" without content (no arrow).
Example:
The class "AClass" in "com.me.pckg" corrensponds with
com/me/pckg/AClass.java
This means folder "com" and "me" contains no files. Eclipse represents this a "white boxed" packages (com and com.me). Package "com.me.pckg" is not empty.
Aware eclipse does not show the package structure NOT as hierarchical as you expect it in a file system view.
Vice versa if you put some file/-structure in your project eclipse will show new folders a packages. This happens after a refresh or a restart of eclipse, the later may be perceived as a sudden action.
If you want to change the type in "com.demo.alaramdemo" use Pieter12345 answer(, or just change the name of the folder in the file system)
If you want a more file system like view within eclipse use the "Navigator"-View
Finally i got the answer to this, With the help of a post above by Stefan
and a solution mentioned here on below link http://www.coderanch.com/t/105581/vc/Eclipse-hide-empty-packages
actually i had to create filters available on a inverted triangle in package explorer header.
In that u have to check filter of empty package , empty parent package etc
it worked for me.
Thanks all for the help ... :)

How do I rename the android package name? [duplicate]

This question already has answers here:
Rename package in Android Studio
(55 answers)
Closed 5 years ago.
Pressing Shift+F6 seems only to rename the last directory.
For example, in the project com.example.test it will offer to rename test only. The same applies if I navigate to package name in .java or Manifest file and press Shift+F6.
So is there a way to rename the package?
You can do this:
Change the package name manually in the manifest file.
Click on your R.java class and the press F6 (Refactor->Move...). It will allow you to move the class to another package, and all references to that class will be updated.
The best way to solve this is going to the AndroidManifest.xml: package="com.foocomp.fooapp:
Set the cursor on "foocomp"
Press Shift+F6
Rename Package to whatever you want
Repeat for "fooapp".
Works for me.
Also, replace in Path in Whole Project as it didn't change everything. Then Clean, Rebuild and it works --> In Android Studio / IntelliJ you should unmark "Compact Empty Middle Packages"
Eclipse:
Right click on the project > Android tools > Rename application package.
As simple as that...
In Android Studio:
open the build.gradle file > rename the applicationId under defaultConfig > synchronize
Goto your AndroidManifest.xml.
place your cursor in the package name like shown below don't select it just place it.
Then press shift+F6 you will get a popup window as shown below select
Rename package.
Enter your new name and select Refactor.
(Note since my cursor is on "something" only something is renamed.)
That's it done.
I found another solution for renaming a package in the entire project:
Open a file in the package.
IntelliJ displays the breadcrumbs of the file, above the opened file.
On the package you want renamed: Right click > Refactor > Rename.
This renames the package/directory throughout the entire project.
Deselect Hide Empty Middle Packages in Project Explorer Windows settings menu than you will be able to refactor each directory
Lets address the two use cases
**Rename a package name or Trim a package **
com.mycompany.mystupidapplicationname to com.mycompany.brandname
or
com.someothercompany.mystupidapplicationname to com.someothercompany.mystupidapplicationname
or
com.someothercompany.mystupidapplicationname to
someothercompany.brandname
Select Package in the drop down in Android Studio
Right click on the package which contains your MainActivity and refractor it
Select Rename Package and everything will work like a charm
But this will only rename the last part of package name
To rename the first or second part of package name . Create a new dummy file in the part of package which you want to rename. the file will be created inside mycompany.com.myapplicationame. Then move the file inside mycompany(right click => move) to make mycompany appear in tree view. This will make that part part of the tree view and will you help you to do a right click and rename that part.
Delete the dummy file
To Trim a package , simply right click and move the package part inside its grand parent
I found a good work around for this problem. Taking the example mentioned in the question, following are the steps for changing the package name from com.example.test to com.example2.test :
create a temporary directory, say temp inside the directory example (alongside directory test).
Go back to the Intellij project, select the folder com.example and Click Shift + F6. Now it offers to rename the text example. Here you can enter the new text you want and IntelliJ will do the rest for you.
Delete the temporary directory temp from the file system.
This idea can be used to refactor any part of the package name.
Good luck!!
This modification needs three steps :
Change the package name in the manifest
Refactor the name of your package with right click -> refactor -> rename in the tree view, then Android studio will display a window, select "rename package"
Change manually the application Id in the build.gradle file :
android / defaultconfig / application ID
Then clean / rebuild the project
Unfortunately all above didn't work for me. After having lots of trials,
What worked for me in Android Studio:
do a 'move' on the package to a new package name you want.(right
click on package and select Refactor -> Move)
If Refactor -> Move didn't work for you, then create a package with the name you want and move manually in the existing package to the new one, and then delete the old empty package.
Change package name in manifest (manually)
Have a replace for the old package name with the new package name
globally (in the full path by going to Edit -> Find -> Replace In
Path)
What I did was the following :
I simply created the package with the desired name , in the src folder , next to the current package with current name.
I dragged all contents of current package to new package , intellij popped a dialog box asking me if I want to refactor inside package references and project references to new package , I clicked 'yes' and TA-DAAA , worked like a charm.
In Android Studio 1.1, the simplest way is to open your project manifest file, then point to each part of the package name that you want to change it and press
SHIFT + F6 , then choose rename package and write the new name in the dialog box. That's all.
Most of the answers even the most voted answers didn't do the job properly, they seem to work and the builds work however, a closer look at the file structure and references will show you that not much was done. IntelliJ actually does this whole process automatically.
1) Go to Project Tab and make sure Packages is the active Tab in the drop down like so:
find your com.example package (note test as in com.example.test is not there) right-click and choose Refactor->Rename...
It will issue a warning that multiple directories... (which is actually the desired effect), click on Rename package.
Input the new package name and Refactor...
It will do searches and show you refactoring results.
Click on the Do Refactor button and it will do everything and even rename the folders and files involved... every reference is corrected to this new name.
2) Then Finally change the AndroidManifest.xml file
:)
Most of the answers even the most voted answers didn't do the job properly, they seem to work and the builds work however, a closer look at the file structure and references will show you that not much was done. IntelliJ actually does this whole process automatically.
I solved this issue by changing the directory name manually from the command line. Intellij then recognized the new package name automatically. I then had to do a search and replace for the package name in each file that imported it. This seems like an ugly workaround, but Intellij seemed unwilling to change the package name otherwise.
What I did was the following
Change manifest.
Close androidStudio
Open folder with Windows Explorer. Change folder names.
Open androidStudio, and do a search and replace.
Done!
If you want to rename full android package, this is the best way to do that:
Mark as checked - Comapct Emty Middle Packages
Right click on the packcage you want to change, and then
Refactor->Rename->Rename all
You can find video tutorial on this link:
https://www.youtube.com/watch?v=A-rITYZQj0A
In addition to #Cristian's answer above, I had to do two more steps to get it working correctly. I will sum all of it here:
Change the package name manually in the manifest file.
Click on your R.java class and the press F6 (Refactor->Move...). It will allow you to move the class to another package, and all references to that class will be updated.
Change manually the application Id in the build.gradle file : android / defaultconfig / application ID [source].
Create a new package with the desired name by right clicking on the java folder -> new -> package and select and drag all your classes to the new package. Android Studio will refactor the package name everywhere [source].
Solution 1: I changed src subfolder names, manifest file, activity headers and run/debug configuration. And still got building errors. If your project is not so big, just create a new project, copy-paste old files and change package names in headers of .java files and android manifest.
Solution 2: Inside IntelliJ 12, goto someFile.java and find your old package name
package com.myself.project2
click to which word that you want to change. Press Shift+F6.
Dialog comes, type new name.
Then goto Run/Edit configurations. Inside Launch radio button change package name to new one. It should work.
Other renaming options of IntelliJ are: http://www.jetbrains.com/idea/webhelp/rename-refactorings.html
Super simple approach:
Find R.java in the build/generated directory
Create new package directories, again under build/generated/etc
Move R.java to the newly created package.
A dialog will appear. Choose to refactor the existing code with the new package name.
Clean and Rebuild
Done!

Android - copy existing project with a new name in Eclipse

I'm using Eclipse. Say I have a project 'ProjectA' in the eclipseworkspace (in a folder ProjectA). I want to copy the project but with a new name (ProjectB) and have all the references in the new project adjusted. I can't find much help for what I thought would be a vary basic operation. I want to try out variations on the original design/code and creating a copy seemed the obvious way to go about it.
Any suggestions please.
Copy your project to a new one (Ctrl+c & Ctrl+v).
Change the package-name in your manifest
Rename your main package with refactor. Don't forget to select.
Change your application name in manifest
application android:icon="#drawable/icon" android:label="**new name**"
I just want to add an item to Mur Votema's list:
5) Don't forget to open the project you want to copy!
It just cost me some minutes to find out that it doesn't work with closed projects. :-)
If you are using Eclipse and all you want to do is clone your Android project and give it a new project name, simply do the a copy/paste (Ctrl-C & Ctrl-V - step 1 in Mur's answer above). Eclipse will ask you for a new project name when you paste and you're done. The Eclipse project name and directory are independent of the application name and package.
Mandatory tasks:
In Eclipse, Copy and paste the project. (Give the project a new name)
In Manifest, update the Package name and save. (Update Launch
Configuration)
Refactor and rename the Package name. (Update references)
Optional tasks:
In Manifest, change the Application label and icon, so after
installing the application on your device it won't be confused with
the first one.
Refactor and rename the java files name, so they won't be confused
with the original project files.
If you have used Encodings such as UTF-8 in your project (in order
to handle languages other than English) you might need to edit
and save those files so their font would be shown correctly.
Note: If you do the 3rd task before 2nd task, some undesired imports would be added to your java classes. You then will need to remove those imports.
There's now an automatic tool for that, part of the ADT.
Make sure the origin project is open in Eclipse, copy & paste to a new name
Right click on the new project > Android Tools > Rename Application Package
Done
As said above all you have to do is copy+paste the project and rename it ["myApp.11"] but sometimes this feature gets bugged in eclipse. One such case happens when you have more than one version of the jdk. to solve this close eclipse rename the older versions of the jdk with an underscore e.g. _jdk17.2
and retry. if you dont need these versions delete them.
Another thing I noticed is that if you leave android:label="#string/app_name" it somehow keeps the original app name when you view the copied app in the list of Applications in Settings > Applications > Manage applications but if you change it to android:label="Your App Name" it seems to work ok.
Also be sure to change your icons properly by deleting the old ones and importing the new ones.
I went to the workspace folder on C:/ (path different for all) copied the project folder (Project A), and pasted it with a new name (Project B). Change the name while in explorer. Then, through Eclipse, made a new android project with the new name (Project B). Different way of doing it.
I Just wanted to add this after struggling with a code i have at work:
DO NOT USE THE PACKAGE NAME EXPLICITLY IN YOUR JAVA CODE NO MATTER WHAT. YOU MIGHT NEED TO RENAME YOUR PROJECT .
EXAMPLES ARE : getResource() and setting the Bitmap source and such and such
it looks like that I had bad references to the package name. it name was used explicitly as a String (e.g "com.pakge.mypkg" ) instead of Context.getPackageName() .
try to reach this method anyways you can 'cos the way i just mentioned it might not work for you... try to reach the method name "getPackageName()" from different other objects.
I have to answer not comment as reputation not high enough - to say that I agree #jengelsma has the best answer, just copy and paste, but watch out for the (hidden) SVN files (in .svn folders)! Unless you want the same references as the other project you don't want these.
Team > disconnect and check 'also delete SVN meta data' on your new copy to do this.
Just want to add some more points :-
Be ensure that the package name must be different for new project and old project if both project are going to install on same machine.
also modify the same in Mainfest.xml
under
I used the eclipse Luna, I tried to copy an existing project (Project_A) as below
Create a new Java project (its name is as Project_B)
Right click on Project_B (to pop up the context menu)
Select the menu item "Import..." (to show the "Import" dialog)
On the list under the "Select an import source" field to extend the item "General"
Double click on the sub-item "File System" (to show the "File System" page)
Enter the path of "Project_A" directory into the "From directory" field (or click the "Browse..." button to find and select the directory of "Project_A")
Check the checkbox of "Project_A" directory under the "From directory" field
To see if the "Into folder" field is showing folder name as "Project_B" (if not, click "Browse..." button to find and select the "Project_B")
Click the "Finish" button (because the Project_B is empty, need not care any more)
The all contents of Project_A are copied into Project_B, we can run the Project_B as the Project_A (if needed we can refactor the Project_B)

How to change package name of Android Project in Eclipse?

I have an Android project created in Eclipse. I want to modify the package name and application of the project. How do I do that in Eclipse?
This is a bug in the Eclipse Android tools.
To fix: Right click on the project, go to Android tools -> Rename application package.
And also check AndroidManifest.xml if it updated correctly. In my case it didn't, and that should solve this problem.
As usual, by pressing F2 on the package name, you can rename or change the package name, and also by right-clicking and then select Rename option, you can change or rename the package name.
When you press F2, it will show you the dialog box as:
In this dialog, don't forget to check the "Update references" checkbox because by making "check" to this check-box, it will make changes to all the references of the package which are referred by other components of project.
None of these worked for me, they all introduced errors.
The following worked for me:
Right click the project and select Android Tools >> Rename
Application Package.
Enter the new Package name
Accept all the automatic changes it wants to make
Say yes to update the launch configuration
One extremely important notice:
NEVER use a direct package names as in something similar to passing a string value containing the package name. Use the method getPackageName(). This will make the renaming dynamic. Do whatever to reach the method getPackageName().
In Eclipse Juno, the correct way of renaming is:
Go and edit the manifest.
Remove every old package name in the manifest.
Put instead of the old package name, the new package name in every location inside the manifest. You might have classes (Activities that is) that need direct package name references.
Save the manifest.
Then right click the package name inside the project.
Select "Refactor".
Select "Rename".
Type the new package name.
Select "update references".
Press OK and you're done and watch out also what should be done to replace the new name.
Don't forget to also update the layout XML files with the new package name. You might have a custom View. Look for them.
Right click on your project name and select Android Tools , then click
Rename Application Package, then change your project name click OK and
click Finish.
To change the app name when in Android, go to res/values/strings.xml and change app_name to what you want.
Just right click on the project name and select Android tools and click Rename Application Package name and rename it. It's only for Android projects.
Press F2 and then rename it (or right click on the project and select Rename). It changes wherever that package is declared in your project. It's automatically renamed all over.
Goto the Src folder of your Android project, and open the Java file.
Change the package OldName.android.widget to newName.android.widget.
It gives you an error like this
The declared package "newName.android.widget" does not match the expected package "OLDName.android.widget.
To fix this problem, select Move filename.Java to Newname.android.widget and delete the old package folder.
Next step: Go to AndroidManifest.xml and change
package="OldName.android.widget" to package="newName.android.widget".
This worked perfectly for me (simple text replace):
Go to search -> file
Containing text: old pakage name
File name pattern: *
Scope: workspace
Press Replace
Replace: new package name
Now your project is full of errors.
Click your package in project explorer and press F2 (rename).
Fill in the new package name and check all checkmarks.
Press Preview.
Click OK.
Wait for Eclipse to refresh. If there are still errors, clean all projects in the workspace:
Project -> Clean
None of this worked for me until I combined the two answers mentioned in this post.
Step 1: Right click on the project -> Select Android Tools -> Rename application Package.
(This will change all the files in the gen folder and in AndroidManifest but will not change the package name in the src folder so I followed Step 2)
Step 2: Inside src folder Right Click your package name -> Refactor -> Rename -> Enter the new name that you entered in Step 1.
Just to make sure Check AndroidManifest if there is still the old package name and replace with the new one (in my case inside the "uses-permission" tag).
Then close the Eclipse and Reopen it. Uninstall the app from your device and install it again and everything should be working fine.
Hope this helps and saves your time.
OK here's what I had to do:
Problem:
I had a base project that I wanted to use as a starting point for several other projects that would be in the same workspace as the base project. The base project was already under GiT control in my own local repo. It was time to duplicate the base project, "MyBaseApp", to become the starting point for "MyKillerApp."
Solution:
I just duplicated the overall MyBaseApp directory as MyKillerApp and had the two directories side-by-side.
I edited file MyKillerApp->.project and changed the name from MyBaseApp to MyKillerApp. (This was necessary for step 3 to work.)
I opened Eclipse and did a File->Import of MyKillerApp (I left out some details about how to use the Import menu, but click around, you'll figure it out.)
I right clicked on MyKillerApp in the package manager and chose Android Tools->Rename Application Package to MyKillerApp. I checked all the options for renaming except the last checkbox about non-java files.
I highlighted src->com.myname.MyBaseApp in the package manager and did an F2 to MyKillerApp. Then I did the same to a few classes including my opening activity class thing that goes into your AndroidManifest.xml file.
I had to update a few function call names but the compiler pointed them out to me handily.
Thus I had a new project derived from a base project with no nomenclature left over from the base project and it was in its own local GiT repo.
Following worked for me in eclipse:
Go to AndroidManifest, search and replace old package name with new one and update everything when saving. Go to your root project package then press F2, write new name, and check Update References and Rename subpackages check boxes. After this everything was red in project (complaining about R import for every java file) because it wasn't changing closing tag of my custom view-s in layout xmls. After I changed these manually, everything was back to normal. That is it.
Renaming an Application- The Complete Guide
**A) for changing Just the application name
(App name which is displayed below icon)
in the Manifest.xml file, in <application tag,
android:label="YourAppName"
then do the same in All the <activity Tags
B) For changing EVERYTHING
(folder names, Package names, Refrences,app name, etc.)
*1) Renaming package names in gen folder and manifest.xml
Right Click on Your project
Android tools- Rename Application Package
*2) Renaming package names in src folder
Expand src folder, Click on package (Single click)
Press Alt+Shift+R
Check Update references and Rename subpackages
3) Renaming the app's main Folder (Optional)
click on the application's folder (Single click)
then Press Alt+Shift+R
4) Renaming application name- Refer "A)"**
Just get Far Manager and search through for the old name. Then manually (in Far Manager) replace everywhere. Sadly, this is the only method that works in 100% of the possible cases.
I had big trouble with this too.
I renamed the project and the package via refactoring, but it rendered the app useless. I renamed it back to the original and used the Android tools to rename the package and this worked, but my package folder and classes had the old name.
I then refactored the package folder. Now the app wouldn't run. My manifest was a mess. It doubled up my launcher name for example, com.ronguilmet.app/com.ronguilmet.com.class. I fixed that, and I had to manually edit all activities.

Categories

Resources