【发布时间】:2014-07-31 07:52:57
【问题描述】:
我已将“joda-time”库(2.3 版)添加到我的 Android 应用程序中。我用它来获取DateTimeFormatter类如下:
DateTimeFormatter myDateTimeFormatter = ISODateTimeFormat.dateTimeNoMillis();
在开发期间从 Eclipse 中构建和运行我的应用程序时,这可以正常工作。
但是,当我使用一些使用aapt 的构建脚本构建我的应用程序以进行发布时,上面的代码行会导致下面粘贴的IOException。问题是找不到“joda-time”库中的ZoneInfoMap 文本文件。 (这不是.class 文件。)
问题是:为什么在使用 Eclipse 构建我的 apk 时会包含它,而在使用 aapt 命令行工具构建我的 apk 时却不包含它?以及如何引用“joda-time”库以便保留此资源? Proguard 已禁用,因此这不是 proguard 问题。
06-10 13:00:59.124:E/AndroidRuntime(28922):致命异常:main
06-10 13:00:59.124: E/AndroidRuntime(28922): java.io.IOException: 找不到资源:“org/joda/time/tz/data/ZoneInfoMap”类加载器: dalvik.system.PathClassLoader[dexPath=/data/app/com.example.app.apk,libraryPath=/data/app-lib/com.example.app]
06-10 13:00:59.124: E/AndroidRuntime(28922): 在 org.joda.time.tz.ZoneInfoProvider.openResource(ZoneInfoProvider.java:212)
06-10 13:00:59.124: E/AndroidRuntime(28922): 在 org.joda.time.tz.ZoneInfoProvider.(ZoneInfoProvider.java:123)
06-10 13:00:59.124: E/AndroidRuntime(28922): 在 org.joda.time.tz.ZoneInfoProvider.(ZoneInfoProvider.java:82)
06-10 13:00:59.124: E/AndroidRuntime(28922): 在 org.joda.time.DateTimeZone.getDefaultProvider(DateTimeZone.java:490)
06-10 13:00:59.124: E/AndroidRuntime(28922): 在 org.joda.time.DateTimeZone.setProvider0(DateTimeZone.java:444) 06-10
13:00:59.124: E/AndroidRuntime(28922): 在 org.joda.time.DateTimeZone.(DateTimeZone.java:116) 06-10
13:00:59.124: E/AndroidRuntime(28922): 在 org.joda.time.format.DateTimeFormatter.withZoneUTC(DateTimeFormatter.java:301)
06-10 13:00:59.124: E/AndroidRuntime(28922): 在 org.joda.time.format.ISODateTimeFormat$Constants.localDateParser(ISODateTimeFormat.java:1226)
06-10 13:00:59.124: E/AndroidRuntime(28922): 在 org.joda.time.format.ISODateTimeFormat$Constants.(ISODateTimeFormat.java:1203)
06-10 13:00:59.124: E/AndroidRuntime(28922): 在 org.joda.time.format.ISODateTimeFormat.dateTimeNoMillis(ISODateTimeFormat.java:733)
...
【问题讨论】:
-
您是否将其作为库添加到构建路径中(假设 Eclipse 没有将其作为私有库单独添加),在这种情况下您需要将 Order 和 Export 设置为 true?