Hi,
I have an App that contains a simple launcher script.
It starts an embedded Java Application together with an embedded JRE. Like this:
Contents/PlugIns/jre/Contents/Home/bin/java -jar Contents/Resources/Java/myapp-0.6.4-SNAPSHOT.jar
This works fine, until I codesing the App using an entitlements file that enables sandboxing. Like this:
<key>com.apple.security.app-sandbox</key>
<true/>
After sandboxing has been enabled like this, I get the following error when I try to start the app:
Contents/MacOS/launcher: /Users/alex/Library/Containers/com.myapp/Data/MyApp.app/Contents/MacOS/launcher: No such file or directory
Apparently, this folder exists /Users/alex/Library/Containers/com.myapp/Data, but does not contain a MyApp.app folder.
How can I configure my launcher properly to work with sandboxing?
Post
Replies
Boosts
Views
Activity
Hi,
I would like to bundle an OpenJDK runtime into my app.
When uploading to the App Store, I get the following error:
CFBundleIdentifier Collision - The Info.plist CFBundleIdentifier value 'net.java.openjdk.java' of 'java' is already in use by another application.
When I code-sign the JRE inside of my bundle, this embedded information is not updated or deleted.
What would be the proper way to remove/ change this embedded Info.plist information?
It is embedded in the java binary.
Hi
I am trying to upload an App to the App Store. It is a Java application with a small Swift wrapper. I build for both arm64 and x86-64 and include JREs for both architectures inside the bundle.
The Launcher App:
@main
struct LauncherApp {
static let logger = Logger(subsystem: Bundle.main.bundleIdentifier!, category: "drrename")
static func main() {
var jrePath: String = ""
#if arch(arm64)
if let jrePathArm64 = Bundle.main.path(forResource: "jre-18.0.1_10_arm64/Contents/Home/bin/java", ofType: ""){
jrePath = jrePathArm64
}
#elseif arch(x86_64)
if let jrePathX86 = Bundle.main.path(forResource: "jre-18.0.1_10_x64/Contents/Home/bin/java", ofType: ""){
jrePath = jrePathX86
}
#endif
if jrePath != "" {
logger.log("Got jre path: \(jrePath)")
if let jarPath = Bundle.main.path(forResource: "drrename-0.6.4-SNAPSHOT", ofType: "jar"){
logger.log("Got jar path: \(jarPath)")
let task = Process()
task.launchPath = jrePath
task.arguments = ["-jar", jarPath]
task.launch()
task.waitUntilExit()
} else {
logger.critical("Failed to get jar path")
}
} else {
logger.critical("Failed to get jre path")
}
}
}
I get the following error:
I understand that both arm and x86 are required, that is why I package both x86-64 and arm64 JREs inside the bundle.
How can I resolve this error?
Many thanks!