移动mmbilling似乎有个BUG,通过JNI调用会抛出异常
 有人用JNI调用过mm么?不知道你成功了没有,我试了多种方法,有一个错误始终存在,怀疑上个BUG。使用方式: 
 
 通过NativeActivity的clazz获取ClassLoader,然后找到mm.purchasesdk.Purchase,实例化后,调用Init()
 
 
 错误信息:
 
 
 06-28 05:14:09.746: E/d(4709): failed to find resource file(mmiap.xml}
 
 
 06-28 05:14:09.776: D/AndroidRuntime(4709): Shutting down VM
 
 
 06-28 05:14:09.776: W/dalvikvm(4709): threadid=1: thread exiting with uncaught exception (group=0x40a71930)
 
 
 06-28 05:14:09.786: E/AndroidRuntime(4709): FATAL EXCEPTION: main
 
 
 06-28 05:14:09.786: E/AndroidRuntime(4709): java.lang.NullPointerException
 
 
 06-28 05:14:09.786: E/AndroidRuntime(4709): 
 
 
 at mm.purchasesdk.d.a.a(Unknown Source)
 
 
 06-28 05:14:09.786: E/AndroidRuntime(4709): 
 
 
 at mm.purchasesdk.f.a(Unknown Source)
 
 
 06-28 05:14:09.786: E/AndroidRuntime(4709): 
 
 
 at mm.purchasesdk.Purchase.init(Unknown Source)
 
 
 
 
 实际上:
 
 
 我APK中有mmiap.xml文件,通过ClassLoader的getResourceAsStream也可以读取这个文件。
 
 
 而通过JNI直接findClass获取类,或使用SystemClassLoader都是获取类以及读取文件都是不成功的。
 
 
 所以分析:
 
 
 mmbilling库中,大概使用了ClassLoader的getSystemClassLoader得到的ClassLoader来读取文件,所以无法成功。
 
应该修改为从一个已有类的实例中GetClassLoader才可以。
不知有没有谁NativeActivity集成过mmbilling,如果你成功了,请一定给我留言!
 
                     
                    
                 
                    
                

 
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号