Android ICS 版本在 eclipse 上构建联系人代码

标签 android

我正在尝试在 Eclipse 上构建 ICS 联系人代码。由于联系人使用了一些隐藏类,我创建了一个包含所有必需类的新 jar 文件,并成功构建了 apk。

但现在的问题是我在 jar 中添加的类在最终的 apk 包中缺少链接,我得到了 noClassDefFoundError 异常。

我反编译了 apk,发现 class 存在于 apk 中。为什么 apk 中存在类文件但链接丢失?

我尝试将 jar 文件用作外部库,但由于其大小 (>20mb) 没有成功。

最佳答案

通讯录应用程序使用了多种类型的隐藏文件。其中一些是隐藏的框架项目,如 AggregationSuggestions.PARAMETER_MATCH_NAME,其他属于静态库,如 com.android.phone.CallLogAsync。第一种文件永远不应嵌入到您的 APK 中,但第二种文件应该嵌入。

如果您查看联系人的 Android.mk,您可以找出需要哪些静态库:

LOCAL_STATIC_JAVA_LIBRARIES := \
com.android.phone.common \
com.android.vcard \
android-common \
guava \
android-support-v13 \
android-support-v4 \
android-ex-variablespeed \

要在 Eclipse 中编译 Contact,您应该将框架类添加为“用户库”并将所有静态库添加为“外部 JAR”。

获取所有需要的 jar 的最简单方法是构建 Android 源代码并查看 out/target/common/obj/JAVA_LIBRARIES。每个库都有自己的名为 libname_intermediates 的目录,其中包含 classes-full-debug.jar。这些 jar 正是您构建联系人所需的。框架类位于 framework_intermediates 中,但是您可能需要添加更多的 jar。

您应该在 Eclipse 中为您的项目调整“订购和导出”,以确保您的带有框架类的“用户库”高于“Android 4.0”。

关于Android ICS 版本在 eclipse 上构建联系人代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8291469/

相关文章:

java - 改造和 SimpleXmlConverterFactory

java - 如何使用 for 循环和数组创建多个对象

javascript - jQuery 仅在鼠标未按住一定时间(以毫秒为单位)时才运行函数

android - Android 6.0-7.1 的 Parcel.readException

android - 为什么我的 Android 服务在我启动 Activity 时被终止?

android - CalendarView android 中的小数字

android - xmlns ="http://maven.apache.org/POM/4.0.0"URI 未注册

android - 将选项卡与 ViewPager 一起使用时出现错误 "Java.lang.IllegalStateException Activity has been destroyed"

java - android - eclipse android launch 卡在 100

android - IntelliJ IDEA 数据库插件中缺少 "Android SQLite"项