Android: Including multiple Java Packages to Manifest

Android automatically creates the class named "R" in the package declared in your App's manifest. When all of your classes are inside that package, you'll never have to explicitly import "R". However, if you have classes in other packages, they won't see it by default and you will have to include

 import <app-package>.R;

or

 import <app-package>.*;

(substituting the actual name for <app-package> of course).

If you include library projects in your App, then they can reference their own "R" classes, which will be generated within their home packages. If you have several independent activities which need to be bundled together into one final App, you should seriously consider using library projects instead of manually merging things. It could make life much easier for you.


Make sure that the import statement at the top of the Activity references the correct R file. Each project has its own R file, so if you copy an Activity from one project to another it will still be trying to reference the R file from the old project.

You do not need any explicit inclusion of different packages in the manifest. To include activities from two different packages, say:

com.example.package1.Activity1
com.example.package2.Activity2

you can do the following:

<manifest package="com.example" . . . >
  <application . . .>
    <activity android:name=".package1.Activity1" . . . />
    <activity android:name=".package2.Activity2" . . . />
  </application>
</manifest>

The problem may persist even if we change the manifest file. To avoid it, we must add an import com.example.R; in all our classes.

Example:

MainActivity.java in package2

package com.example.package2.Activity2
import com.example.R;

TestActivity.java in package1

package com.example.package1.Activity1
import com.example.R;