首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在发布模式下不会触发从cocos2d-x到Android的JNI调用。

在发布模式下不会触发从cocos2d-x到Android的JNI调用。
EN

Stack Overflow用户
提问于 2018-10-31 08:24:46
回答 1查看 574关注 0票数 1

在发布模式下,从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++:

代码语言:javascript
复制
#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);
    }

}

安卓本机:

代码语言:javascript
复制
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);
            }
        });

    }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-11-06 10:16:55

默认情况下,发布构建发票会混淆ProGuard。如果计划从JNI或通过反射使用一些Java回调,则必须显式地从混淆中清除这些方法。在https://stackoverflow.com/a/7881522/192373中可以找到更多的例子。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53079094

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档