cocos2dx android SDK接入总结

cocos2dx android SDK接入总结,第1张

概述转自:http://blog.sina.com.cn/s/blog_78ea87380102vapq.html 在游戏开发中,对接入三方支付SDK的总结,(此处主要以移动的支付sdk为例, 说说 *** 作的大体步骤 或 其中遇到的一些问题。) 问题:1.三方库的拷贝问题,(如果是将*.so放在libs/armeabi下, 有可能在编译后会被NDK清除掉,所以导致找不到库的问题:  解决方法1: 通过ND

转自:http://blog.sina.com.cn/s/blog_78ea87380102vapq.HTML

在游戏开发中,对接入三方支付SDK的总结,(此处主要以移动的支付sdk为例, 说说 *** 作的大体步骤 或 其中遇到的一些问题。)


问题:1.三方库的拷贝问题,(如果是将*.so放在libs/armeabi下, 有可能在编译后会被NDK清除掉,所以导致找不到库的问题: 解决方法1: 通过NDK,添加androID.mk文件,进行拷贝,但此处NDK的拷贝,会导致*.so内部一些符号的修改,从而会导致有些的*.so库会编译不成功(如libmegjb.so移动基地sdk)。 此方法是在jni目录中创建一个预编译文件夹prebuilt,将需要拷贝的*.so库,再创建一个AndroID.mk文件,指定要编译的库 LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_MODulE := libsmsiap LOCAL_SRC_fileS := libsmsiap.so include $(PREBUILT_SHARED_liBRARY) 再在jni下的AndroID.mk中添加需要编译的makefile LOCAL_SHARED_liBRARIES := libsmsiap include $(OT_PATH)/prebuilt/AndroID.mk 这样就可以在每次编译后,拷贝*.so文件到libs/armeabi下 ) 解决方法2:可以自己新建一个*.bat文件,实行自己拷贝,在NDK执行后。此种方式简单好用。在jni目录下创建一个.bat文件,copy jni\prebuilt\*.so libs\armeabi\,就执行这样一个copy命令,再按照新建NDK的方式,在AndroID工程中buIDlers下新建一个编译器,放在NDK编译后面,就可以进行拷贝。 1、cocos2d调用java中的方法,进行支付。(借用jni库进行调用通信) voID AndroIDPayment::callPayment(std::string payCo,std::string money) { cocos2d::JniMethodInfo method; jobject obj;
//通过cocos2dx的JniHelper获取java类中的静态成员函数,进行调用 //org.cocos2dx.cpp.AppActivity 调用java方法的包名+类名 //order: 为调用java的方法名 // "(Ljava/lang/String;Ljava/lang/String;)V":为jni定义的参数及返回类型 //具体jni的一些调用,可参考:http://zhiweiofli.iteye.com/blog/1830321
bool b = cocos2d::JniHelper::getStaticmethodInfo(method,"org.cocos2dx.cpp.AppActivity","order","(Ljava/lang/String;Ljava/lang/String;)V"); if(b) { Jstring payCode = method.env->NewStringUTF(payCo.c_str());//"30000843784201" Jstring jMsg = method.env->NewStringUTF(money.c_str());//"30000843784202" method.env->CallStaticVoIDMethod(method.classID,method.methodID,payCode,jMsg); method.env->DeleteLocalRef(payCode); method.env->DeleteLocalRef(jMsg); } } java中的函数定义: public static voID order(String payCode,String reserve){ AppActivity.mPaycode = payCode; AppActivity.sContext.smsOrder(AppActivity.sContext,AppActivity.mListener); }
//调用三方sdk的接口,进行order支付 public voID smsOrder(Context context,OnPurchaseListener Listener) { try { purchase.order(context,mPaycode,Listener); } catch (Exception e) { e.printstacktrace(); } } 2、支付成功后调用cocos2d函数进行回调 *** 作。 在java中申明 native函数: public class IAPCallback { public static native voID nativeInitResultCallback (int code,String msg); public static native voID nativePayCallback(String paycode,String orderID,String TradeID,String TradeType,String leftDate); public static native voID nativePaySucessCallback(int b); } 通过javah对此java类进行编译,生成*.h文件,再实现.cpp文件: .cpp文件中在同cocos2d中衔接,就实现了一个完整的支付流程。 总结

以上是内存溢出为你收集整理的cocos2dx android SDK接入总结全部内容,希望文章能够帮你解决cocos2dx android SDK接入总结所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1079857.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-27
下一篇 2022-05-27

发表评论

登录后才能评论

评论列表(0条)

保存