2012-03-16 26 views
1

我有一个包名称的主要应用:com.company.package具有相同的包名称的Android库

和我有一个包名库: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

android:name =“。librarypackage.classA”应该工作,你的问题可能与最终的apk导出/构建(即库代码不是最终的apk中的dexed)有关,而不是语法定义你的AndroidManifest.xml。 – yorkw 2012-03-16 23:09:35

+0

你确定你已经正确添加了库项目吗?你不应该面对这样的问题。 – 2012-04-10 09:41:58

回答

1

你只需要基本的包在你的清单延伸....所以只使用

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

不要忘了“”

UPDATE

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

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

如果要调用你需要在名称属性来指定这个意图的活动。

Here is a reference...

+0

我也试过... – Showpath 2012-03-16 14:43:26

+0

@wnaffee你是否将package =“com.company.package”属性设置为你的清单?这是对的吗? (标记中应该有一个包属性) – jjNford 2012-03-16 14:45:41

+0

是的,它设置正确。 – Showpath 2012-03-16 14:53:30

1

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

android.name=".librarypackage.classA" 

,而不是你有什么...上面

0

的活动需要在清单中声明的​​主要应用。在图书馆清单中声明它是没用的。

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

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

+0

我在编辑主应用程序清单。 – Showpath 2012-03-16 14:44:24

0

已解决。 buildPath中缺少Jar文件依赖项。对不起,打扰...