【发布时间】:2013-08-06 04:04:39
【问题描述】:
我正在尝试创建一个具有不同风格(例如免费、付费)的应用程序,方法是将尽可能多的通用代码放入库中,并为每种风格制作项目。目前,主要活动的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:在路径:DexPathList[[zip file”/data/app/freeapppackagename-2 上找不到类“librarypackagename.Foo” .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”中。
【问题讨论】:
-
请检查您的包裹。
-
我使用了图书馆活动作为主要活动,所以这当然是可能的。也许如果您发布免费项目和库项目的整个清单,我们可以看到一些东西。
-
我已经用两个清单文件更新了问题。
标签: android