环境:
Windows 8.1 x64
Eclipse Luna
Unity3D 4.6 / 5.0
MMBilling 3.1.3
2015-04-20
折腾了很久, 实际上仍未解决问题, 直到上周找到高人指点, 才发现没有那么多繁琐的步骤, 步骤如下:
右键点击你的安卓SDK工程, 导出jar文件.
将导出的jar放到Unity工程里面, 路径为
\Assets\Plugins\Android\bin
在Unity工程里面, 导出Android Project, 要勾选Google Android Project, 下边的Build按钮才会变成Export
随便选个路径放着, 反正是临时用.
在Eclipse里面导入刚才在Unity下面导出的工程
等Eclipse自动编译好, 直接运行, 大功告成.
几点
- 要从Unity导出安卓工程, 然后在其它环境下编译
- 不用手动解包, 复制资源等等
- 如果有奇怪的BUG, 不妨自己重新开一个新的, 因为笔者在前程序哥的基础上, 无论怎么折腾都不行, 之前我们是安卓工程里面接了一大堆安卓SDK, Unity工程里面接了一大堆Unity SDK, 无论用什么方法, 包括导出工程的方法, 都会遇到奇奇怪怪的问题. 于是笔者在浪费了2天时间之后, 决定把当前项目需要的SDK重新写一遍, 并且一律使用安卓SDK, 目前一起接入的只有MM SDK和Talking Data, 然后问题就这样没了. 虽然之前出错的原因没找到, 但是能确定的是, 问题出在以往接入的某个SDK里面, 我也无心去深究具体原因了, 万一某个SDK已经更新并且没BUG了呢… 这种问题, 只能长叹一口气啊!
以前的错误
1. 创建Handler的问题
在接移动的支付SDK时, 发现有一段代码执行不了
MMBillingHandler iapHandler = new MMBillingHandler(this.context);
我看了一下Handler
类的文档, 没有发现它会主动抛出异常, 但是构造方法里面有这样一句话, 说明会抛RuntimeException
Default constructor associates this handler with the Looper for the current thread. If this thread does not have a looper, this handler won’t be able to receive messages so an exception is thrown.
于是尝试着抓一抓, 果然发现有问题, 并且是文档中说的looper
的问题.
04-09 21:47:13.551: D/payment(18950): java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()
04-09 21:47:13.551: D/payment(18950): at android.os.Handler.<init>(Handler.java:200)
04-09 21:47:13.551: D/payment(18950): at android.os.Handler.<init>(Handler.java: