我有一个包名为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
我想知道是否可以让库与主应用程序共享其包名的一部分。
有什么建议吗?
谢谢!
答案 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属性中指定它。
答案 1 :(得分:1)
如果您的主应用程序包是com.company.package
,那么您应该从活动清单xml中删除它。它应该是:
android.name=".librarypackage.classA"
而不是你上面的......
答案 2 :(得分:0)
需要在主应用的清单中声明活动。在库的清单中声明它是没用的。
库和主应用程序的包名称可以相同。
请注意,活动的类不需要位于应用程序包或子包中。 (如果是,可以将清单缩写一下,但这不是必需的。)确保classA
实际上是指定包的一部分。
答案 3 :(得分:0)
解决。 buildPath中缺少Jar文件依赖项。抱歉打扰......