在发布模式下,从cocos2d-x (C++)到的调用函数存在问题。
在cocos2d-x中,我有一个函数:logInToGamePlayServices,,它将调用Java中的函数,开始登录游戏游戏服务。它在调试模式下正常工作。但是当我制作一个发布版本上传到存储时,这个函数不会被触发。
我的构建设置:
编译Sdk版本:API 27: Android8.1(奥利奥)
目标Sdk版本:API 27: Android8.1(奥利奥)
Min版本:API 15: Android4.0.3 (IceCreamSandwich)
构建工具版本:28.0.3
NDK:android-ndk-r16b
Cocos2d-x:v3.17
C++:
#include "platform/android/jni/JniHelper.h"
#include <jni.h>
USING_NS_CC;
void NativeHelper::logInToGamePlayServices() {
JniMethodInfo methodPlayGame;
if (JniHelper::getStaticMethodInfo(methodPlayGame, "games/core/CoreActivity", "logInToGamePlayServices", "()V")) {
methodPlayGame.env->CallStaticVoidMethod(methodPlayGame.classID, methodPlayGame.methodID);
}
}安卓本机:
package games.core;
public class CoreActivity extends Cocos2dxActivity {
public static void logInToGamePlayServices() {
_shareInstance.runOnUiThread(new Runnable() {
public void run() {
Intent signInIntent = _shareInstance.mGoogleSignInClient.getSignInIntent();
_shareInstance.startActivityForResult(signInIntent, RC_SIGN_IN);
}
});
}
}发布于 2018-11-06 10:16:55
默认情况下,发布构建发票会混淆ProGuard。如果计划从JNI或通过反射使用一些Java回调,则必须显式地从混淆中清除这些方法。在https://stackoverflow.com/a/7881522/192373中可以找到更多的例子。
https://stackoverflow.com/questions/53079094
复制相似问题