Unity接入移动MM支付(Android)

移动没有用于Unity3D的移动MM支付SDK的接入,所以……

这样一来,你需要去官网下载IAP-SDK做成jar包供Unity调用:http://dev.10086.cn/iap/?action=down&areaid=1354082900

1、先要明确一点的是在Unity的Assets目录中你得有个Plugins/Android的目录,并且必须在Assets目录,否则无法将资源打包到PAK。此时,你可以尝试打一个apk的包,用压缩文件打开的目录结构是这样的:

为什么就这样了呢?我也想知道!这里记录一个路径,mac下找到Unity安装目录,右键Unity app 显示包内容:/Contents/PlaybackEngines/AndroidPlayer;Window下找到Unity安装目录:Unity\Editor\Data\PlaybackEngines\androidplayer。

2、那么我想你已经把SDK下载好了,我想你第一件事一定是先看它得接入文档咯,之后你得把它里面得Demo弄来测试一下吧?好我们生成了一个demo.apk,我用BetterZip打开是这样得:

注意红框中的内容,看到与Unity生成的APK(图一)有什么区别了吧?对,这些文件的缺失很可能就会导致让你抓狂的各种报错。比如什么什么“failed to find...”,或者官方的demo apk可以运行,而自己的apk老是报错的情况就要注意比较两者的差异了。最后我们再看看移动MM内购jar包:

看嘛,像这种移动MM内购支付SDK将资源放在了mmbilling的jar包当中了,导致Unity无法识别。所以我们要将这些必要的资源拷贝出来放在Plugins/Android对应的目录下面,一般的Plugins/Android都包含了如下目录:

a、assets
资源目录,如上图的神马图标之类的资源;

b、bin/libs目录,由于不是做android开发的,傻傻分不清楚。说是用来放第三方jar包的,但是最后发现无论你将jar包放在bin目录,libs目录,甚至直接在Android根目录都可以。哎。。太没得节操了。最好将jar包放bin目录,资源(armeabi-v7a、x86)放libs目录。

c、res目录,又是拿来放资源的。。神马情况?让assets情何以堪。瞬间混乱了。不过我讲demo.apk中的res直接拷贝到Plugins/Android目录,让Unity打包是会报错的。。哎。。

d、AndroidManifest.xml这个文件你得放在Plugins/Android下吧。

好吧,至少我们把assets资源集成进来了吧。哦,对,还有就是libs目录里面得.so资源armeabi、x86等。看看吧:

我这里把demo.apk解包后的assets下面的所有资源都添加到Plugins/Android/assets目录,将libs里面得资源都照样添加到armeabi-v7a和x86目录了,这里直接将demo的armeabi目录下得东东添加到armeabi-v7a目录就好。当然我这里将所有得第三方jar包也放在libs目录了,如:mmbilling.3.1.7.jar,还有我自己写的jar包:

3、至于怎么接入,我想你至少要看看官方的android接入文档吧。详细接入流程:http://www.cnblogs.com/alongu3d/p/3627936.html

4、再一点,关于Unity与Android交互的。说实话真的不太懂。常规做法是这样得:

a、你得新建android项目,引入Unity的class.jar:/Contents/PlaybackEngines/AndroidPlayer/relase/bin

b、继承UnityPlayerActivity:

package com.vgame.plugins;

import android.os.Bundle;

import com.iap.cm.IAP_CM;
import com.unity3d.player.UnityPlayerActivity;

public class UnityActivity extends UnityPlayerActivity
{
	@Override
	protected void onCreate(Bundle savedInstanceState)
	{
		super.onCreate(savedInstanceState);

		IAP_CM.onInit(this);
	}
}

Unity方面:

		using (AndroidJavaClass ac = new AndroidJavaClass ("com.unity3d.player.UnityPlayer"))
		{
			using (AndroidJavaObject ao = ac.GetStatic<AndroidJavaObject> ("currentActivity"))
			{
				ao.CallStatic ("init", "appid", "appkey", "Gameobject 接受消息的对象", "回调方法");
			}
		}

当然,你得在UnityActivity写上init方法并且是静态的。

可是,我不想这么干了,我不想继承UnityPlayerActivity,于是:

		using (AndroidJavaClass ac = new AndroidJavaClass ("com.iap.mm.IAPController"))
		{
			ac.CallStatic ("init", "appid", "appkey", "Gameobject 接受消息的对象", "回调方法");
		}

但是,很遗憾的是这样无法调用到init的,根本没反应。这是为什么呢?不知道。估计是using这活把ac给我回收了,好吧:

		AndroidJavaClass ac = new AndroidJavaClass ("com.iap.mm.IAPController");
		ac.CallStatic ("init", "appid", "appkey", "Gameobject 接受消息的对象", "回调方法");

成功了!当然你不要忘了将com.iap.mm.IAPController的工程打个jar包放在Plugins/Android/bin目录中哟!

5、至此,剩下的CopyrightDeclaration.xml、mmiap.xml、VERSION或者res里得文件要怎么打包进apk呢?

a、确保你已将demo里面得aseets和lib下面得文件都集成到Unity的Plugins/Android文件里面,打包生成apk,这里将你打包用到keystore保存到一个文件夹如:relase什么得,随便了,就是留着备用。

b、将apk后缀名改成zip,用压缩文件打开,我这里就用BetterZip了:

