• 移动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,如果你成功了,请一定给我留言!

  • 相关阅读:
    我的 vs code 中setting 设置
    创建Vue cli 脚手架中遇到的空格,函数问题的解决
    C#与.Net的关系
    c#可以开发哪些类型的应用程序
    json注解使用(jackson与fastjson)
    MySQL优化:如何避免回表查询
    二叉树基础知识总结
    Redis,Memcache,MongoDb的特点
    MySQL的InnoDB存储引擎为什么要用自增的主键?
    分布式事务atomikos使用
  • 原文地址:https://www.cnblogs.com/snake-hand/p/3161399.html
Copyright © 2020-2023  润新知