木蚂蚁渠道接入Unity项目踩到的坑

1 篇文章 0 订阅
1 篇文章 0 订阅
  1. 我们的Unity版本是5.5.5p2,从渠道商那里拿到了最新的sdk版本3.4.9,一顿操作,很快就实现了一个Unity的Demo工程,发布apk,上机测试,不行啊!打log: java.io.FileNotFoundException: mmyplugin_userinfo.apk java.io.FileNotFoundException: mmyplugin_pay.apk sdk里没有这两个文件啊!
  2. 解压sdk中里面的NewSDKEcDemo.apk,看看?看到了! assets里面有这两个文件,二话不说拷进项目中(这个操作引发了后续的一个bug,后面再细说)
  3. 再打包测试,正常登录和调出支付页面,大喜!挺顺利的嘛,坑应当不会有了吧
  4. 再一顿作,把渠道接入到了我们的游戏项目中,合并res,整合lib,发布,整合res中出现的小小坑就不细说了.打包,测试,咦,明明上次打包成功了,这次只改了一行代码却打包失败了.看看Unity里打印出来的log:
    CommandInvokationFailure: Unable to convert classes into dex format.
    C:/Program Files (x86)/Java/jdk1.8.0_111\bin\java.exe -Xmx1024M -Dcom.android.sdkmanager.toolsdir="D:/Soft/android_sdk/Android_sdk9\tools" -Dfile.encoding=UTF8 -jar "C:\Program Files\Unity\Editor\Data\PlaybackEngines\AndroidPlayer/Tools\sdktools.jar" -
    
    stderr[
    warning: Ignoring InnerClasses attribute for an anonymous inner class
    (b) that doesn't come with an
    associated EnclosingMethod attribute. This class was probably produced by a
    compiler that did not target the modern .class file format. The recommended
    solution is to recompile the class from source, using an up-to-date compiler
    and without specifying any "-target" type options. The consequence of ignoring
    this warning is that reflective operations on this class will incorrectly
    indicate that it is *not* an inner class.
    warning: Ignoring InnerClasses attribute for an anonymous inner class
    (c) that doesn't come with an
    associated EnclosingMethod attribute. This class was probably produced by a
    compiler that did not target the modern .class file format. The recommended
    solution is to recompile the class from source, using an up-to-date compiler
    and without specifying any "-target" type options. The consequence of ignoring
    this warning is that reflective operations on this class will incorrectly
    indicate that it is *not* an inner class.
    warning: Ignoring InnerClasses attribute for an anonymous inner class
    (e) that doesn't come with an
    associated EnclosingMethod attribute. This class was probably produced by a
    compiler that did not target the modern .class file format. The recommended
    solution is to recompile the class from source, using an up-to-date compiler
    and without specifying any "-target" type options. The consequence of ignoring
    this warning is that reflective operations on this class will incorrectly
    indicate that it is *not* an inner class.
    Uncaught translation error: java.util.concurrent.ExecutionException: java.lang.OutOfMemoryError: Java heap space
    1 error; aborting
    ]
    stdout[
    processing bin\classes\.\com\lkgame\sfish\mumayi\R.class...
    processing bin\classes\.\com\lkgame\sfish\mumayi\R$anim.class...
    processing bin\classes\.\com\lkgame\sfish\mumayi\R$array.class...
    processing bin\classes\.\com\lkgame\sfish\mumayi\R$attr.class...
    processing bin\classes\.\com\lkgame\sfish\mumayi\R$bool.class...
    processing bin\classes\.\com\lkgame\sfish\mumayi\R$color.class...
    processing bin\classes\.\com\lkgame\sfish\mumayi\R$dimen.class...
    processing bin\classes\.\com\lkgame\sfish\mumayi\R$drawable.class...
    processing bin\classes\.\com\lkgame\sfish\mumayi\R$id.class...
    processing bin\classes\.\com\lkgame\sfish\mumayi\R$integer.class...
    processing bin\classes\.\com\lkgame\sfish\mumayi\R$layout.class...
    processing bin\classes\.\com\lkgame\sfish\mumayi\R$menu.class...
    processing bin\classes\.\com\lkgame\sfish\mumayi\R$raw.class...
    processing bin\classes\.\com\lkgame\sfish\mumayi\R$string.class...
    processing bin\classes\.\com\lkgame\sfish\mumayi\R$style.class...
    processing bin\classes\.\com\lkgame\sfish\mumayi\R$styleable.class...
    processing bin\classes\.\com\lkgame\sfish\mumayi\R$xml.class...
    processing bin\classes\.\com\lkgame\sfish\mumayi\resources\R.class...
    processing bin\classes\.\com\lkgame\sfish\mumayi\resources\R$anim.class...
    processing bin\classes\.\com\lkgame\sfish\mumayi\resources\R$array.class...
    processing bin\classes\.\com\lkgame\sfish\mumayi\resources\R$attr.class...
    processing bin\classes\.\com\lkgame\sfish\mumayi\resources\R$bool.class...
    processing bin\classes\.\com\lkgame\sfish\mumayi\resources\R$color.class...
    processing bin\classes\.\com\lkgame\sfish\mumayi\resources\R$dimen.class...
    processing bin\classes\.\com\lkgame\sfish\mumayi\resources\R$drawable.class...
    processing bin\classes\.\com\lkgame\sfish\mumayi\resources\R$id.class...
    processing bin\classes\.\com\lkgame\sfish\mumayi\resources\R$integer.class...
    processing bin\classes\.\com\lkgame\sfish\mumayi\resources\R$layout.class...
    processing bin\classes\.\com\lkgame\sfish\mumayi\resources\R$menu.class...
    processing bin\classes\.\com\lkgame\sfish\mumayi\resources\R$raw.class...
    processing bin\classes\.\com\lkgame\sfish\mumayi\resources\R$string.class...
    processing bin\classes\.\com\lkgame\sfish\mumayi\resources\R$style.class...
    processing bin\classes\.\com\lkgame\sfish\mumayi\resources\R$styleable.class...
    processing bin\classes\.\com\lkgame\sfish\mumayi\resources\R$xml.class...
    processing archive bin\classes.jar...
    processing bitter/jnibridge/JNIBridge.class...
    processing bitter/jnibridge/JNIBridge$a.class...
    processing com/unity3d/player/NativeLoader.class...
    processing com/unity3d/player/ReflectionHelper.class...
    processing com/unity3d/player/ReflectionHelper$1.class...
    processing com/unity3d/player/ReflectionHelper$a.class...
    processing com/unity3d/player/UnityPlayer.class...
    processing com/unity3d/player/UnityPlayer$1.class...
    processing com/unity3d/player/UnityPlayer$10.class...
    processing com/unity3d/player/UnityPlayer$10$1.class...
    processing com/unity3d/player/UnityPlayer$1$1.class...
    processing com/unity3d/player/UnityPlayer$11.class...
    processing com/unity3d/player/UnityPlayer$12.class...
    processing com/unity3d/player/UnityPlayer$13.class...
    processing com/unity3d/player/UnityPlayer$14.class...
    processing com/unity3d/player/UnityPlayer$15.class...
    processing com/unity3d/player/UnityPlayer$16.class...
    processing com/unity3d/player/UnityPlayer$17.class...
    processing com/unity3d/player/UnityPlayer$18.class...
    processing com/unity3d/player/UnityPlayer$19.class...
    processing com/unity3d/player/UnityPlayer$2.class...
    processing com/unity3d/player/UnityPlayer$3.class...
    processing com/unity3d/player/UnityPlayer$4.class...
    processing com/unity3d/player/UnityPlayer$5.class...
    processing com/unity3d/player/UnityPlayer$6.class...
    processing com/unity3d/player/UnityPlayer$7.class...
    processing com/unity3d/player/UnityPlayer$8.class...
    processing com/unity3d/player/UnityPlayer$9.class...
    processing com/unity3d/player/UnityPlayer$a.class...
    processing com/unity3d/player/UnityPlayer$b.class...
    processing com/unity3d/player/UnityPlayer$c.class...
    processing com/unity3d/player/UnityPlayer$c$1.class...
    processing com/unity3d/player/UnityPlayer$d.class...
    processing com/unity3d/player/UnityPlayerActivity.class...
    processing com/unity3d/player/UnityPlayerNativeActivity.class...
    processing com/unity3d/player/UnityPlayerProxyActivity.class...
    processing com/unity3d/player/UnityWebRequest.class...
    processing com/unity3d/player/WWW.class...
    processing com/unity3d/player/a.class...
    processing com/unity3d/player/a$a.class...
    processing com/unity3d/player/b.class...
    processing com/unity3d/player/c.class...
    processing com/unity3d/player/d.class...
    processing com/unity3d/player/e.class...
    processing com/unity3d/player/f.class...
    processing com/unity3d/player/g.class...
    processing com/unity3d/player/g$1.class...
    processing com/unity3d/player/g$2.class...
    processing com/unity3d/player/g$3.class...
    processing com/unity3d/player/h.class...
    processing com/unity3d/player/i.class...
    processing com/unity3d/player/j.class...
    processing com/unity3d/player/j$a.class...
    processing org/fmod/FMODAudioDevice.class...
    processing org/fmod/a.class...
    processing archive plugins\.\AMap_Location_V3.3.0_20170118.jar...
    ignored resource META-INF/
    ignored resource META-INF/MANIFEST.MF
    ignored resource com/
    ignored resource com/amap/
    ignored resource com/amap/api/
    ignored resource com/amap/api/fence/
    processing com/amap/api/fence/DistrictItem.class...
    processing com/amap/api/fence/DistrictItem$1.class...
    processing com/amap/api/fence/GeoFence.class...
    processing com/amap/api/fence/GeoFence$1.class...
    processing com/amap/api/fence/GeoFenceClient.class...
    processing com/amap/api/fence/GeoFenceListener.class...
    processing com/amap/api/fence/GeoFenceManagerBase.class...
    processing com/amap/api/fence/PoiItem.class...
    processing com/amap/api/fence/PoiItem$1.class...
    ignored resource com/amap/api/location/
    processing com/amap/api/location/AMapLocation.class...
    processing com/amap/api/location/AMapLocationClient.class...
    processing com/amap/api/location/AMapLocationClientOption.class...
    processing com/amap/api/location/AMapLocationClientOption$AMapLocationMode.class...
    processing com/amap/api/location/AMapLocationClientOption$AMapLocationProtocol.class...
    processing com/amap/api/location/AMapLocationListener.class...
    processing com/amap/api/location/APSService.class...
    processing com/amap/api/location/APSServiceBase.class...
    processing com/amap/api/location/CoordUtil.class...
    processing com/amap/api/location/CoordinateConverter.class...
    processing com/amap/api/location/CoordinateConverter$1.class...
    processing com/amap/api/location/CoordinateConverter$CoordType.class...
    processing com/amap/api/location/DPoint.class...
    processing com/amap/api/location/DPoint$1.class...
    processing com/amap/api/location/LocationManagerBase.class...
    processing com/amap/api/location/a.class...
    ignored resource com/autonavi/
    ignored resource com/autonavi/aps/
    ignored resource com/autonavi/aps/amapapi/
    ignored resource com/autonavi/aps/amapapi/model/
    processing com/autonavi/aps/amapapi/model/AMapLocationServer.class...
    ignored resource com/loc/
    processing com/loc/a.class...
    processing com/loc/a$1.class...
    processing com/loc/a$a.class...
    processing com/loc/a$b.class...
    processing com/loc/a$c.class...
    processing com/loc/aa.class...
    processing com/loc/ab.class...
    processing com/loc/ac.class...
    processing com/loc/ad.class...
    processing com/loc/ad$a.class...
    processing com/loc/ae.class...
    processing com/loc/af.class...
    processing com/loc/ag.class...
    processing com/loc/ah.class...
    processing com/loc/ai.class...
    processing com/loc/aj.class...
    processing com/loc/ak.class...
    processing com/loc/ak$a.class...
    processing com/loc/al.class...
    processing com/loc/am.class...
    processing com/loc/an.class...
    processing com/loc/ao.class...
    processing com/loc/ap.class...
    processing com/loc/aq.class...
    processing com/loc/ar.class...
    processing com/loc/as.class...
    processing com/loc/at.class...
    processing com/loc/au.class...
    processing com/loc/au$1.class...
    processing com/loc/av.class...
    processing com/loc/aw.class...
    processing com/loc/ax.class...
    processing com/loc/ay.class...
    processing com/loc/ay$1.class...
    processing com/loc/ay$a.class...
    processing com/loc/az.class...
    processing com/loc/az$1.class...
    processing com/loc/b.class...
    processing com/loc/ba.class...
    processing com/loc/bb.class...
    processing com/loc/bc.class...
    processing com/loc/bc$a.class...
    processing com/loc/bd.class...
    processing com/loc/be.class...
    processing com/loc/be$1.class...
    processing com/loc/be$2.class...
    processing com/loc/be$3.class...
    processing com/loc/be$a.class...
    processing com/loc/be$a$a.class...
    processing com/loc/be$b.class...
    processing com/loc/be$c.class...
    processing com/loc/bf.class...
    processing com/loc/bg.class...
    processing com/loc/bg$1.class...
    processing com/loc/bh.class...
    processing com/loc/bi.class...
    processing com/loc/bi$a.class...
    processing com/loc/bj.class...
    processing com/loc/bk.class...
    processing com/loc/bk$a.class...
    processing com/loc/bl.class...
    processing com/loc/bl$1.class...
    processing com/loc/bm.class...
    processing com/loc/bn.class...
    processing com/loc/bo.class...
    processing com/loc/bp.class...
    processing com/loc/bq.class...
    processing com/loc/bq$1.class...
    processing com/loc/br.class...
    processing com/loc/bs.class...
    processing com/loc/bs$1.class...
    processing com/loc/bs$2.class...
    processing com/loc/bt.class...
    processing com/loc/bu.class...
    processing com/loc/bu$1.class...
    processing com/loc/bu$a.class...
    processing com/loc/bu$b.class...
    processing com/loc/bu$c.class...
    processing com/loc/bv.class...
    processing com/loc/bv$1.class...
    processing com/loc/bv$2.class...
    processing com/loc/bv$3.class...
    processing com/loc/bw.class...
    processing com/loc/bx.class...
    processing com/loc/by.class...
    processing com/loc/bz.class...
    processing com/loc/c.class...
    processing com/loc/ca.class...
    processing com/loc/cb.class...
    processing com/loc/cc.class...
    processing com/loc/cd.class...
    processing com/loc/ce.class...
    processing com/loc/cf.class...
    processing com/loc/cf$a.class...
    processing com/loc/cg.class...
    processing com/loc/ch.class...
    processing com/loc/ci.class...
    processing com/loc/cj.class...
    processing com/loc/ck.class...
    processing com/loc/cl.class...
    processing com/loc/cm.class...
    processing com/loc/cm$a.class...
    processing com/loc/cn.class...
    processing com/loc/co.class...
    processing com/loc/cp.class...
    processing com/loc/cq.class...
    processing com/loc/cq$a.class...
    processing com/loc/cr.class...
    processing com/loc/cs.class...
    processing com/loc/ct.class...
    processing com/loc/cu.class...
    processing com/loc/cu$1.class...
    processing com/loc/cv.class...
    processing com/loc/cw.class...
    processing com/loc/cw$1.class...
    processing com/loc/cx.class...
    processing com/loc/cy.class...
    processing com/loc/d.class...
    processing com/loc/d$1.class...
    processing com/loc/d$2.class...
    processing com/loc/d$3.class...
    processing com/loc/d$4.class...
    processing com/loc/d$a.class...
    processing com/loc/d$b.class...
    processing com/loc/d$c.class...
    processing com/loc/d$d.class...
    processing com/loc/e.class...
    processing com/loc/e$a.class...
    processing com/loc/e$b.class...
    processing com/loc/f.class...
    processing com/loc/g.class...
    processing com/loc/g$1.class...
    processing com/loc/g$2.class...
    processing com/loc/h.class...
    processing com/loc/h$1.class...
    processing com/loc/i.class...
    processing com/loc/i$a.class...
    processing com/loc/i$a$a.class...
    processing com/loc/j.class...
    processing com/loc/k.class...
    processing com/loc/l.class...
    processing com/loc/l$a.class...
    processing com/loc/l$a$a.class...
    processing com/loc/l$a$b.class...
    processing com/loc/l$a$c.class...
    processing com/loc/l$a$d.class...
    processing com/loc/l$b.class...
    processing com/loc/m.class...
    processing com/loc/m$a.class...
    processing com/loc/n.class...
    processing com/loc/n$a.class...
    processing com/loc/o.class...
    processing com/loc/p.class...
    processing com/loc/q.class...
    processing com/loc/r.class...
    processing com/loc/r$a.class...
    processing com/loc/s.class...
    processing com/loc/s$a.class...
    processing com/loc/t.class...
    processing com/loc/u.class...
    processing com/loc/v.class...
    processing com/loc/w.class...
    processing com/loc/x.class...
    processing com/loc/x$1.class...
    processing com/loc/x$2.class...
    processing com/loc/x$3.class...
    processing com/loc/y.class...
    processing com/loc/z.class...
    processing com/loc/z$1.class...
    processing com/loc/z$2.class...
    processing com/loc/z$a.class...
    processing archive plugins\.\AMap_Search_V4.0.0_20170111.jar...
    ignored resource META-INF/
    ignored resource META-INF/MANIFEST.MF
    ignored resource assets/
    ignored resource assets/amap_bus.png
    ignored resource assets/amap_car.png
    ignored resource assets/amap_end.png
    ignored resource assets/amap_man.png
    ignored resource assets/amap_start.png
    ignored resource com/
    ignored resource com/amap/
    ignored resource com/amap/api/
    ignored resource com/amap/api/services/
    ignored resource com/amap/api/services/a/
    processing com/amap/api/services/a/a.class...
    processing com/amap/api/services/a/aa.class...
    processing com/amap/api/services/a/ab.class...
    processing com/amap/api/services/a/ac.class...
    processing com/amap/api/services/a/ac$1.class...
    processing com/amap/api/services/a/ad.class...
    processing com/amap/api/services/a/ae.class...
    processing com/amap/api/services/a/af.class...
    processing com/amap/api/services/a/ag.class...
    processing com/amap/api/services/a/ah.class...
    processing com/amap/api/services/a/ai.class...
    processing com/amap/api/services/a/aj.class...
    processing com/amap/api/services/a/aj$1.class...
    processing com/amap/api/services/a/ak.class...
    processing com/amap/api/services/a/ak$1.class...
    processing com/amap/api/services/a/al.class...
    processing com/amap/api/services/a/al$1.class...
    processing com/amap/api/services/a/al$2.class...
    processing com/amap/api/services/a/am.class...
    processing com/amap/api/services/a/am$1.class...
    processing com/amap/api/services/a/an.class...
    processing com/amap/api/services/a/an$1.class...
    processing com/amap/api/services/a/an$2.class...
    processing com/amap/api/services/a/ao.class...
    processing com/amap/api/services/a<message truncated>

     

  5. WTF,java.lang.OutOfMemoryError: Java heap space这是什么鬼,关了Unity重开,重新打包时上网查了下,没找到怎么解决这个问题的方式,大体都是说增加JVM的内存,但我不知道要在哪个地方增加啊!!!!这次打包成功了,先试试先吧

  6. 登录正常,支付时,支付成功了,但奖品没发,打log,发现支付成功的回调没有执行:

    
        /**
         * @param tradeType
         * @param tradeCode
         * @param intent
         */
        @Override
        public void onTradeSuccess(String tradeType, int tradeCode, Intent intent) {
            // 可在此处获取到提交的商品信息
            Bundle bundle = intent.getExtras();
            String orderId = bundle.getString("orderId");
            String productName = bundle.getString("productName");
            String productPrice = bundle.getString("productPrice");
            String productDesc = bundle.getString("productDesc");
    
            Log.e("mumayi1", "这是orderid-->" + orderId);
            Log.e("mumayi1", "这是productName-->" + productName);
            Log.e("mumayi1", "这是productPrice-->" + productPrice);
            Log.e("mumayi1", "这是productDesc-->" + productDesc);
            Log.e("mumayi1", "这是tradeType-->" + tradeType);
    
            if (tradeCode == MMYInstance.PAY_RESULT_SUCCESS) {
                // 在每次支付回调结束时候,调用此接口判断用户是否完善了资料
                mUserCenter.checkUserState(MainActivity.this);
                Toast.makeText(this, productName + "支付成功 支付金额:" + productPrice, Toast.LENGTH_SHORT).show();
            } else if (tradeCode == MMYInstance.PAY_RESULT_FAILED) {
                Toast.makeText(this, productName + "支付失败 支付金额:" + productPrice, Toast.LENGTH_SHORT).show();
            }
        }
    

     

  7. 反馈给服务器,服务器修改了一些问题后,正常发奖了!但log显示支付成功的回调没有执行!再试试调出支付页面了之后,取消支付,支付失败的回调有没有执行,MMP,失败的回调正常触发,What The Hell ! 

  8. 跟木蚂蚁那边沟通了一下,发apk给那边测,结论是我的sdk旧的,旧的,旧的!

  9. 他那边重发了mmy-core-3.4.9.jar给我,我看到这个时,心里咯噔了一下,名字一样的!会不会是Demo中解压出来的mmyplugin_userinfo.apk和mmyplugin_pay.apk是旧的,这个jar里其实是有这两个文件的,改后缀解压,真有这两个文件!

  10. 这时我几乎肯定这两文件demo中的是旧的,看了一下大小,不一样的,再把mmy-core-3.4.9.jar放进工程中,svn标识没变成叹,果然.我情不自禁的深叹一口气

  11. 换文件重新打包,其间还打包失败了一次,无法重启Unity再打.上机测试回调有了!

总结:

  1. 一个到现在还没解决的问题:java.lang.OutOfMemoryError: Java heap space,哪位网友看到这篇文章,又有解决方法请务必留言告知我
  2. 不要迷信sdk的demo,jar有可能他们根本就不一致的,别迷信切记,切记,切记!
  3. 由于项目当前开发版本在端午前急着封版了,我的实现只做了一半,无法,只有移代码到新的版本上,开发完成后,市场急着要上,而我们新更新要到7月底才能上线,没别的,一切以赚钱为上,移代码回旧上吧,做兼容,重测.完了之后就提审吧
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值