具有相同包名的Android库

时间:2012-03-16 14:35:21

标签: java android android-library

我有一个包名为com的主应用程序:com.company.package

我有一个包名为的库:com.company.package.librarypackage

在我的主要清单文件中,我提出了:

<activity
      android:configChanges="orientation"
      android:name="com.company.package.librarypackage.classA"
      android:screenOrientation="landscape" >
</activity>

我也试过了:

<activity
      android:configChanges="orientation"
      android:name=".librarypackage.classA"
      android:screenOrientation="landscape" >
</activity>

但是我的代码目前正在崩溃,并显示消息:

java.lang.NoClassDefFoundError:com.company.package.librarypackage.classA

我想知道是否可以让库与主应用程序共享其包名的一部分。

有什么建议吗?

谢谢!

4 个答案:

答案 0 :(得分:1)

您只需要在清单中扩展基础包....所以只需使用

<activity
      android:configChanges="orientation"
      android:name=".librarypackage.classA"
      android:screenOrientation="landscape" >
</activity>

不要忘记“。”

<强>更新

您还需要设置intent-filter和action / category。如果您希望这是您的默认活动,则需要:

<activity
      android:configChanges="orientation"
      android:name=".librarypackage.classA"
      android:screenOrientation="landscape" >
      <intent-filter>
          <action android:name="android.intent.action.MAIN" />
          <category android:name="android.intent.category.LAUNCHER" />
      </intent-filter>
</activity>

如果您使用intent调用活动,则需要在name属性中指定它。

Here is a reference...

答案 1 :(得分:1)

如果您的主应用程序包是com.company.package,那么您应该从活动清单xml中删除它。它应该是:

android.name=".librarypackage.classA"

而不是你上面的......

答案 2 :(得分:0)

需要在主应用的清单中声明活动。在库的清单中声明它是没用的。

库和主应用程序的包名称可以相同。

请注意,活动的类不需要位于应用程序包或子包中。 (如果是,可以将清单缩写一下,但这不是必需的。)确保classA实际上是指定包的一部分。

答案 3 :(得分:0)

解决。 buildPath中缺少Jar文件依赖项。抱歉打扰......