我遇到了一个奇怪的问题,Android 应用程序将冻结在无害的代码中。只有在没有调试信息的情况下编译外部 jar 时才会崩溃,但是当使用调试信息编译时,应用程序运行得很好。它冻结在位于外部库内的同一行代码上,但仅在多次传递之后。使用了其他几个没有调试信息的外部 jar,没有任何问题。
在这部分代码中没有进行任何 IO 活动。项目中没有本机代码可能会踩到内存导致随机错误。冻结发生在多个设备上。这个过程在它自己的线程中并且是计算密集型的。
- 当在桌面应用程序中使用相同的库/jar 时,没有问题。
- Java 6 和 7 都已用于编译 app + 库
- 有问题的库是 DDogleg。
- 其他三个外部罐子似乎没有任何问题。
- 外部 jar 包含在“libs”目录中
构建环境:
- IDE:IntelliJ 12
- 安卓 SDK:android-17
- 操作系统:Linux Mint 13 和 Windows 7
- JDK:1.7.0_13 和 1.6.0_41
(原始问题表明它在包含为 jar 时会崩溃,但在应用程序中编译时不会崩溃)