code-disaster / steamworks4j

A thin Java wrapper to access the Steamworks API
https://code-disaster.github.io/steamworks4j/
MIT License
468 stars 64 forks source link

libsteam_api.dylib dont work for Mac M1 ARM Chip #116

Closed sebaber closed 2 years ago

sebaber commented 2 years ago

I'm trying to use that lib libsteam_api.dylib in a Mac with M1 ARM chip, but that dylib dont support arm64e

[INFO] (SteamLoginStrategy.java:173): "Load native libraries ...". 
Exception in thread "main" java.lang.UnsatisfiedLinkError: /private/var/folders/t5/nrksqpxs29gcjr1w59wzvbj40000gn/T/steamworks4j/1.8.0/libsteam_api.dylib: dlopen(/private/var/folders/t5/nrksqpxs29gcjr1w59wzvbj40000gn/T/steamworks4j/1.8.0/libsteam_api.dylib, 0x0001): tried: '/private/var/folders/t5/nrksqpxs29gcjr1w59wzvbj40000gn/T/steamworks4j/1.8.0/libsteam_api.dylib' (fat file, but missing compatible architecture (have 'i386,x86_64', need 'arm64e'))
    at java.base/java.lang.ClassLoader$NativeLibrary.load0(Native Method)
    at java.base/java.lang.ClassLoader$NativeLibrary.load(ClassLoader.java:2442)
    at java.base/java.lang.ClassLoader$NativeLibrary.loadLibrary(ClassLoader.java:2498)
    at java.base/java.lang.ClassLoader.loadLibrary0(ClassLoader.java:2694)
    at java.base/java.lang.ClassLoader.loadLibrary(ClassLoader.java:2627)
    at java.base/java.lang.Runtime.load0(Runtime.java:768)
    at java.base/java.lang.System.load(System.java:1837)
    at com.codedisaster.steamworks.SteamSharedLibraryLoader.loadLibrary(SteamSharedLibraryLoader.java:124)
    at com.codedisaster.steamworks.SteamAPI.loadLibraries(SteamAPI.java:24)
    at com.codedisaster.steamworks.SteamAPI.loadLibraries(SteamAPI.java:11)
    at com.mobilecostudios.kaiontale.desktop.SteamLoginStrategy.init(SteamLoginStrategy.java:176)
    at com.mobilecostudios.kaiontale.desktop.SteamLoginStrategy.<init>(SteamLoginStrategy.java:53)
    at com.mobilecostudios.kaiontale.desktop.DesktopLauncher.main(DesktopLauncher.java:50)

I search and found that there is a bash file to obtain a dylib for that version, but i couldn't use it, throw this error

...% bash build-osx.sh 
build-osx.sh: line 2: ./premake5: No such file or directory
objc[5487]: Class AppleTypeCRetimerRestoreInfoHelper is implemented in both /usr/lib/libauthinstall.dylib (0x1f84c5eb0) and /Library/Apple/System/Library/PrivateFrameworks/MobileDevice.framework/Versions/A/MobileDevice (0x1044244f8). One of the two will be used. Which one is undefined.
objc[5487]: Class AppleTypeCRetimerFirmwareAggregateRequestCreator is implemented in both /usr/lib/libauthinstall.dylib (0x1f84c5f00) and /Library/Apple/System/Library/PrivateFrameworks/MobileDevice.framework/Versions/A/MobileDevice (0x104424548). One of the two will be used. Which one is undefined.
objc[5487]: Class AppleTypeCRetimerFirmwareRequestCreator is implemented in both /usr/lib/libauthinstall.dylib (0x1f84c5f50) and /Library/Apple/System/Library/PrivateFrameworks/MobileDevice.framework/Versions/A/MobileDevice (0x104424598). One of the two will be used. Which one is undefined.
objc[5487]: Class ATCRTRestoreInfoFTABFile is implemented in both /usr/lib/libauthinstall.dylib (0x1f84c5fa0) and /Library/Apple/System/Library/PrivateFrameworks/MobileDevice.framework/Versions/A/MobileDevice (0x1044245e8). One of the two will be used. Which one is undefined.
objc[5487]: Class AppleTypeCRetimerFirmwareCopier is implemented in both /usr/lib/libauthinstall.dylib (0x1f84c5ff0) and /Library/Apple/System/Library/PrivateFrameworks/MobileDevice.framework/Versions/A/MobileDevice (0x104424638). One of the two will be used. Which one is undefined.
objc[5487]: Class ATCRTRestoreInfoFTABSubfile is implemented in both /usr/lib/libauthinstall.dylib (0x1f84c6040) and /Library/Apple/System/Library/PrivateFrameworks/MobileDevice.framework/Versions/A/MobileDevice (0x104424688). One of the two will be used. Which one is undefined.
2022-04-11 09:14:48.419 xcodebuild[5487:117666] Requested but did not find extension point with identifier Xcode.IDEKit.ExtensionSentinelHostApplications for extension Xcode.DebuggerFoundation.AppExtensionHosts.watchOS of plug-in com.apple.dt.IDEWatchSupportCore
2022-04-11 09:14:48.421 xcodebuild[5487:117666] Requested but did not find extension point with identifier Xcode.IDEKit.ExtensionPointIdentifierToBundleIdentifier for extension Xcode.DebuggerFoundation.AppExtensionToBundleIdentifierMap.watchOS of plug-in com.apple.dt.IDEWatchSupportCore
Command line invocation:
    /Applications/Xcode.app/Contents/Developer/usr/bin/xcodebuild -project steamworks4j.xcodeproj -alltargets clean

