之前接过MSDK,现在新的项目需要接YSDK。记录下对接过程遇到的问题。
总所周知,应用宝的SDK的文档都写得比较好,仔细阅读文档肯定是必要的,接的过程应该也会比(ru)较(ci)顺(cao)利(dan)。
开始了。
1、配置应该没什么好说,按照文档说的添加就可以了。
2、引入库,因为客户端用的是android studio,所以我这里用到的是aar文件。用jar也一样。文档只说需要引入aar,但是结果在初始化的时候会闪退。报错:Didn't find class "com.tencent.ysdk.framework.hotfix.impl.Fix"。根据网友提供的解决方案,将aar改成zip解压出来,里面有个classes.jar,把他改成zip再解压出来,把assets目录下的东西拷贝到游戏工程的assets目录。解决方案地址:https://blog.csdn.net/qq_35581716/article/details/73550808
3、Step5. YSDK生命周期设定。一般接sdk,会自己创建一个activity,继承UnityPlayerActivity作为启动activity,也只会用到这一个activity。应用宝这里需要用到两个activity,Launcher Activity和Main Activity。这里一定要看清楚。仔细对照demo就能理解什么是Launcher Activity和Main Activity
4、登录无回调。这里有个巨坑,看了不下十遍文档,一遍一遍的检查无回调的情况,始终还是没回调。后来在文档中看到这样一段内容
然后想起手机的日志里面有句"...so is bad"(不是报错不是警告,仅仅只是一个普通的log)。于是我也加了上面的代码,结果报错找不到libYSDK.so文件,然后又从aar中YSDK_Android_1.4.5_1078\jni\armeabi目录下找到so文件放到游戏工程。再打包,结果还是找到文件。解压apk包,发现so文件并没有打包进来。后来,先用unity导出as工程(工程中没有libYSDK.so),这时候再把so拷贝到src/main/jniLibs/armeabi-v7a,再出apk包。运行没有闪退,点击登录!卧槽,有回调了
我用的unity2017.4.17
5、支付。登录解决,那么工程就没什么问题了。支付这里有个代币图标二进制的参数。
Bitmap bmp = BitmapFactory.decodeResource(mMainActivity.getResources(), R.drawable.sample_yuanbao); ByteArrayOutputStream baos = new ByteArrayOutputStream(); bmp.compress(Bitmap.CompressFormat.PNG, 100, baos); byte[] appResData = baos.toByteArray();
遇到R文件没生成的情况也是挺烦人,不过可以用另外一个办法
int iconId = this.getResources().getIdentifier(iconResName,"drawable", this.getPackageName()); Bitmap bmp = BitmapFactory.decodeResource(this.getResources(), iconId); ByteArrayOutputStream baos = new ByteArrayOutputStream(); bmp.compress(Bitmap.CompressFormat.PNG, 100, baos); byte[] appResData = baos.toByteArray();
通过代币图的名字可以找到。
6、安卓8.0的手机上,支付闪退。
闪退日志:Only fullscreen activities can request orientation
去掉米大师配置中的屏幕方向。改为如下。
参考文章:https://blog.csdn.net/cheng219101/article/details/88971991
7、没了