netpyoung / SqlCipher4Unity3D

💾 SqlCipher made easy for Unity3d
MIT License
163 stars 37 forks source link

Build for Apple Silicon (M1) -> sqlcipher.dll not found #39

Open DanielTizon opened 2 years ago

DanielTizon commented 2 years ago

Hi,

I'm getting sqlcipher.dll not found error when I build my app in Unity Editor (2021.1.23f1), using scripting backend "Mono", and selecting Architecture "Intel 64-Bit + Apple Silicon".

If you select Architecture "Intel 64-Bit", it works. But new Apple Macs are going to use M1 chipsets, so it would be nice to be able to build for this architecture,

Thanks!

netpyoung commented 2 years ago

Thank you about your feedback. I am also eager to supply that platform build. But I don't have mac machine for that. I noticed someone is using github's workflow action for multi platform library. but I need to investing about that

netpyoung commented 2 years ago

@DanielTizon Hi I built library for apple silicon(arm) using github action.

But as I mensioned, I don't have that machine. so Could you test that bundle using this?

DanielTizon commented 2 years ago

Yes, I will test it and tell you if it is working now,

Thanks!

DanielTizon commented 2 years ago

@netpyoung I'm trying test it, I just replaced macOS folder of plugins folder, but I am getting this error message when building:

Plugin 'sqlcipher.bundle' is used from several locations:
 Assets/SqlCipher4Unity3D/Plugins/macOS/arm64/sqlcipher.bundle would be copied to <PluginPath>/sqlcipher.bundle
 Assets/SqlCipher4Unity3D/Plugins/macOS/x86_64/sqlcipher.bundle would be copied to <PluginPath>/sqlcipher.bundle
 Assets/SqlCipher4Unity3D/Plugins/macOS/lipo/sqlcipher.bundle would be copied to <PluginPath>/sqlcipher.bundle
Please fix plugin settings and try again.'
netpyoung commented 2 years ago

Well it seems problem to place duplicate bundle. lipo/sqlcipher.buldle itself contains x86_64 and arm64 both.

So Would you replace put lipo/sqlcipher.bulde to macOS/sqlcipher.bundle then remove other bundles?

DanielTizon commented 2 years ago

Hey netpyyoung,

I already tried it, and I am getting now this error:

Building /home/user/Downloads/game/mac/game.app/Contents/Frameworks/libmonobdwgc-2.0.dylib failed with output:
The properties of source file /home/user/Unity/Hub/Editor/2021.2.0f1/Editor/Data/PlaybackEngines/MacStandaloneSupport/Variations/macos_x64ARM64_player_nondevelopment_mono/UnityPlayer.app/Contents/Frameworks/libmonobdwgc-2.0.dylib could not be retrieved: No such file or directory

Building /home/user/Downloads/game/mac/game.app/Contents/Resources/unity default resources failed with output:
The properties of source file /home/user/Unity/Hub/Editor/2021.2.0f1/Editor/Data/PlaybackEngines/MacStandaloneSupport/Variations/macos_x64ARM64_player_nondevelopment_mono/UnityPlayer.app/Contents/Resources/unity default resources could not be retrieved: No such file or directory

Building /home/user/Downloads/game/mac/game.app/Contents/Frameworks/UnityPlayer.dylib failed with output:
System.ArgumentException: Copy() called on path that doesnt exist: /home/user/Unity/Hub/Editor/2021.2.0f1/Editor/Data/PlaybackEngines/MacStandaloneSupport/Variations/macos_x64ARM64_player_nondevelopment_mono/UnityPlayer.app/Contents/Frameworks/UnityPlayer.dylib
   at NiceIO.NPath.CopyWithDeterminedDestination(NPath destination, Func`2 fileFilter)
   at NiceIO.NPath.Copy(NPath dest, Func`2 fileFilter)
   at NiceIO.NPath.Copy(NPath dest)
   at MacOSCodeSignDylibCopy.Run(CSharpActionContext ctx, SignFlags signFlags)
netpyoung commented 2 years ago

well. It seems like Unity Editor on Silicon does not stable. It looks like there are some issues on silicon

So In my opinion, It should be tested after they release suitable for handling this dylib.

nevadzask commented 2 years ago

Hello @netpyoung ,

just to let you know that I tested your https://github.com/netpyoung/prebuilt-libsqlcipher/releases/download/v0.0.1/macos_ios_tvos.zip with Unity 2022.1.2f1 and it works! What I did:

Would it be possible to bring this lib for Apple Silicon to the new release of SqlCipher4Unity3D so I can go back to UPM version?

Thank you very much!

netpyoung commented 2 years ago

@nevadzask thank you for reporting that.

I'm not sure libsqlcipher's version problem or caused by https://github.com/netpyoung/prebuilt-libsqlcipher/pull/1 .

Would it be possible to bring this lib for Apple Silicon to the new release of SqlCipher4Unity3D so I can go back to UPM version?

well.... i used lipo command to compress all libs into one bundles. as I mentioned v0.0.1 used VERSION=v4.4.3 so It may cause some other issues.

leith commented 3 months ago

@netpyoung just following up on this one, it seems like 1.3.1 is now using the sqlcipher.bundle from prebuilt-libsqlcipher v0.0.6 which bundles in the lipo version of sqlcipher v4.5.5 - is this now resolved?