User defaults from command line:
    IDEPackageSupportUseBuiltinSCM = YES

xcodebuild: error: 'steamworks4j.xcodeproj' does not exist.
objc[5488]: Class AppleTypeCRetimerRestoreInfoHelper is implemented in both /usr/lib/libauthinstall.dylib (0x1f84c5eb0) and /Library/Apple/System/Library/PrivateFrameworks/MobileDevice.framework/Versions/A/MobileDevice (0x10477c4f8). One of the two will be used. Which one is undefined.
objc[5488]: Class AppleTypeCRetimerFirmwareAggregateRequestCreator is implemented in both /usr/lib/libauthinstall.dylib (0x1f84c5f00) and /Library/Apple/System/Library/PrivateFrameworks/MobileDevice.framework/Versions/A/MobileDevice (0x10477c548). One of the two will be used. Which one is undefined.
objc[5488]: Class AppleTypeCRetimerFirmwareRequestCreator is implemented in both /usr/lib/libauthinstall.dylib (0x1f84c5f50) and /Library/Apple/System/Library/PrivateFrameworks/MobileDevice.framework/Versions/A/MobileDevice (0x10477c598). One of the two will be used. Which one is undefined.
objc[5488]: Class ATCRTRestoreInfoFTABFile is implemented in both /usr/lib/libauthinstall.dylib (0x1f84c5fa0) and /Library/Apple/System/Library/PrivateFrameworks/MobileDevice.framework/Versions/A/MobileDevice (0x10477c5e8). One of the two will be used. Which one is undefined.
objc[5488]: Class AppleTypeCRetimerFirmwareCopier is implemented in both /usr/lib/libauthinstall.dylib (0x1f84c5ff0) and /Library/Apple/System/Library/PrivateFrameworks/MobileDevice.framework/Versions/A/MobileDevice (0x10477c638). One of the two will be used. Which one is undefined.
objc[5488]: Class ATCRTRestoreInfoFTABSubfile is implemented in both /usr/lib/libauthinstall.dylib (0x1f84c6040) and /Library/Apple/System/Library/PrivateFrameworks/MobileDevice.framework/Versions/A/MobileDevice (0x10477c688). One of the two will be used. Which one is undefined.
2022-04-11 09:14:49.172 xcodebuild[5488:117709] Requested but did not find extension point with identifier Xcode.IDEKit.ExtensionSentinelHostApplications for extension Xcode.DebuggerFoundation.AppExtensionHosts.watchOS of plug-in com.apple.dt.IDEWatchSupportCore
2022-04-11 09:14:49.172 xcodebuild[5488:117709] Requested but did not find extension point with identifier Xcode.IDEKit.ExtensionPointIdentifierToBundleIdentifier for extension Xcode.DebuggerFoundation.AppExtensionToBundleIdentifierMap.watchOS of plug-in com.apple.dt.IDEWatchSupportCore
Command line invocation:
    /Applications/Xcode.app/Contents/Developer/usr/bin/xcodebuild -project steamworks4j.xcodeproj -configuration ReleaseDLL

