1

我有一个带有包名的主应用程序: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

4 回答 4

1

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

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

不要忘记“。”

更新

您还需要设置意图过滤器和操作/类别。如果您希望这是您的默认活动,您将需要:

<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>

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

这里有一个参考...

于 2012-03-16T14:38:21.860 回答
1

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

android.name=".librarypackage.classA"

而不是你上面的...

于 2012-03-16T14:38:38.110 回答
0

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

于 2012-03-19T10:08:14.603 回答
0

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

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

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

于 2012-03-16T14:41:46.727 回答