【发布时间】:2013-09-20 09:39:22
【问题描述】:
我正在开发利用 org.simalliance.openmobileapi API 来使用安全元素通信的应用程序。
应用是Native即主Activity调用一个JNI库进行操作。 JNI库使用JNI Method调用org.simalliance.openmobileapi包的函数。
API 级别在 mainfest 中为 8:
<uses-sdk android:minSdkVersion="8" android:targetSdkVersion="8"/>
该应用程序在 Android 2.3.6 上运行良好,但是当我尝试从 Android 4.0.4 或更高版本启动该应用程序时,该应用程序找不到 org.simalliance.openmobileapi 的 SEService 类。有用的日志是:
09-20 11:00:48.509: I/dalvikvm(1104): Failed resolving Lpkg/wrapper/SecureChannel; interface 203 'Lorg/simalliance/openmobileapi/SEService$CallBack;'
09-20 11:00:48.509: W/dalvikvm(1104): Link of class 'Lpkg/wrapper/SecureChannel;' failed
01-01 22:08:33.460: I/dalvikvm(10881): java.lang.NoClassDefFoundError: org.simalliance.openmobileapi.SEService$1
SecureChannel 类是由 JNI 调用以对安全元素进行操作的 Java 类,它包含在一个 jar 中,该 jar 在编译时与项目的其余部分一起“被索引”。
包 org.simalliance.openmobileapi.jar 在两个版本的 Android 中都包含在 /system/framework 文件夹中:
在 Android 2.3.6 上
-rw-r--r-- root root 29148 2012-11-15 11:24 org.simalliance.openmobileapi.jar
在 Android 4.0.4 上
-rw-r--r-- root root 313 2012-06-11 15:49 org.simalliance.openmobileapi.jar
-rw-r--r-- root root 24864 2012-06-11 15:49 org.simalliance.openmobileapi.odex
我看到的唯一区别是 Android 4.0.4 操作系统中的 odex 文件。 有没有办法包含类路径或对 /system/framework 文件夹中包含的包的引用?
【问题讨论】:
标签: java android c++ java-native-interface noclassdeffounderror