Sheehan Alam
Sheehan Alam

Reputation: 60909

Refactoring package name breaks entire app

I am trying to refactor my package using Eclipse

org.sheehan.activity

to

org.sheehan.stocks.activity

For some reason my project just blows up when I do this and R doesn't get regenerated. How can I refactor properly?

UPDATE: I updated my Android Manifest to reflect the change. R still doesn't get regenerated. Even after a clean. The compiler is complaining about org.sheehan.activity.R

Upvotes: 14

Views: 8692

Answers (7)

Jorgesys
Jorgesys

Reputation: 126553

Right click in your Project, go to

Android Tools > Rename Package Application

Sometimes if Project > Clean doesn´t work, so Delete /gen and /bin folders of your project.

Upvotes: 0

whyoz
whyoz

Reputation: 5246

For more advanced imports and refactors, literally closing the Eclipse IDE can refresh a cache that causes random errors like "End position lies outside document range" or the "what once worked now doesn't hair puller outter errors."

Signs you should close Eclipse when trying to rename things are:

  1. When you import a project, do some refactoring (like trying to change the package name), then delete the project and try again, you will see immediate R.java errors when you didn't before

  2. When you are importing projects that have manually generated R.java files that have custom imports like "com.ns.proj.R" and don't see the name update in Preview

  3. The box that asks if you want to "Rename subpackages" is checked unexpectedly

  4. the code in the "Preview>>" looks as if it's been complied before instead of black and white code with the proper names replaced

  5. you get XML errors in the manifest activity name like this

android:name="com.ns.proj.CustomCocom.ns.proj.CustomControlse="@android:style/Theme.Light.NoTitleBar"

when it should be

android:name="com.ns.proj.CustomControls" android:style="Theme.Light.NoTitleBar"

There are too many to name obviously, however this is as important as "keep your eye on the ball" in sports. Something that is so easy to forget, yet things like these apply to other software programs like Dreamweaver (e.g. when you use the Dreamweaver "Put" option instead of FTP dragging with FileZilla and you notice your domain isn't updating your changes online). I called Adobe when I first started as a developer 8 years ago because I knew I wasn't doing anything wrong. They said sometimes the generated files to perform the action get corrupted...in other words, IDE's have bugs too!

In general, close the IDE before you off yourself...it could save your life!

Upvotes: 0

Hans
Hans

Reputation: 1915

select the base package of your project in the eclipse package explorer, press F2 (Rename), in the rename dialog: SELECT ALL the checkboxes.: enter image description here

That should do it

Upvotes: 1

Mirolak
Mirolak

Reputation: 11

Fixing missing reference to R in eclipse:

  1. Refactor -> Rename`

  2. Build -> Clean

  3. Android Tools -> Fix Project Properties

Upvotes: 1

Sheehan Alam
Sheehan Alam

Reputation: 60909

I resolved by:

Android Tools > Rename Package Application

Upvotes: 16

zienkikk
zienkikk

Reputation: 2414

The package name doesn't update in the XML files. Specifically your manifest which needs to know the base package.

Upvotes: 0

citizen conn
citizen conn

Reputation: 15390

If you renamed properly, all your references across your project should have gotten updated. After doing this, clean your project by going to Project > Clean. This should fix it.

Upvotes: 2

Related Questions