User defaults from command line:
    IDEPackageSupportUseBuiltinSCM = YES

xcodebuild: error: 'steamworks4j.xcodeproj' does not exist.
cp: bin/ReleaseDLL/libsteamworks4j.dylib: No such file or directory
objc[5490]: Class AppleTypeCRetimerRestoreInfoHelper is implemented in both /usr/lib/libauthinstall.dylib (0x1f84c5eb0) and /Library/Apple/System/Library/PrivateFrameworks/MobileDevice.framework/Versions/A/MobileDevice (0x10890c4f8). One of the two will be used. Which one is undefined.
objc[5490]: Class AppleTypeCRetimerFirmwareAggregateRequestCreator is implemented in both /usr/lib/libauthinstall.dylib (0x1f84c5f00) and /Library/Apple/System/Library/PrivateFrameworks/MobileDevice.framework/Versions/A/MobileDevice (0x10890c548). One of the two will be used. Which one is undefined.
objc[5490]: Class AppleTypeCRetimerFirmwareRequestCreator is implemented in both /usr/lib/libauthinstall.dylib (0x1f84c5f50) and /Library/Apple/System/Library/PrivateFrameworks/MobileDevice.framework/Versions/A/MobileDevice (0x10890c598). One of the two will be used. Which one is undefined.
objc[5490]: Class ATCRTRestoreInfoFTABFile is implemented in both /usr/lib/libauthinstall.dylib (0x1f84c5fa0) and /Library/Apple/System/Library/PrivateFrameworks/MobileDevice.framework/Versions/A/MobileDevice (0x10890c5e8). One of the two will be used. Which one is undefined.
objc[5490]: Class AppleTypeCRetimerFirmwareCopier is implemented in both /usr/lib/libauthinstall.dylib (0x1f84c5ff0) and /Library/Apple/System/Library/PrivateFrameworks/MobileDevice.framework/Versions/A/MobileDevice (0x10890c638). One of the two will be used. Which one is undefined.
objc[5490]: Class ATCRTRestoreInfoFTABSubfile is implemented in both /usr/lib/libauthinstall.dylib (0x1f84c6040) and /Library/Apple/System/Library/PrivateFrameworks/MobileDevice.framework/Versions/A/MobileDevice (0x10890c688). One of the two will be used. Which one is undefined.
2022-04-11 09:14:49.488 xcodebuild[5490:117727] Requested but did not find extension point with identifier Xcode.IDEKit.ExtensionSentinelHostApplications for extension Xcode.DebuggerFoundation.AppExtensionHosts.watchOS of plug-in com.apple.dt.IDEWatchSupportCore
2022-04-11 09:14:49.488 xcodebuild[5490:117727] Requested but did not find extension point with identifier Xcode.IDEKit.ExtensionPointIdentifierToBundleIdentifier for extension Xcode.DebuggerFoundation.AppExtensionToBundleIdentifierMap.watchOS of plug-in com.apple.dt.IDEWatchSupportCore
Command line invocation:
    /Applications/Xcode.app/Contents/Developer/usr/bin/xcodebuild -project steamworks4j-server.xcodeproj -alltargets clean

User defaults from command line:
    IDEPackageSupportUseBuiltinSCM = YES

