9

我正在尝试将应用程序从 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 中,这样每次我想要构建时都不会非常不方便?

4

2 回答 2

1

在这一点上,这是一个相当老的 intellij 版本。10.5 似乎解决了我与 android dev 的所有问题

于 2011-08-17T15:42:02.420 回答
0

你的问题不是你的依赖范围吗?如果它们仅用于编译,则不能保证在运行时工作是吗?

我自己不是 IJ 的用户,但从你的截图来看,这是我的猜测。它还可以解释为什么你的 android 包的大小要小 80%。

于 2011-05-10T09:45:20.720 回答