Cocos 2 dx-luaプロジェクトの中で集積の微信の支払いと微信の登録が出会った穴!!!

2909 ワード

1,書き込みc++呼び出し方法
JNIでjava仮想マシンを取得し、現在のプログラムのJNI環境を取得し、JNI環境で呼び出す必要があるjavaクラス情報を取得し、呼び出す必要があるjavaクラスの関数情報を取得します.さらにJNI環境で呼び出し,クラス情報,関数情報を用いて対応するjava関数を呼び出す.
#include "cocos2d.h"
#include "config.h"

#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)
#include "platform/android/jni/JniHelper.h"

JniHelperを参照してください.hの場合、#if(CC_TARGET_PLATFORM==CC_PLATFORM_ANDROID)を付けないとiOSバージョンがエラーになります.
使用するインタフェースは次のとおりです.
static bool getStaticMethodInfo(JniMethodInfo &methodinfo, const char *className, const char *methodName, const char *paramCode);
static bool getMethodInfo(JniMethodInfo &methodinfo, const char *className, const char *methodName, const char *paramCode);

たとえば、私の方法:
.h    
static void Pay_WXPay(const char *partnerid,const char *prepayid,const char *package,const char *noncestr,const char *timestamp,const char *sign);
.cpp   
void CMiscHelper::Pay_WXPay(const char *partnerid,const char *prepayid,const char *package,const char *noncestr,const char *timestamp,const char *sign)
{
    JniMethodInfo t;
    if(JniHelper::getStaticMethodInfo(t, (string(CLASS_NAME)+string("MiscHelper")).c_str(), "Pay_WXPay", "(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljav  a/lang/String;Ljava/lang/String;)V"))
        {
        jstring jpartnerid =  t.env->NewStringUTF(partnerid);
        jstring jprepayid =  t.env->NewStringUTF(prepayid);
        jstring jpackage =  t.env->NewStringUTF(package);
        jstring jnoncestr =  t.env->NewStringUTF(noncestr);
        jstring jtimestamp =  t.env->NewStringUTF(timestamp);
        jstring jsign =  t.env->NewStringUTF(sign);
        t.env->CallStaticVoidMethod(t.classID, t.methodID, jpartnerid,jprepayid,jpackage,jnoncestr,jtimestamp,jsign);
        t.env->DeleteLocalRef(jpartnerid);
        t.env->DeleteLocalRef(jprepayid);
        t.env->DeleteLocalRef(jpackage);
        t.env->DeleteLocalRef(jnoncestr);
        t.env->DeleteLocalRef(jtimestamp);
        t.env->DeleteLocalRef(jsign);
        t.env->DeleteLocalRef(t.classID);
        }
        }

タイプ中Ljava/lang/String;分号には必ずプラス!!!
そして/tools/tolua/xxx python genbindings_xxx.pyバインド後自動生成ファイルデフォルトはautoで、lua_jni_auto.cppファイルにアンドロイドを追加していない場合は追加を覚えています:#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)そうでないとエラーが発生します!!!
2,java原生の書き方
1.アプリケーションのパッケージ名(Mainfext.xmlのパッケージ)は、バックグラウンド構成と一致する必要があります.
2.アプリケーション生成はdebugパッケージではなく、正式な署名パッケージでなければなりません.この署名は、releaseパッケージが正常に支払われるようにバックグラウンド構成と一致する必要があります.
3.微信の方法の作成には制約があり、あなたのプロジェクトパッケージ名はcomです.aaa.xxx、ではsrcの下にcomを新規作成します.aaa.xxx.wxapiのパッケージ、微信はこのパッケージの下にログインしてWXEntryAvtivityのクラスを作成します.微信支払いはこのパッケージの下にWXPayEntryAvtivityのクラスを作成します.
3,微信登録後のブラックスクリーンフラッシュの問題