xcodebuild: error: 'steamworks4j-server.xcodeproj' does not exist.
objc[5491]: Class AppleTypeCRetimerRestoreInfoHelper is implemented in both /usr/lib/libauthinstall.dylib (0x1f84c5eb0) and /Library/Apple/System/Library/PrivateFrameworks/MobileDevice.framework/Versions/A/MobileDevice (0x10854c4f8). One of the two will be used. Which one is undefined.
objc[5491]: Class AppleTypeCRetimerFirmwareAggregateRequestCreator is implemented in both /usr/lib/libauthinstall.dylib (0x1f84c5f00) and /Library/Apple/System/Library/PrivateFrameworks/MobileDevice.framework/Versions/A/MobileDevice (0x10854c548). One of the two will be used. Which one is undefined.
objc[5491]: Class AppleTypeCRetimerFirmwareRequestCreator is implemented in both /usr/lib/libauthinstall.dylib (0x1f84c5f50) and /Library/Apple/System/Library/PrivateFrameworks/MobileDevice.framework/Versions/A/MobileDevice (0x10854c598). One of the two will be used. Which one is undefined.
objc[5491]: Class ATCRTRestoreInfoFTABFile is implemented in both /usr/lib/libauthinstall.dylib (0x1f84c5fa0) and /Library/Apple/System/Library/PrivateFrameworks/MobileDevice.framework/Versions/A/MobileDevice (0x10854c5e8). One of the two will be used. Which one is undefined.
objc[5491]: Class AppleTypeCRetimerFirmwareCopier is implemented in both /usr/lib/libauthinstall.dylib (0x1f84c5ff0) and /Library/Apple/System/Library/PrivateFrameworks/MobileDevice.framework/Versions/A/MobileDevice (0x10854c638). One of the two will be used. Which one is undefined.
objc[5491]: Class ATCRTRestoreInfoFTABSubfile is implemented in both /usr/lib/libauthinstall.dylib (0x1f84c6040) and /Library/Apple/System/Library/PrivateFrameworks/MobileDevice.framework/Versions/A/MobileDevice (0x10854c688). One of the two will be used. Which one is undefined.
2022-04-11 09:14:49.808 xcodebuild[5491:117743] Requested but did not find extension point with identifier Xcode.IDEKit.ExtensionSentinelHostApplications for extension Xcode.DebuggerFoundation.AppExtensionHosts.watchOS of plug-in com.apple.dt.IDEWatchSupportCore
2022-04-11 09:14:49.808 xcodebuild[5491:117743] Requested but did not find extension point with identifier Xcode.IDEKit.ExtensionPointIdentifierToBundleIdentifier for extension Xcode.DebuggerFoundation.AppExtensionToBundleIdentifierMap.watchOS of plug-in com.apple.dt.IDEWatchSupportCore
Command line invocation:
    /Applications/Xcode.app/Contents/Developer/usr/bin/xcodebuild -project steamworks4j-server.xcodeproj -configuration ReleaseDLL

User defaults from command line:
    IDEPackageSupportUseBuiltinSCM = YES

xcodebuild: error: 'steamworks4j-server.xcodeproj' does not exist.
cp: bin/ReleaseDLL/libsteamworks4j-server.dylib: No such file or directory
objc[5493]: Class AppleTypeCRetimerRestoreInfoHelper is implemented in both /usr/lib/libauthinstall.dylib (0x1f84c5eb0) and /Library/Apple/System/Library/PrivateFrameworks/MobileDevice.framework/Versions/A/MobileDevice (0x1042c04f8). One of the two will be used. Which one is undefined.
objc[5493]: Class AppleTypeCRetimerFirmwareAggregateRequestCreator is implemented in both /usr/lib/libauthinstall.dylib (0x1f84c5f00) and /Library/Apple/System/Library/PrivateFrameworks/MobileDevice.framework/Versions/A/MobileDevice (0x1042c0548). One of the two will be used. Which one is undefined.
objc[5493]: Class AppleTypeCRetimerFirmwareRequestCreator is implemented in both /usr/lib/libauthinstall.dylib (0x1f84c5f50) and /Library/Apple/System/Library/PrivateFrameworks/MobileDevice.framework/Versions/A/MobileDevice (0x1042c0598). One of the two will be used. Which one is undefined.
objc[5493]: Class ATCRTRestoreInfoFTABFile is implemented in both /usr/lib/libauthinstall.dylib (0x1f84c5fa0) and /Library/Apple/System/Library/PrivateFrameworks/MobileDevice.framework/Versions/A/MobileDevice (0x1042c05e8). One of the two will be used. Which one is undefined.
objc[5493]: Class AppleTypeCRetimerFirmwareCopier is implemented in both /usr/lib/libauthinstall.dylib (0x1f84c5ff0) and /Library/Apple/System/Library/PrivateFrameworks/MobileDevice.framework/Versions/A/MobileDevice (0x1042c0638). One of the two will be used. Which one is undefined.
objc[5493]: Class ATCRTRestoreInfoFTABSubfile is implemented in both /usr/lib/libauthinstall.dylib (0x1f84c6040) and /Library/Apple/System/Library/PrivateFrameworks/MobileDevice.framework/Versions/A/MobileDevice (0x1042c0688). One of the two will be used. Which one is undefined.
2022-04-11 09:14:50.118 xcodebuild[5493:117759] Requested but did not find extension point with identifier Xcode.IDEKit.ExtensionSentinelHostApplications for extension Xcode.DebuggerFoundation.AppExtensionHosts.watchOS of plug-in com.apple.dt.IDEWatchSupportCore
2022-04-11 09:14:50.118 xcodebuild[5493:117759] Requested but did not find extension point with identifier Xcode.IDEKit.ExtensionPointIdentifierToBundleIdentifier for extension Xcode.DebuggerFoundation.AppExtensionToBundleIdentifierMap.watchOS of plug-in com.apple.dt.IDEWatchSupportCore
Command line invocation:
    /Applications/Xcode.app/Contents/Developer/usr/bin/xcodebuild -project steamworks4j-encryptedappticket.xcodeproj -alltargets clean

