Unity3d集成移动MM SDK 2.2的技术要点(坑爹的MM SDK)

原地址:http://dong2008hong.blog.163.com/blog/static/4696882720140423517951/

U3D集成移动MM的SDK绝对是以坑爹为主的东西。 浪费大量时间去弄这玩意。真不知道设计MM SDK的人咋想的,你们应该去参考下移动百宝箱的SDK设计方式,简单易用不坑爹,1小时内绝对能搞定。

因为移动MM支付的SDK只提供android版本的,要自己写过一个android项目再打包重新生成一个jar来供Unity3d引擎使用,这一部分我就不写了,网上也提供很多的教程,主要是已经成功调用之后,会发生以下的错误:

1.failed to find resource file(mmiap.xml}

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)

这个是因为重新打包过JAR之后,APK程序已经找不到原来的那几个xml文件了,需要把它提到apk外面,但也不能直接简单地解压加进去,一定要使用一定的工具。

工具有:apktool,aapt,jarsigner

但由于xda论坛的人在上几个月已经开发出新的apktool了,叫:AndroidMultitool,这个工具很好用,已经集成了上面所有的功能了,大家可以使用这个工具。好,废话不多说。

大概的流程是:

1,反编译APK

2,重新编译成APK

3,用aapt工具把CopyrightDeclaration.xml,mmiap.xml,VERSION这三个文件加到APK的根目录下面

4,把APK重新签名,成功!

下面就是对应的步骤:

至于第三步,就是在AndroidMultitool文件夹下面的Program_Files下面的aapt程序:

红色的就是我自己加进去的文件,要把他们加到run0.apk这个程序里面

其他的三个步骤我就不多说了,主要说一下第3个步骤:aapt工具的使用。

我们主要用到两个命令行(其他命令大家自己网上找吧,很强大的):

aapt.exe l run0.apk(这个命令是列出APK里面的资源文件目录)

aapt.exe a run0.apk mmiap.xml(这个命令是把mmiap.xml文件加入到run0.apk中)

当然,我们要加三个文件到里面,各个命令行就不详写了,大家自己写也行了。

搞定后就可以重新签名就成功了!

AndroidMultitool工具的下载,给一个链接给大家吧:http://forum.xda-developers.com/showthread.php?t=2326604

另外,也可以直接使用我自己写的批处理(懂的用就用批处理比较快):

del newtemp.apk
java -jar "apktool.jar" d -s -f temp.apk tmpAndroid
java -jar "apktool.jar"  b -f tmpAndroid run1.apk
rd /s /q tmpAndroid
aapt.exe a run1.apk mmiap.xml CopyrightDeclaration.xml VERSION
java -jar signapk.jar testkey.x509.pem testkey.pk8 run1.apk run_signed.apk
del run1.apk
zipalign.exe -v 4 run_signed.apk newtemp.apk
del run_signed.apk

另外:有人说发现了另外一个错误,就是读取不了MM扣费JAR包里面的图片资源,这个问题是因为Unity对APK打包的时候,把JAR包里面的资源封在里面了,解决办法是:

1,先解压JAR包,把里面的资源文件夹(mmiap这个文件夹)拿出来

2,在Unity项目的Assets文件夹的根目录下面新建一个StreamingAssets文件夹

3,把mmiap这个文件夹复制到StreamingAssets文件夹下面就可以了。

目录最后变成:\Assets\StreamingAssets\mmiap\image\vertical\下面的图片

Unity 打完包以后用appt工具手动把jar包最上层的三个文件打到包里 然后重新签名就可以了
2.可能还会出现签名的问题:
我咨询移动MM官方技术群,有人说应该将移动MMSDK中的mmiap.xml放到打包APK(安卓安装文件)下的根目录,
      但是把mmiap.xml放到APK根目录就会破坏Unity对APK的签名(签名:用于保护APK中的文件,识别应用安装和更新应用版本),破坏签名后APK就无法安装了,同时我尝试使用jarsigner重新签名APK也是失败的,因为Unity拒绝使用jarsigner重签名APK文件, 
 
这个你先用apktool解压破坏unity原有签名,然后再用apktool重新打包,然后用appt加入者三个文件,然后签名就可以了

Unity3d集成移动MM SDK 2.2的技术要点(坑爹的MM SDK)

时间: 2024-08-24 08:37:46

Unity3d集成移动MM SDK 2.2的技术要点(坑爹的MM SDK)的相关文章

身份证/行驶证/驾驶证识别SDK及API接口技术

一.身份证/行驶证/驾驶证识别SDK及API接口技术应用背景 这些年,随着移动互联网的的发展,越来越多的公司都推出了自己的移动APP,这些APP多数都涉及到个人身份证信息的输入认证(即实名认证),如果手动去输入身份证号码和姓名,速度非常慢,且用户体验非常差.为了提高在移动终端上输入身份证信息的速度和准确性,我们开发出证件识别:身份证/行驶证/驾驶证识别SDK及API接口技术,以满足各行业应用需求,给用户带来更好的体验.只需将证件识别:身份证/行驶证/驾驶证识别SDK及API接口技术集成到APP中

