Android Studio的logcat注意观察看下什么原因导致的闪退,一般都能看到信息,常见的比如Android权限有没有配置。
我截个图给你看下
红色的日志翻到最上面,第一个错误。
2022-09-17 11:34:50.285 1221-7055/com.google.android.gms E/GCM: Missing checkin config file
2022-09-17 11:34:50.287 1221-7055/com.google.android.gms E/GCM: Missing checkin config file
2022-09-17 11:34:50.292 1221-7055/com.google.android.gms E/WakeLock: GCM_HB_ALARM release without a matched acquire!
2022-09-17 11:34:50.703 1221-7062/com.google.android.gms E/GCM: Missing checkin config file
2022-09-17 11:34:50.705 1221-7062/com.google.android.gms E/GCM: Missing checkin config file
2022-09-17 11:34:50.711 1221-7062/com.google.android.gms E/WakeLock: GCM_HB_ALARM release without a matched acquire!
2022-09-17 11:35:52.627 418-418/? E/android.hardware.power.stats@1.0-service-mock: Failed to getEnergyData
2022-09-18 09:53:30.282 575-689/system_process E/LazyAlarmStore: Removed TIME_TICK alarm
2022-09-18 09:53:32.175 7126-7158/? E/JavaBinder: !!! FAILED BINDER TRANSACTION !!! (parcel size = 572)
2022-09-18 09:53:32.424 373-395/? E/android.hardware.audio@7.0-impl.ranchu: device/generic/goldfish/audio/stream_out.cpp:updateSourceMetadata:377 failure: Result::NOT_SUPPORTED
2022-09-18 09:53:32.604 373-395/? E/android.hardware.audio@7.0-impl.ranchu: device/generic/goldfish/audio/stream_out.cpp:updateSourceMetadata:377 failure: Result::NOT_SUPPORTED
2022-09-18 09:53:33.348 7270-7347/? E/GEL_DELAYED_EVENT_DEBUG: Failed delayed event dispatch, no dispatchers.
2022-09-18 09:53:33.378 7270-7328/? E/AwarenessClientProvider: Account associated with identity was null
2022-09-18 09:53:33.407 7270-7319/? E/AwarenessRouterSyncMgr: Exception while syncing fences
java.util.concurrent.ExecutionException: java.lang.IllegalStateException: Account associated with identity was null
at acyh.s(PG:6)
at acyh.get(PG:4)
at adbz.a(PG:1)
at adaq.p(PG:2)
at gzf.run(PG:1)
at nwe.run(PG:1)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
at nvp.run(PG:2)
at nvf.run(PG:2)
at java.lang.Thread.run(Thread.java:920)
Caused by: java.lang.IllegalStateException: Account associated with identity was null
at gyl.a(PG:3)
at acyj.f(PG:2)
at acyl.run(PG:9)
at nwe.run(PG:1)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
at nvp.run(PG:2)
at nvf.run(PG:2)
at java.lang.Thread.run(Thread.java:920)
是这个么?
你调用奔溃的时候,把error的信息全部贴上来。
我比较建议你接SDK的时候用usb线连接真机调试,模拟器不可靠。
好,我先研究接真机调试
通过usb链接,提示签名不对,但是通过Androidstudio生成的安装到手机上没有这个提示,这个是怎么回事?




你的debug签名文件也要设置成release的才行。
3q,我去修改哈
现在还是授权后退出
Run中的报错信息A/libc: Fatal signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0xa4b8 in tid 20496
Logcat的错误信息
2022-09-18 11:03:34.041 418-418/? E/android.hardware.power.stats@1.0-service-mock: Failed to getEnergyData
2022-09-18 11:03:54.208 1297-5870/com.google.android.gms E/WakeLock: DG:service ** IS FORCE-RELEASED ON TIMEOUT **
错误信息就这些?
找到问题了,我把所有的CocosJavascriptJavaBridge注释了,就没有问题,在onResp正确的返回了code值,然后我把这个code值传入ts的时候出错
CocosJavascriptJavaBridge.evalString(String.format(“cc.find(‘Canvas/GameApp’).getComponent(‘GameLauncher’).wechatRespCode(’%s’, ‘%s’);”, result, code));
我这么去处理的,主要不会java相关的,所以我都把值发在ts里面处理,现在是这里出问题,应该怎么去处理java调用ts的问题,这种调用方法我感觉很傻的样子
js_native_cb 放在哪? cocos组件中的onload里面?
好的,谢谢了,我去这么处理看看,有不懂的再问你,3q3q
没事,反正趁机划划水。 
Native文件提供给你,这个本来也是论坛的前辈写的。
import { log, sys } from “cc”;
/*
Native Caller
bool/string/number/string/function
调用
andrid -> org.cocos2dx.javascript.Native.SayHello(String helloString, String cbName);
ios -> Native.SayHello : (NSString*) helloString
arg1 : (NSString*) cbName;
写法
native.call(“SayHello”, “hello world”, (ok) => { })
native.callClz(“Native”, “SayHello”, “hello world”, (ok) => { })
参考:
https://github.com/qcdong2016/creator-native-bridge
*/
export class Native {
cbs: Object;
constructor() {
this.cbs = {};
let self = this;
//android或者iOS的回调
(<any>window).js_native_cb = function (cbID) {
let func = self.cbs[cbID];
if (func) {
let args = Array.prototype.slice.call(arguments);
args.splice(0, 1);
func.apply(null, args);
} else {
log("no func ", cbID);
}
}
}
_newCB(key, f) {
let cbID = "" + key;
if (this.cbs[cbID] != null) {
delete this.cbs[cbID];
}
this.cbs[cbID] = f;
return cbID;
}
/**
* 这个是你调用的方法
* @param {*} clz 类名, 需在 'org/cocos2dx/javascript/' 路径下
* @param {*} funcName 方法名
* @param {*} retType 返回值类型
*/
callClz(clz, funcName, retType?: any, ...args) {
let real_args = [clz, funcName]
let funKey = funcName;
if (sys.os == sys.OS.ANDROID) {
real_args[0] = "com/cocos/game/" + clz
real_args[2] = "()"
// 填充参数
if (args.length > 0) {
let sig = ""
args.forEach((v) => {
switch (typeof v) {
case 'boolean': sig += "Z"; real_args.push(v); break;
case 'string': sig += "Ljava/lang/String;"; real_args.push(v); break;
case 'number': sig += "I"; real_args.push(v); break;
case 'function':
sig += "Ljava/lang/String;";
real_args.push(this._newCB(funKey, v));
break;
}
})
real_args[2] = "(" + sig + ")"
}
// 填充返回值
if (retType) {
switch (retType) {
case 'boolean':
real_args[2] += 'Z';
break;
case 'string':
real_args[2] += 'Ljava/lang/String;';
break;
case 'number':
real_args[2] += 'I';
break;
}
} else {
real_args[2] += 'V';
}
} else if (sys.os == sys.OS.IOS) {
if (args.length > 0) {
for (let i = 0; i < args.length; i++) {
let v = args[i]
if (typeof v == "function") {
real_args.push(this._newCB(funKey, v))
} else {
real_args.push(v)
}
if (i == 0) {
funcName += ":"
} else {
funcName += "arg" + i + ":"
}
}
real_args[1] = funcName
}
} else {
return
}
return jsb.reflection.callStaticMethod.apply(jsb.reflection, real_args);
}
}
(window as any).Native = Native
调用的时候:







