我正在尝试将应用程序从 Eclipse 移植到 IntelliJ。该应用程序构建良好,但无法正常运行。
这是我收到的部分堆栈跟踪:
ERROR/AndroidRuntime(957):
java.io.IOException: Resource not found: "org/joda/time/tz/data/ZoneInfoMap" ClassLoader: dalvik.system.PathClassLoader@43761190
at org.joda.time.tz.ZoneInfoProvider.openResource(ZoneInfoProvider.java:209)
at org.joda.time.tz.ZoneInfoProvider.<init>(ZoneInfoProvider.java:123)
at org.joda.time.tz.ZoneInfoProvider.<init>(ZoneInfoProvider.java:82)
at org.joda.time.DateTimeZone.getDefaultProvider(DateTimeZone.java:439)
at org.joda.time.DateTimeZone.setProvider0(DateTimeZone.java:393)
at org.joda.time.DateTimeZone.<clinit>(DateTimeZone.java:114)
at org.joda.time.chrono.GregorianChronology.<clinit>(GregorianChronology.java:71)
at org.joda.time.chrono.ISOChronology.<clinit>(ISOChronology.java:66)
at org.joda.time.base.BaseDateTime.<init>(BaseDateTime.java:97)
at org.joda.time.DateTime.<init>(DateTime.java:120)
出于某种原因,应用程序无法找到 joda-time 资源,即使它们是在模块的构建路径中指定的。这些是应用程序的 Eclipse 版本使用的相同 jarfile。
替代文字 http://img.skitch.com/20091106-pgqujbb5eaeqc2wfiqc2c1p39a.png
IntelliJ 工具构建的 APK 比 Eclipse 构建的 APK 小 20% 左右,但我不知道为什么。
知道可能是什么问题吗?
更新:
昨天我与 romain 和 xav 进行了交谈,看来问题在于 intellij 没有将资源捆绑到 apk 中。显然,aapt 采用了两遍方法——首先它将所有类文件捆绑到一个 .dex 文件中,然后将所有资源文件分别捆绑到 apk 文件的顶层。intellij 似乎缺少的是第二遍。
作为一种解决方法,他们建议我从 joda-time jar 中解压缩所有资源文件,并将它们放在我的 src 目录中。期望是intellij然后将它们捆绑到我的apk中,就好像它们是我自己源的一部分一样,从而解决了问题。但是,当我这样做时,IntelliJ 在创建 apk 时完全忽略了这些文件。
我不知道为什么。是否有一种解决方法可以让我将 joda-time 资源文件放入我的 apk 中,这样每次我想要构建时都不会非常不方便?