Error: Could not find gradle wrapper within Android SDK. Might need to update your Android SDK. Looked here: C:\Users\Administrator\AppData\Local\Android\sdk\tools\templates\gradle\wrapper

在Windows7上运行 “cordova build Android” 报错,如下: C:\test\hello> cordova build androidANDROID_HOME=C:\Users\administrator\AppData\Local\Android\sdkJAVA_HOME=C:\Program Files\Java\jdk1.8.0_121Error: Could not find gradle wrapper within Android SDK. Might ne

电子护照阅读器sdk自动识别证件的技术原理

关联词:护照阅读器 护照识别仪 护照扫描仪 护照扫描机 电子护照阅读器 电子护照阅器一体机 护照批量录入 护照录入 护照识别 护照管理.证件识读仪.护照阅读机.护照读取机.护照识别一体机 电子护照阅读器sdk自动识别证件的运用背景 电子信息化快速发展的当下,我们乘坐飞机,高铁,火车都需要需要检查身份证件核验,出入大型场合要查身份证护照,考试需要查证件,电子信息化的社会越来越多领域需要验证身份证护照等证件,像这种大量的排查工作急需高效简单准确的工作方式有什么设备可以识别证件信息.中安电子护照阅读器

Unity3d Android SDK接入解析(四)通用的Android SDK接入中间件

一.前言 接入Android SDK正式告一段落,在这段时间里面,依次接入了华为.应用宝.小米.360等等大大小小十来个SDK,也算对Unity接入渠道SDK有了较为全面的理解,对各个渠道的坑也算深有体会....在接入过程中时间比较紧张,没办法抽空来进行总结深思.今天正好有空,便对之前的接入SDK的代码进行了一次重构,写了一个比较通用的Unity接入Android SDK的中间件,前人栽树,后人乘凉. 进入正题 如果有对一些只是有疑问的,可以看看我之前的三篇文章: 传送门: Unity3d An

Unity3D集成TortoiseSVN

无论是个人开发还是团队开发,养成好的版本管理习惯可以大大提高开发效率.常用的版本管理软件一般用SVN或者Git.尽管2者都在用,但是更加偏好SVN一些.安装TortoiseSVN就可以直接将SVN管理软件集成到Windows的Explorer中了.点击鼠标右键就会有SVN的相关菜单,可以非常方便地CheckOut项目以及Commit和Update. 在使用Unity3D开发时,目前主流的代码编辑器(IDE)都会选择Virsual Studio(VS).作为宇宙第一强大的IDE,VS自然也有SVN

Unity3D 集成 Google Play Game Service和Google In-app pucharse

Google Play Game Service 有google官方的Unity插件 https://github.com/playgameservices/play-games-plugin-for-unity Google In-app pucharse 采用Unity内置的的 UnityIAP 测试的前提是APP已经提交到Google Play商店并发布为alpha.beta或正式版 测试支付注意: bundle号要和提交到Google Play商店的保持一致 apk采用的keystore

CI-持续集成(2)-软件工业“流水线”技术实现

1   概述 持续集成(Continuous Integration)是一种软件开发实践.在本系列文章的前一章节已经对其背景及理论体系进行了介绍.本小节则承接前面提出的理论构想进行具体的技术实现. <Google软件测试之道>: "每天,Google都要测试和发布数百万个源文件,亿万行代码.数以亿计的构建动作会触发几百万次的自动化测试,并在好几十万个浏览器实例上执行.面对这些看似不可能完成的任务,谷歌是如何测试的呢?" 希望看完此文章的人,能够自己找到自己的答案. 2   

CI-持续集成(2)-软件工业“流水线”技术实现(转)

1   概述 持续集成(Continuous Integration)是一种软件开发实践.在本系列文章的前一章节已经对其背景及理论体系进行了介绍.本小节则承接前面提出的理论构想进行具体的技术实现. <Google软件测试之道>: "每天,Google都要测试和发布数百万个源文件,亿万行代码.数以亿计的构建动作会触发几百万次的自动化测试,并在好几十万个浏览器实例上执行.面对这些看似不可能完成的任务,谷歌是如何测试的呢?" 希望看完此文章的人,能够自己找到自己的答案. 2   

短视频sdk:选择一个靠谱的短视频SDK 你需要了解这些

2017 年,短视频成为了内容创业的新风口,各种短视频 App 如雨后春笋般先后上线.随着互联网内容消费升级,视频越来越像文字.图片一样,成为每一个 App 不可或缺的一部分. 为了能够更好地聚焦于业务,早日完成短视频 App 的上线,越来越多的公司倾向于选择一家靠谱的短视频 SDK 来起步,怎么定义靠谱?要关注哪些指标?仅功能满足就可以了吗? -- 显然不够.如果只是看下功能列表和商业版授权价格,不考虑开发易用性,最后还是要吃苦头走很多弯路的. 那么如何选择短视频 SDK ?站在 App 开发