OH, TIMMYTATION. GEEK MODE ENABLED.
Thank you for that. Holy cow.
Launching LLIS
The first thing I get in that day’s logfile is a debug message, which is fine, but then I get 28 error messages, telling me that LLIS’s attempts to load 14 specific language-properties files failed.
2025-05-10 14:48:55.438702: 2025-05-10 14:48:55.438677 [ERROR] TAG:Instance of 'LocaleManager' ||: Failed to load cache language at path /Users/mcglk/Library/Caches/com.sjtech.loklikstudio/Local: PathNotFoundException: Cannot open file, path = '/Users/mcglk/Library/Caches/com.sjtech.loklikstudio/Local/design_zh-CN.properties' (OS Error: No such file or directory, errno = 2)
2025-05-10 14:48:55.441676: 2025-05-10 14:48:55.441671 [ERROR] TAG:Instance of 'LocaleManager' ||: Failed to load cache language at path /Users/mcglk/Library/Caches/com.sjtech.loklikstudio/Local: PathNotFoundException: Cannot open file, path = '/Users/mcglk/Library/Caches/com.sjtech.loklikstudio/Local/design_zh-CN.properties' (OS Error: No such file or directory, errno = 2)
[...26 more lines elided; see below...]
for zh-CN
(Chinese with simplified characters, de-CH
(Swiss Standard German), es-MX
(Mexican Spanish), fr-BE
(French à la Belgium), it-IT
(Italian), ko-KR
(Korean), nl-NL
(Dutch), tr-TR
(Turkish), ru-RU
(Russian), pt-PT
(Portuguese), pt-BR
(Brazilian Portuguese), ar-SA
(Arabic), ja-JP
(Japanese), and es-CL
(Chilean Spanish).
I like that LLIS supports a lot of languages in theory, but these probably shouldn’t be considered “errors,” unless the system is set to one of those languages. I’m not sure why it’s trying to load them if my system locale is already running as en-US
(American English).
I wonder why they didn’t come with the system installation. But that’s not relevant to my issue.
Then there’s this:
2025-05-10 14:48:55.648436: ZonedGuarded Error:MissingPluginException(No implementation found for method preventSleep on channel business_plugin)
2025-05-10 14:48:55.648534: ZonedGuarded Error:#0 MethodChannel._invokeMethod (package:flutter/src/services/platform_channel.dart:320)
<asynchronous suspension>
#1 MethodChannelBusinessPlugin.preventSleep (package:business_plugin/business_plugin_method_channel.dart:20)
<asynchronous suspension>
I don’t actually know what this means, but there’s a hint there: At least part of LLIS is written in Dart, and a little investigation reveals that it’s using the Flutter UI library. (I tried to provide links for those, but the site wouldn’t let me for some reason.)
I wonder if Flutter is responsible for the odder user-interface choices that LLIS makes. Surely it works better than that? I don’t know; I haven’t programmed in Dart (yet).
Then a few debug messages from the CacheDataManager, then six error messages:
2025-05-10 14:48:55.937553: 2025-05-10 14:48:55.937545 [ERROR] TAG:UpdateCheckController ||: onInit
2025-05-10 14:48:55.996837: 2025-05-10 14:48:55.996827 [ERROR] TAG:UpdateCheckController ||: onready
2025-05-10 14:48:55.997089: 2025-05-10 14:48:55.997087 [ERROR] TAG:UpdateCheckController ||: checkVersion()
2025-05-10 14:48:55.997647: 2025-05-10 14:48:55.997646 [ERROR] TAG:UpdateCheckController ||: checkVersion() url=https://loklikideastudio.com/software_v2/software/app/getLatestVersionByType, queryParameters={softwareType: Mac, applicableAreas: OTHER, clientType: PC, versionNumber: v2.4.1}
2025-05-10 14:48:56.521140: [DEBUG] TAG:Instance of 'LocaleManager' ||: getLocaleFileFromSever: save complete
2025-05-10 14:48:56.732495: 2025-05-10 14:48:56.732475 [ERROR] TAG:UpdateCheckController ||: checkVersion() success:{code: 200, success: true, msg: Operation successful}
2025-05-10 14:48:56.733985: 2025-05-10 14:48:56.733978 [ERROR] TAG:UpdateCheckController ||: no update or update failed
These . . . aren’t error messages. Informational, sure—it’s telling me that some routines were successfully executed. But they shouldn’t be flagged as errors.
Then another debug message, and a couple more of these bogus “errors”:
2025-05-10 14:48:56.732495: 2025-05-10 14:48:56.732475 [ERROR] TAG:UpdateCheckController ||: checkVersion() success:{code: 200, success: true, msg: Operation successful}
2025-05-10 14:48:56.733985: 2025-05-10 14:48:56.733978 [ERROR] TAG:UpdateCheckController ||: no update or update failed
Then a string of DEBUG messages, with some bits in Chinese:
2025-05-10 14:48:56.782413: [DEBUG] TAG:VideoSource ||: 添加成功:/Users/mcglk/Library/Application Support/com.sjtech.loklikstudio/guide_video/d7aeaf4a5b17426f99c33b19cf284d9d.mp4
[...]
2025-05-10 14:49:28.154369: [DEBUG] TAG:Instance of 'LogUploader' ||: Resources\test 目录不存在: //Resources/test
[...]
The various Chinese I found, if you’re spelunking through your own logfiles, translate as
- 添加成功: “Added successfully”
- 目录不存在: “Directory does not exist”
- 源文件不存在: “Source file does not exist”
Anyway, more debug messages come in over the next few seconds, and that’s basically it. I haven’t even powered the iCraft up yet. But let’s try that.
Powered up successfully, no additional messages. Let’s try connecting.
Nope. Completely failed to connect. Worse, there aren’t any log messages about it; only the error message in the interface that reads “No device available. Please research or check the USB connection.”
Well, poopers. That was not nearly as helpful as I’d hoped.
Let’s take a look at yesterday’s log, when everything went awry.
It starts out exactly the same way, with a smattering of errors, “errors,” and debug messages when LLIS starts up. LLIS, in fact, emits a lot of DEBUG messages. This doesn’t bother me, but a lot of them are fairly uninformative to someone unfamiliar with the code. They’re certainly not particularly human-friendly.
So here are the messages that occurred when my iCraft stopped; comments and translations will be supplied in 《this form》
:
2025-05-09 20:24:21.073629: [DEBUG] TAG:DeviceTaskManager ||: saveTasks count: 1 userId: Je07qj3+UtOfMl+j0bvZrUUrqoODMYgPC1ULMqCxfBU=
2025-05-09 20:24:21.079336: [DEBUG] TAG:DeviceTaskManager ||: Saving tasks to /Users/mcglk/Library/Application Support/com.sjtech.loklikstudio/caches/deviceTasks.json
2025-05-09 20:25:06.172331: [DEBUG] TAG:Instance of 'DeviceManager' ||: DeviceManage subDeviceConnectStatus
2025-05-09 20:25:06.177301: [DEBUG] TAG:Instance of 'DeviceManager' ||: DeviceManage _initDevicesSubscription
2025-05-09 20:25:06.177945: [DEBUG] TAG:Instance of 'DeviceManager' ||: Device_Manager:DeviceEvent RCV: {"mid":"1746847506160343000","subject":"Event.Dev.ConnectStatus","content":{"connect_status":"DisConnection","device_id":"1746788261938307000"}}
《At this point, the device is disconnected; it had been working fine up to this point.》
2025-05-09 20:25:06.185284: [DEBUG] TAG:Instance of 'CutTaskProvider' ||: 设备断开连接《“Device disconnected”》
2025-05-09 20:25:06.185998: 2025-05-09 20:25:06.185923 [INFO] TAG:Instance of 'MessageInfoController' ||: 设备断开连接《“Device disconnected”》
2025-05-09 20:25:31.273365: [DEBUG] TAG:Instance of 'CutTaskListController' ||: onClose()
2025-05-09 20:25:44.820954: [DEBUG] TAG:Instance of 'DeviceSearchController' ||: logString 开始搜索设备, 方式 《“Start searching for devices, by”》:ConnectMode.usb
2025-05-09 20:25:46.847751: [DEBUG] TAG:Instance of 'DeviceManager' ||: DeviceManage _initDevicesSubscription
2025-05-09 20:25:46.848770: [DEBUG] TAG:Instance of 'DeviceManager' ||: Device_Manager:DeviceEvent RCV: {"mid":"1746847546847015000","subject":"Resp.Disp","reply_mid":"ef6dd680-0216-4eba-8dda-8ccfdf8db075","reply_subject":"Dev.Discover","content":{"code":0,"data":{"active_device":[]},"message":"ok"}}
2025-05-09 20:25:49.374335: [DEBUG] TAG:Instance of 'DeviceSearchController' ||: logString 开始搜索设备, 方式《“Start searching for devices, by”》:ConnectMode.usb
2025-05-09 20:25:51.391927: [DEBUG] TAG:Instance of 'DeviceManager' ||: DeviceManage _initDevicesSubscription
2025-05-09 20:25:51.392868: [DEBUG] TAG:Instance of 'DeviceManager' ||: Device_Manager:DeviceEvent RCV: {"mid":"1746847551391485000","subject":"Resp.Disp","reply_mid":"ef6dd680-0216-4eba-8dda-8ccfdf8db075","reply_subject":"Dev.Discover","content":{"code":0,"data":{"active_device":[]},"message":"ok"}}
2025-05-09 20:26:23.276717: [DEBUG] TAG:Instance of 'DeviceSearchController' ||: logString 开始搜索设备, 方式《“Start searching for devices, by”》:ConnectMode.usb
2025-05-09 20:26:25.288809: [DEBUG] TAG:Instance of 'DeviceManager' ||: DeviceManage _initDevicesSubscription
2025-05-09 20:26:25.289354: [DEBUG] TAG:Instance of 'DeviceManager' ||: Device_Manager:DeviceEvent RCV: {"mid":"1746847585288318000","subject":"Resp.Disp","reply_mid":"ef6dd680-0216-4eba-8dda-8ccfdf8db075","reply_subject":"Dev.Discover","content":{"code":0,"data":{"active_device":[]},"message":"ok"}}
2025-05-09 20:27:07.987108: [DEBUG] TAG:Instance of 'DeviceSearchController' ||: logString 开始搜索设备, 方式《“Start searching for devices, by”》:ConnectMode.usb
2025-05-09 20:27:10.012720: [DEBUG] TAG:Instance of 'DeviceManager' ||: DeviceManage _initDevicesSubscription
2025-05-09 20:27:10.013858: [DEBUG] TAG:Instance of 'DeviceManager' ||: Device_Manager:DeviceEvent RCV: {"mid":"1746847630012157000","subject":"Resp.Disp","reply_mid":"ef6dd680-0216-4eba-8dda-8ccfdf8db075","reply_subject":"Dev.Discover","content":{"code":0,"data":{"active_device":[]},"message":"ok"}}
2025-05-09 20:27:11.593414: [DEBUG] TAG:Instance of 'DeviceSearchController' ||: logString 开始搜索设备, 方式《“Start searching for devices, by”》:ConnectMode.usb
2025-05-09 20:27:13.602491: [DEBUG] TAG:Instance of 'DeviceManager' ||: DeviceManage _initDevicesSubscription
2025-05-09 20:27:13.603055: [DEBUG] TAG:Instance of 'DeviceManager' ||: Device_Manager:DeviceEvent RCV: {"mid":"1746847633602220000","subject":"Resp.Disp","reply_mid":"ef6dd680-0216-4eba-8dda-8ccfdf8db075","reply_subject":"Dev.Discover","content":{"code":0,"data":{"active_device":[]},"message":"ok"}}
2025-05-09 20:27:15.210131: [DEBUG] TAG:Instance of 'DeviceSearchController' ||: logString 开始搜索设备, 方式《“Start searching for devices, by”》:ConnectMode.usb
2025-05-09 20:27:17.216806: [DEBUG] TAG:Instance of 'DeviceManager' ||: DeviceManage _initDevicesSubscription
2025-05-09 20:27:17.217586: [DEBUG] TAG:Instance of 'DeviceManager' ||: Device_Manager:DeviceEvent RCV: {"mid":"1746847637216448000","subject":"Resp.Disp","reply_mid":"ef6dd680-0216-4eba-8dda-8ccfdf8db075","reply_subject":"Dev.Discover","content":{"code":0,"data":{"active_device":[]},"message":"ok"}}
2025-05-09 20:27:19.759780: [DEBUG] TAG:<optimized out>#77397 ||: AppLifecycleState inactive
2025-05-09 20:27:46.344639: [DEBUG] TAG:<optimized out>#77397 ||: AppLifecycleState resumed
2025-05-09 20:27:48.661881: [DEBUG] TAG:Instance of 'OutputProvider' ||: getMaterialCutPadData:: device not connect
2025-05-09 20:27:52.653354: [DEBUG] TAG:Instance of 'MainWindowController' ||: onItemSelected() action:CommonToolAction.deviceConnect
2025-05-09 20:27:52.683558: 2025-05-09 20:27:52.683520 [ERROR] TAG:Instance of 'DeviceConnectController' ||: not selected device type, cannot get device tutorial
2025-05-09 20:28:03.300067: [DEBUG] TAG:Instance of 'DeviceManager' ||: DeviceManage _initDevicesSubscription
2025-05-09 20:28:03.300976: [DEBUG] TAG:Instance of 'DeviceManager' ||: Device_Manager:DeviceEvent RCV: {"mid":"1746847683299459000","subject":"Resp.Disp","reply_mid":"ef6dd680-0216-4eba-8dda-8ccfdf8db075","reply_subject":"Dev.Discover","content":{"code":0,"data":{"active_device":[]},"message":"ok"}}
2025-05-09 20:28:50.524630: [DEBUG] TAG:Instance of 'DeviceManager' ||: DeviceManage _initDevicesSubscription
2025-05-09 20:28:50.528406: [DEBUG] TAG:Instance of 'DeviceManager' ||: Device_Manager:DeviceEvent RCV: {"mid":"1746847730523687000","subject":"Resp.Disp","reply_mid":"ef6dd680-0216-4eba-8dda-8ccfdf8db075","reply_subject":"Dev.Discover","content":{"code":0,"data":{"active_device":[]},"message":"ok"}}
2025-05-09 20:29:02.769232: [DEBUG] TAG:Instance of 'DeviceManager' ||: DeviceManage _initDevicesSubscription
2025-05-09 20:29:02.770141: [DEBUG] TAG:Instance of 'DeviceManager' ||: Device_Manager:DeviceEvent RCV: {"mid":"1746847742768761000","subject":"Resp.Disp","reply_mid":"ef6dd680-0216-4eba-8dda-8ccfdf8db075","reply_subject":"Dev.Discover","content":{"code":0,"data":{"active_device":[]},"message":"ok"}}
2025-05-09 20:29:21.645520: [DEBUG] TAG:Instance of 'DeviceSearchController' ||: logString 开始搜索设备, 方式《“Start searching for devices, by”》:ConnectMode.usb
2025-05-09 20:29:23.657572: [DEBUG] TAG:Instance of 'DeviceManager' ||: DeviceManage _initDevicesSubscription
2025-05-09 20:29:23.658488: [DEBUG] TAG:Instance of 'DeviceManager' ||: Device_Manager:DeviceEvent RCV: {"mid":"1746847763656955000","subject":"Resp.Disp","reply_mid":"ef6dd680-0216-4eba-8dda-8ccfdf8db075","reply_subject":"Dev.Discover","content":{"code":0,"data":{"active_device":[]},"message":"ok"}}
2025-05-09 20:29:26.981301: [DEBUG] TAG:Instance of 'OutputProvider' ||: getMaterialCutPadData:: device not connect
2025-05-09 20:29:31.701923: [DEBUG] TAG:Instance of 'MainWindowController' ||: onItemSelected() action:CommonToolAction.fileQuit
2025-05-09 20:29:31.856441: [DEBUG] TAG:Instance of 'GuideVideoUtils' ||: 销毁引导视频组件《“Destroy the boot video component”》:null
2025-05-09 20:29:33.873057: 退出关闭窗口了《“Exit close window”》...
2025-05-09 20:29:33.977745: 应用请求退出.《“The application requested to exit”》...2025-05-09 20:29:39.132374: [DEBUG] TAG:IniHelper ||: INI content synced to
Shared Preferences
Thing is, I didn’t actually quit LLIS at that point; I was still trying to connect, so I’m not sure what was up with that.
In any case, I did relaunch LLIS and all the other stuff I described in the above post, but there’s not that much additional information I can glean from this logfile.
Again: poopers.
I really want to work with the source code now. But for the moment, I’m not any closer to a solution.