User defaults from command line:
    IDEPackageSupportUseBuiltinSCM = YES

xcodebuild: error: 'steamworks4j-encryptedappticket.xcodeproj' does not exist.
objc[5494]: Class AppleTypeCRetimerRestoreInfoHelper is implemented in both /usr/lib/libauthinstall.dylib (0x1f84c5eb0) and /Library/Apple/System/Library/PrivateFrameworks/MobileDevice.framework/Versions/A/MobileDevice (0x1048a04f8). One of the two will be used. Which one is undefined.
objc[5494]: Class AppleTypeCRetimerFirmwareAggregateRequestCreator is implemented in both /usr/lib/libauthinstall.dylib (0x1f84c5f00) and /Library/Apple/System/Library/PrivateFrameworks/MobileDevice.framework/Versions/A/MobileDevice (0x1048a0548). One of the two will be used. Which one is undefined.
objc[5494]: Class AppleTypeCRetimerFirmwareRequestCreator is implemented in both /usr/lib/libauthinstall.dylib (0x1f84c5f50) and /Library/Apple/System/Library/PrivateFrameworks/MobileDevice.framework/Versions/A/MobileDevice (0x1048a0598). One of the two will be used. Which one is undefined.
objc[5494]: Class ATCRTRestoreInfoFTABFile is implemented in both /usr/lib/libauthinstall.dylib (0x1f84c5fa0) and /Library/Apple/System/Library/PrivateFrameworks/MobileDevice.framework/Versions/A/MobileDevice (0x1048a05e8). One of the two will be used. Which one is undefined.
objc[5494]: Class AppleTypeCRetimerFirmwareCopier is implemented in both /usr/lib/libauthinstall.dylib (0x1f84c5ff0) and /Library/Apple/System/Library/PrivateFrameworks/MobileDevice.framework/Versions/A/MobileDevice (0x1048a0638). One of the two will be used. Which one is undefined.
objc[5494]: Class ATCRTRestoreInfoFTABSubfile is implemented in both /usr/lib/libauthinstall.dylib (0x1f84c6040) and /Library/Apple/System/Library/PrivateFrameworks/MobileDevice.framework/Versions/A/MobileDevice (0x1048a0688). One of the two will be used. Which one is undefined.
2022-04-11 09:14:50.435 xcodebuild[5494:117774] Requested but did not find extension point with identifier Xcode.IDEKit.ExtensionSentinelHostApplications for extension Xcode.DebuggerFoundation.AppExtensionHosts.watchOS of plug-in com.apple.dt.IDEWatchSupportCore
2022-04-11 09:14:50.435 xcodebuild[5494:117774] Requested but did not find extension point with identifier Xcode.IDEKit.ExtensionPointIdentifierToBundleIdentifier for extension Xcode.DebuggerFoundation.AppExtensionToBundleIdentifierMap.watchOS of plug-in com.apple.dt.IDEWatchSupportCore
Command line invocation:
    /Applications/Xcode.app/Contents/Developer/usr/bin/xcodebuild -project steamworks4j-encryptedappticket.xcodeproj -configuration ReleaseDLL

User defaults from command line:
    IDEPackageSupportUseBuiltinSCM = YES

Anyone else have this issue?

cacophany53 commented 2 years ago

I'm having the same problem running steamworks4j on an M1 chip.

I got the native build to work (you need to install premake5 via brew), however, the resulting libsteamworks4j.dylib still cannot be loaded - it has the same error.

Hoping someone from the steamworks4j team can take look at this issue.

code-disaster commented 2 years ago

Let's merge this with #117.