{
  "$type": "site.standard.document",
  "bskyPostRef": {
    "cid": "bafyreige2eomc2az463qel4jfeby5bnuntqeidlx5ehunepbahotdamefm",
    "uri": "at://did:plc:dxjzgxe7cvirxkwfjr2tjspt/app.bsky.feed.post/3mohihohdkua2"
  },
  "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"
}