我正在尝试创建一个具有不同风格(例如免费,付费)的应用程序,通过将尽可能多的通用代码放入库中,并为每种风格制作项目。目前,主要活动的Java类在所有版本中都是相同的,它只是布局和“values”资源目录中定义的一些常量,需要更改以控制行为。
我在“免费”项目的清单文件中定义了活动,如下所示:
<activity
android:name="librarypackagename.Foo"
android:label="@string/bar"
android:launchMode="singleTask"
android:uiOptions="splitActionBarWhenNarrow"
>
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
但是在测试应用程序时,我收到以下错误:
“无法实例化Activity ComponentInfo {freeapppackagename / librarypackagename.Foo}:java.lang.ClassNotFoundException:路径上没有找到类”librarypackagename.Foo“:DexPathList [[zip file”/ data / app / freeapppackagename-2 .apk“],nativeLibraryDirectories = [/ data / app-lib / freeapppackagename-2,/ vendor / lib,/ system / lib]]”
是否无法将库中的活动用作主要活动?我也尝试过在我的免费应用程序项目中扩展Foo,并将其作为主要活动,但我仍然得到相同的例外。
编辑(删除了清单文件,因为事实证明它们与问题无关):
此外,在Eclipse中,我刚刚注意到我收到以下错误消息(尽管项目仍在构建中):
在依赖项列表中找到2个版本的android-support-v4.jar, 但并非所有版本都相同(仅在此时检查基于SHA-1)。 目前,所有版本的库必须相同。 发现的版本是: 路径:D:\ Work \ Eclipse \ LiteApplicationName \ libs \ android-support-v4.jar 长度:556198 SHA-1:4a6be13368bb64c5a0b0460632d228a1a915f58f 路径:D:\ Work \ Eclipse \ LibraryName \ libs \ android-support-v4.jar 长度:385685 SHA-1:48c94ae70fa65718b382098237806a5909bb096e 罐子不匹配!修复您的依赖项
奇怪的是,android-support-v4.jar文件出现在应用程序项目的“Referenced Libraries”中,但出现在库中的“Android Private Libraries”中。
答案 0 :(得分:0)
有几件事需要注意。
package com.librarypackagename;
的效果。<library>
而非<application>
com.librarypackagename
如果您对这些问题有任何疑问,请与我们联系。如果您提供了有关项目当前结构的更多信息,将会很有帮助。
答案 1 :(得分:0)
原来它与库不匹配问题有关。我右键单击了应用程序项目,并选择了Android Tools&gt;添加支持库。这安装了一个包,然后“android-support-v4.jar”也出现在应用程序项目的“Android Private Libraries”目录中。现在我不再得到例外。