creator 安卓release包 js调java找不到该java文件的问题

  • Creator 版本:2.1.0

  • 目标平台: Android

  • 详细报错信息,包含调用堆栈:
    2019-01-26 09:29:20.605 ? D/JavaScriptJavaBridge: Classloader failed to find class of com/xxx/xxx/xxx
    2019-01-26 09:29:20.605 ? E/JavaScriptJavaBridge: [ERROR] (/Applications/CocosCreator.app/Contents/Resources/cocos2d-x/cocos/scripting/js-bindings/manual/JavaScriptJavaBridge.cpp, 503): JavaScriptJavaBridge::CallInfo isn’t valid!
    2019-01-26 09:29:20.605 ? E/JavaScriptJavaBridge: [ERROR] Failed to invoke JavaScriptJavaBridge_callStaticMethod, location: /Applications/CocosCreator.app/Contents/Resources/cocos2d-x/cocos/scripting/js-bindings/manual/JavaScriptJavaBridge.cpp:599

  • 重现方式:

  • 之前哪个版本是正常的 :debug版本没问题

  • 手机型号 :MI 6

  • 手机浏览器 :

  • 编辑器操作系统 :

  • 编辑器之前是否有其它报错 :无

  • 出现概率:必现

  • 额外线索:

1赞

经公司前辈提醒,这个问题已经解决了。
在proj.android-studio中的app文件夹中找到proguard-rules.pro文件,增加类似下面格式文本的一些内容
-keep public class org.cocos2dx.** { ; }
-keep public class com.tencent.
* { ; }
-keep public class com.google.
* { ; }
-keep public class com.你的包名.
* { *; }
如果,有多少其包,增加多少行。原理是release包把我们的包混淆了,所以找不到,这个方法可以在混淆时忽略我们加的包。

6赞

感谢分享,解决了我一个问题

感谢分享, 成功解决了

先mark一下,以后说不定用的上

我今天也遇到了这个问题,用了题主的方法,果然有效!

proguard-rules.pro 我是在 这个文件里 最后添加

自己游戏的包名 否则release 版本 有时候找不到 类的方法

-keep class com.xxx.xxxx.** {*;}

另外附上 android studio release版本下打印输出日志

只需要 debuggable true 加入 buildTypes {}

buildTypes { release { minifyEnabled false debuggable true //true代表开启 false 关闭 proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' signingConfig signingConfigs.config } debug { signingConfig signingConfigs.config } }

原文链接:android studio release版本下打印输出日志

1赞

release本来就是发布用的,你还开启debuggable 也是有才:joy:

开启 debuggable 是让人 查看 bug 原因的 不是 让项目最后 输出 带着 debuggable true 的

亲测可用,感谢大佬