此时我们可以看到aseets和lib里面得资源已经打包到apk了。

c、将缺失的CopyrightDeclaration.xml、mmiap.xml、VERSION文件添加进来:

保存并将扩展名改回apk。这样得apk我想是无法安装到手机的,你说呢?所以有必要对apk重新签名,看这里:http://blog.csdn.net/h5q8n2e7/article/details/47837653如果你是window:http://blog.sina.com.cn/s/blog_13791f8000102v2ru.html

好啦!

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-08-28 16:02:50

Unity接入移动MM支付(Android)的相关文章

unity 引用 移动mm 支付sdk

原地址:http://blog.csdn.net/u012085988/article/details/17531005 资源下载:http://download.csdn.net/detail/u012085988/6770625 (最近csdn貌似出了问题,超链接不能用了,博客写好发布后发现被截短了,这是什么情况) 点击下载资源.这里包含有unity引入移动mmsdk所需要的文件,以及一个编译好的android测试程序.若不想写代码,不想建eclipse可以下载资源包,跳过eclipse部分

Unity3D接入移动MM支付SDK(强联网)的问题

原地址:http://blog.csdn.net/lihandsome/article/details/11919113 因为移动MM支付的SDK只提供android版本的,要自己写过一个android项目再打包重新生成一个jar来供Unity3d引擎使用,这一部分我就不写了,网上也提供很多的教程,主要是已经成功调用之后,会发生以下的错误: 1.failed to find resource file(mmiap.xml} 06-28 05:14:09.746: E/d(4709): faile

Unity3d 接入 移动MM支付SDK(2.3) 全攻略

原地址:http://blog.csdn.net/dingxiaowei2013/article/details/26842177 先将例程运行起来 下载例程(csdn积分不够上传不了,只能用百度网盘):http://pan.baidu.com/s/1gd7PrxD 打开unity工程mm_pay_unity build apk包至工程目录\Assets\plugin_pay_mm\Tools\AndroidMultitool\Program_Files\app_temp.apk  (注意apk

Unity接入谷歌支付

文章理由 前段时间负责Unity接入Google内购功能,一开始研究别人的技术博客时发现,他们的文章都有些年头了,有些细节的地方已经不像n年前那样了,技术永远是需要更新的,而这篇就作为2016年末的最后一篇接入谷歌内购文章写给需要的人 准备工作 1.将自己的谷歌账号,支付25美元,成为谷歌开发者账号,开发者信息随意填写(有的博客写着必须填写美国,其实我就填写的中国)2.一台安装有谷歌四件套的安卓手机以及VPN3.一个用于测试的Unity小demo,只需要做好支付按钮就好了 谷歌开发者后台的设置

Unity与Android交互-Unity接入高德地图实现定位以及搜索周边的功能(使用Android Studio)详细操作

刚进公司给安排的任务就是Unity接入高德地图,算是踩了不少坑总算做出来了,抽点时间写个博客记录一下 废话不多说 先上效果图 获取定位并根据手机朝向显示周边信息            使用的Unity版本为5.5,Androad Studio 2.3.1 接下来开始讲具体操作 首先是Androad Studio的基本配置 1.创建工程,空白的就行,反正也用不到界面布局 等待创建完成 2.新建库模块: 切换到Project视图 右击你的项目 新建一个库模块-用来负责与Unity交互 当然你也可以不

Unity 接入Android SDK-小米sdk

接入Android SDK流程分为以下四步: 1.写Android Activity文件 与 unity的调用java接口(AndroidJavaClass/AndroidJavaObject) 2.Android java代码写完后,打包成JAR包 3.copy Android工程到Unity 4.Android回调Unity(UnityPlayer.UnitySendMessage) 一.写Android Activity文件 与 unity的调用java接口 Android Activit

Untiy 接入 移动MM 详解

原地址:http://www.cnblogs.com/alongu3d/p/3627936.html 第一次接到师傅的任务(小龙),准备着手写untiy接入第三方SDK的文章(android 方向),第一次写故而写的不好的地方不要吐槽.如有兴趣可加63438968(untiy 开发群)进行探讨. 本文主要已 unity 和android工程为基础进行解析分析.其次因目前各地sdk平台与unity程序有不兼容问题,故而导致了在发布后会缺少文件.本文也提供了一个解决方案供大家参考. 具体工程可加群6

unity调用MMBilling_2.4.2 Android SDK.

你看到的这个文章来自于http://www.cnblogs.com/ayanmw 项目要使用android 的移动支付SDK 应用内付费[http://dev.10086.cn/wiki/?p2_01_05] 由于需要unity和android交互,之前研究了下,unity和android交互是可以的.但是unity和MMBilling的SDK调用为什么就是不成功呢? 经过几日研究,通过 eclipse ADT的LogCat的日志,发现运行时报错,错误内容 暂时没记录,总之就是找不到资源的问题.

Unity3d游戏中添加移动MM支付SDK问题处理

原地址:http://www.tuicool.com/articles/I73QFb 由于移动mm的SDK将部分资源文件放在jar包中,导致Unity无法识别,提示failed to find resource file(mmiap.xml}错误 需要做以下几步操作: -- 解压mmbilling.2.3.0.jar,提取CopyrightDeclaration.xml.mmiap.xml.VERSION文件,和mmiap文件夹 -- 拷贝mmiap文件夹到Unity项目Assets/Plugi