{
"$type": "site.standard.document",
"bskyPostRef": {
"cid": "bafyreige2eomc2az463qel4jfeby5bnuntqeidlx5ehunepbahotdamefm",
"uri": "at://did:plc:dxjzgxe7cvirxkwfjr2tjspt/app.bsky.feed.post/3mohp6kqlbjh2"
},
"path": "/t/testing-new-ios-backend/49609?page=3#post_41",
"publishedAt": "2026-06-17T02:04:15.000Z",
"site": "https://hub.jmonkeyengine.org",
"textContent": "Finally I think I found it!!! The problem is at libJGLIOSPlistRawValue, the line captureCommand([‘plutil’, ‘-extract’, keyPath, ‘raw’, ‘-o’, ‘-’, plist.absolutePath]) fails because plutil at OSX 10.15 doesn’t have raw output, it just outputs “Unknown format specifier: raw” and then the command help\n\nI’m proposing a quick patch to fix it (mostly claude’s idea):\n\n\n diff --git a/libjglios-gradle-plugin/src/main/resources/org/ngengine/libjglios/gradle/ios-tasks.gradle b/libjglios-gradle-plugin/src/main/resources/org/ngengine/libjglios/gradle/ios-tasks.gradle\n index ffc1f22..fd77838 100644\n --- a/libjglios-gradle-plugin/src/main/resources/org/ngengine/libjglios/gradle/ios-tasks.gradle\n +++ b/libjglios-gradle-plugin/src/main/resources/org/ngengine/libjglios/gradle/ios-tasks.gradle\n @@ -1264,7 +1264,23 @@ def libJGLIOSPlistRawValue = { File plist, String keyPath ->\n try {\n captureCommand(['plutil', '-extract', keyPath, 'raw', '-o', '-', plist.absolutePath])\n } catch (GradleException ignored) {\n - null\n + // plutil -extract raw requires macOS 12+; fall back to xml1 (available on all macOS versions)\n + try {\n + def xmlOutput = captureCommand(['plutil', '-extract', keyPath, 'xml1', '-o', '-', plist.absolutePath])\n + if (xmlOutput.contains('<true/>')) return 'true'\n + if (xmlOutput.contains('<false/>')) return 'false'\n + def dateMatcher = xmlOutput =~ /<date>([^<]+)<\\/date>/\n + if (dateMatcher.find()) return dateMatcher.group(1)\n + def strMatcher = xmlOutput =~ /<string>([^<]*)<\\/string>/\n + if (strMatcher.find()) return strMatcher.group(1)\n + def intMatcher = xmlOutput =~ /<integer>([^<]*)<\\/integer>/\n + if (intMatcher.find()) return intMatcher.group(1)\n + def realMatcher = xmlOutput =~ /<real>([^<]*)<\\/real>/\n + if (realMatcher.find()) return realMatcher.group(1)\n + null\n + } catch (GradleException ignored2) {\n + null\n + }\n }\n }\n\n\n\nI’ve tried the plutil command with xml output and works, also I’m 90% sure the output is properly parsed\n\nNot sure if any other “matcher” may be needed",
"title": "Testing new iOS backend"
}