GithubHelp home page GithubHelp logo

Comments (132)

aroman avatar aroman commented on May 24, 2024 12

hey @tab1887, happy to compare notes —

  1. I didn't end up importing the Firebase Auth package to my project, as my project doesn't use the service, so unfortunately I'm not much help for you there.

  2. For Firestore not compiling, check firebase/firebase-cpp-sdk#712 for the proper fix (should be making its way downstream soon)

  3. I likewise had to edit the CMakeLists.txt to exclude building the tests, as I also had that issue with the XCTest being missing.

  4. I have no reason to think the result would be any different, but if you'd like to try using the FirebaseAuth.unitypackage I built (in case there was some issue with your build), I've uploaded all of the unitypackages for Apple Silicon that I built here:

https://github.com/aroman/firebase-unity-applesilicon

Everyone else is also welcome to use them, but keep in mind that I haven't tested these at all, they're not guaranteed to work correctly (or at all), etc etc. I can say that at least Firebase Realtime database seems to be working fine from what I've seen in my own project.

If you do end up using them, I'd recommend ONLY adding the .bundles to your project — so that they work in the Apple Silicon editor — and using the official Firebase packages for everything else.

from firebase-unity-sdk.

samskivert avatar samskivert commented on May 24, 2024 12

OK, updated 8.8.0 bundles are here: https://samskivert.com/firebase-bundles.zip

from firebase-unity-sdk.

yanmasharski avatar yanmasharski commented on May 24, 2024 11

Agree, this is very important issue after official stable release of Unity 2021.2.0f1. Hope, it will be fixed soon

from firebase-unity-sdk.

aroman avatar aroman commented on May 24, 2024 11

OK, rather than wait for an answer, I just decided — hey, Firebase is open source... I'll build it by my damn myself :) And, sure enough, I have managed to build .unitypackages for Firebase that include Apple Silicon native DLLs, and they work on my shiny new M1 Pro laptop. Finally, Firebase works in the Apple Silicon editor! I did have issues building the Firestore SDK in particular, but my project doesn't use that, so I don't mind.

aroman@thiccbook firebase-unity-sdk % file /Users/aroman/Projects/firebase-unity-sdk/build/FirebaseCppApp-8_5_0.bundle 
/Users/aroman/Projects/firebase-unity-sdk/build/FirebaseCppApp-8_5_0.bundle: Mach-O 64-bit dynamically linked shared library arm64

from firebase-unity-sdk.

samskivert avatar samskivert commented on May 24, 2024 10

OK, that was an adventure. I now know far more about CMake than I ever wanted to. Also, it didn't help that this firebase-cpp-sdk commit broke the firebase-unity-sdk build and they have not pushed an update to fix it to Github. So I had to diagnose and work around that problem as well.

But in the end, the problems were overcome and we have bundle files that do not spuriously reference dynamic libraries on my harddrive. The solution turned out to be quite trivial, in spite of being quite hard to finally arrive at. Simply add this argument when running cmake:

-DBUILD_SHARED_LIBS=OFF

Anyhow, updated bundle files are available at that same URL: https://samskivert.com/firebase-bundles.zip

Feel free to give them a whirl.

from firebase-unity-sdk.

kerembaydogan avatar kerembaydogan commented on May 24, 2024 9

since no one was assigned to this issue, I have to mention every contributor.

Is there any update?
Is Apple Silicon Support for Unity Editor on the roadmap? Or do we have to compile our own bundle files?
Thanks.

@stewartmiles @jonsimantov @a-maurice @chkuang-g @Montoli @vimanyu @DellaBitta @Thaina @cynthiajoan @samtstern

BTW If Pull Requests are welcome, I think we can provide some help.

from firebase-unity-sdk.

happypepper avatar happypepper commented on May 24, 2024 8

With the release of 2021.2.0f1 I think this can be officially classified as a bug now.

from firebase-unity-sdk.

aroman avatar aroman commented on May 24, 2024 7

Ok friends, I have a present for you. I have created a repo with the bundle files for the latest version (8.6.2, just released this morning) and instructions for exactly where to stick them. Use at your own risk, and definitely not tested thoroughly, but so far it works for me. Maybe it will encourage the firebase team to do this for real 🙃 Have a good weekend everyone! ❤️

https://github.com/aroman/firebase-unity-applesilicon

edit: and make sure you're using the Apple Silicon native editor!

from firebase-unity-sdk.

aroman avatar aroman commented on May 24, 2024 4

@aroman Thanks for the repo.

I checked it and FirebaseCppFirestore.bundle is missing. Is there a problem building it?

ah yeah, i had disabled building firestore because of firebase/firebase-cpp-sdk#712. I'll see if I can rebuild it now that the issue is closed.

from firebase-unity-sdk.

kerembaydogan avatar kerembaydogan commented on May 24, 2024 4

@cynthiajoan Please change the type of this issue.
IMHO this is not a feature request. This is 100% a bug.
Firebase does not work with the latest stable version of Unity.

from firebase-unity-sdk.

happypepper avatar happypepper commented on May 24, 2024 4

Hello @cynthiajoan , it's been a long time since there's been any communication about this.

Is there any update or ETA on this bug?

from firebase-unity-sdk.

samskivert avatar samskivert commented on May 24, 2024 4

The process here was not too complicated, but I can't easily turn it into a PR because I don't know what Google uses for openssl when it builds Firebase libraries for distribution. OpenSSL does not make it easy to compile for multiple architectures, unfortunately, so I had to do a rather manual process.

I started with the latest openssl from Github, and then configured it once for x86_64:

cd openssl
./Configure --prefix=../openssl-x86_64 darwin64-x86_64-cc
make install

then cleaned and reconfigured for arm64:

make clean
./Configure --prefix=../openssl-arm64 darwin64-arm64-cc
make install

then I duplicated openssl-arm64 to an openssl-universal directory, and used lipo to create fat binary versions of all the shared libraries:

cd ..
cp -pr openssl-arm64 openssl-universal
cd lib
for file in `find . -name '*.a' -o -name '*.dylib'`; do rm $file; lipo -create ../../openssl-arm64/lib/$file ../../openssl-x86_64/lib/$file -output $file; done

Then when I build Firebase, I pointed it at openssl-universal and also specified both architectures when compiling itself:

      -DCMAKE_OSX_ARCHITECTURES="x86_64;arm64" \
      -DOPENSSL_ROOT_DIR=/Users/mdb/ops/firebase/openssl-universal

My full invocation of cmake, for anyone trying to repro:

cmake .. \
      -DFIREBASE_INCLUDE_UNITY=ON \
      -DFIREBASE_UNITY_SDK_VERSION=8.7.0 \
      -DFIREBASE_CPP_SDK_DIR=../../firebase-cpp-sdk \
      -DPYTHON_EXECUTABLE=/usr/bin/python3 \
      -DFIREBASE_PYTHON_EXECUTABLE=/usr/bin/python3 \
      -DUNITY_ROOT_DIR=/Applications/Unity/2021.2.7f1 \
      -DFIREBASE_INCLUDE_FIRESTORE=OFF \
      -DCMAKE_OSX_ARCHITECTURES="x86_64;arm64" \
      -DOPENSSL_ROOT_DIR=/Users/mdb/ops/firebase/openssl-universal

And I also had to change python to python3 in cmake/firebase_swig.cmake otherwise things got upset about using an ancient version of python that ships with macOS.

from firebase-unity-sdk.

tab1887 avatar tab1887 commented on May 24, 2024 3

Hi @paulinon,

thanks for checking.
As far as I know there is currently no Unity LTS version built for Apple M1 available. They started to publish the editor for 2021.2.0a19 and now 2021.2.0b4 is the latest (most mature) version of it available.

The SDK is working fine in the Intel version of the same beta, so I believe the issue is caused by the new architecture.

To make this very clear: I'm not targeting M1 for the final build, but just using the M1 version of the editor.
(The build for iOS is even working fine - only in-editor playback fails)
Maybe the dll needs to be provided in a native M1 or universal version or something like this?

from firebase-unity-sdk.

fruitdrawing avatar fruitdrawing commented on May 24, 2024 3

Hi, I have intel and M1, I've found that this only happens on m1. any update?

Unity 2021.2.0b9 , MacBook Air m1, lastest Firebase SDK

from firebase-unity-sdk.

aroman avatar aroman commented on May 24, 2024 3

Any update on this? This basically makes firebase unusable with the native Unity Editor on Apple Silicon.

from firebase-unity-sdk.

cynthiajoan avatar cynthiajoan commented on May 24, 2024 3

Sorry for the inconvenience. Our team is looking at providing M1 support for the Unity SDK. Before that went out, can we try the work around by running Unity in x64 mode using Rosetta, so it will just uses all x64 dlls?

from firebase-unity-sdk.

aroman avatar aroman commented on May 24, 2024 3

@cynthiajoan Do you have a sense of when we can expect this to be fixed, or how to work around? Unity Editor 2021.2 is now stable and one of its headline features is Apple Silicon support. However, Firebase is completely incompatible with the native Apple Silicon editor, making our projects unusable with the latest stable native version of the editor because they use Firebase. This is an important part of my team's workflow, as running Unity under Rosetta is extremely slow (~4x slower).

from firebase-unity-sdk.

kerembaydogan avatar kerembaydogan commented on May 24, 2024 3

if anyone is interested, I have built the firebase unity SDK version 8.7.0 for apple silicon.
I can share .bundle files.

from firebase-unity-sdk.

samskivert avatar samskivert commented on May 24, 2024 3

So that seems to work. I have universal .bundle files which I can use instead of the bundle files that shipped with 8.7.0 and everything runs fine on my Apple Silicon Mac. Unfortunately I no longer have an Intel Mac to test them on, so I can't be 100% sure they work on the Intel Mac, but I would expect them to. All the indications are that both architectures are included:

% file FirebaseCppApp-8_7_0.bundle 
FirebaseCppApp-8_7_0.bundle: Mach-O universal binary with 2 architectures: [x86_64:Mach-O 64-bit dynamically linked shared library x86_64] [arm64]
FirebaseCppApp-8_7_0.bundle (for architecture x86_64):	Mach-O 64-bit dynamically linked shared library x86_64
FirebaseCppApp-8_7_0.bundle (for architecture arm64):	Mach-O 64-bit dynamically linked shared library arm64

from firebase-unity-sdk.

aroman avatar aroman commented on May 24, 2024 2

@tab1887

Maybe a stupid question, but may I please ask how you managed to build the 8.6.2 bundles? Even after a fresh clone (or git pull) I always end up with a zip for 8.5.0. There seem to be no tags or releases available in the firebase-unity-sdk repo. What am I missing?

Ahh. I also ran into this issue :) It seems that the firebase-unity-sdk repo isn't actually kept up to date with the latest releases. My guess is that the Firebase team is in the progress migrating to a fully open-source repo (since the repo was only created this year, but the SDK has been around for much longer), and I'd guess that the actual source of truth is still part of some Google internal tooling. Perhaps @a-maurice could clarify.

My solution in the meantime:

~/Projects/firebase/firebase-unity-sdk main* ❯ git diff cmake/firebase_unity_version.cmake                                                    (2s)
diff --git a/cmake/firebase_unity_version.cmake b/cmake/firebase_unity_version.cmake
index 79efa00..0079e7d 100644
--- a/cmake/firebase_unity_version.cmake
+++ b/cmake/firebase_unity_version.cmake
@@ -14,7 +14,7 @@

 # This file defines the version numbers used by the Firebase Unity SDK.

-set(FIREBASE_UNITY_SDK_VERSION "8.5.0"
+set(FIREBASE_UNITY_SDK_VERSION "8.6.2"
     CACHE STRING "The version of the Unity SDK, used in the names of files.")

 set(FIREBASE_IOS_POD_VERSION "8.3.0"
@@ -29,7 +29,7 @@ set(FIREBASE_UNITY_JAR_RESOLVER_VERSION

 # https://github.com/firebase/firebase-cpp-sdk
 set(FIREBASE_CPP_SDK_PRESET_VERSION
-  "v8.6.0"
+  "v8.7.0"
    CACHE STRING
   "Version tag of Firebase CPP SDK to download (if no local or not passed in) and use (no trailing .0)"
 )

Another tip, the build script for mac (build_bash.sh) does not take advantage of parallel code compilation. You can build the project much much faster if you change the make like in that script to make -j10.

from firebase-unity-sdk.

tab1887 avatar tab1887 commented on May 24, 2024 2

@aroman , many thanks again for your quick help. With your diff info I was able to build 8.6.2 and finally got to a point where I could work on my actual project again with this nice M1 performance boost. That really makes me happy :-)

@kerembaydogan , I have uploaded my arm64 bundles here.
Disclaimer: This is mostly untested, so use at your own risk.

from firebase-unity-sdk.

samskivert avatar samskivert commented on May 24, 2024 2

So it's definitely some kind of hardcoded path problem because if I rename the directory in which I built all the firebase stuff, things start failing on my machine. So now I have to figure out what exactly is referencing things in there and then how to make it not do that. Will report back! :)

from firebase-unity-sdk.

happypepper avatar happypepper commented on May 24, 2024 1

Any update on this? This basically makes firebase unusable with the native Unity Editor on Apple Silicon.

Just to expand on this, it basically makes firebase unusable with any Unity on M1 because the non-native editors are very slow on the M1. About 2x slower than the same editor on an intel chip Macbook.

from firebase-unity-sdk.

sjvc avatar sjvc commented on May 24, 2024 1

Hello @aroman. Please, can you upload those .bundle files for the latest version? (8.6.1)

from firebase-unity-sdk.

aroman avatar aroman commented on May 24, 2024 1

So, firestore for desktop gets firestore core from the firebase-ios-sdk repo. That repo has been updated to include the fix, but it hasn't been released yet. Probably will need to wait for that to happen before it can be built. The build process is complex and I haven't been able to find a way to apply the patch directly, since it's quite a few levels upstream at this point. tl;dr no firestore yet. i'll update the repo

from firebase-unity-sdk.

tab1887 avatar tab1887 commented on May 24, 2024 1

@kerembaydogan I had the same issue at first. I guess this is some kind of incompatibility between intel and arm versions of the leveldb that is used for firestore. The SDK tries to check the current schema version and fails.

For me the solution was to simply delete the existing files from
~/Library/Application Support/firestore/__FIRAPP_DEFAULT/[your_app_id]/main/

This will obviously delete the current Firestore state / local cache. Not sure if it has any other side effects. But after deleting everything there, it was automatically recreated with the next app start and all was working for me.

(IIrc there was one more path with a firestoe .ldb file somewhere under ~/Library/ that I had deleted, but I can't remember where exactly that was)

from firebase-unity-sdk.

kerembaydogan avatar kerembaydogan commented on May 24, 2024 1

Here you go:

https://github.com/kerembaydogan/firebase-unity-apple-silicon

from firebase-unity-sdk.

samskivert avatar samskivert commented on May 24, 2024 1

I went down the road of trying to have separate arm64 and x86_64 bundle files and getting Unity to use the right one depending on the architecture. But it runs into problems because both bundle files must have the same name because Swig loads them by name, but Unity complains about having two bundles with the same name (even if we configure their metadata such that the x86_64 one is only used on Intel Macs and the arm64 one is only used on Apple Silicon Macs).

So I think the only viable approach is to build a single fat/universal bundle. I ran into the same openssl problem you probably did when doing that, and am currently compiling a fat openssl library to try linking against that. Unfortunately that's not supported out of the box, so it's a rather manual process of compiling openssl seprately for x86_64 and arm64 and then using lipo to create a universal .a file.

I'll report back shortly on how that goes.

from firebase-unity-sdk.

samskivert avatar samskivert commented on May 24, 2024 1

For anyone that has Firebase compiling locally but wants to avoid the trouble of building openssl, you can find my universal build here: https://samskivert.com/openssl-universal.tgz

from firebase-unity-sdk.

samskivert avatar samskivert commented on May 24, 2024 1

I originally omitted Firestore because we didn't use it and someone else said they ran into trouble building it. But I went back and turned it on and it seemed to build fine.

So I updated the firebase-bundles.zip to include the Firestore shared library, and with the latest Github revision of firebase-cpp-sdk and firebase-unity-sdk (nothing much important changed but at least firebase-unity-sdk is now fixed vis a vis some reorganizing changes made in firebase-cpp-sdk in December).

from firebase-unity-sdk.

samskivert avatar samskivert commented on May 24, 2024 1

Alas, I was hoping Google would have fixed things upstream by now, but no such luck.

I pulled the latest Firebase C++ SDK and Firebase Unity SDK and rebuilt everything. Seemed to go smoothly, so the updated .bundle files are here:

https://samskivert.com/firebase-bundles.zip

But I haven't tested them (yet) and the Github project still says version number 8.7.0, so I don't know if they've synced everything out to Github that went into the 8.8.0 release. Hopefully it all works! I'll test it out myself soon, but I need to rebuild .tgzs and upload them to our private NPM repository which is some extra work that you all don't have to wait around for.

from firebase-unity-sdk.

samskivert avatar samskivert commented on May 24, 2024 1

You need to install the Firebase packages that you want to use from the official Firebase packages provided by Google either the .unitypackage or the .tgz depending on how you want to install them. Presumably you did the instructions here or something similar: https://firebase.google.com/docs/unity/setup

Then those packages will have installed a bunch of directories, either into your Assets directory if you used the .unitypackage or your Library/PackageCache if you use the .tgz files. You need to replace the Firebase/Plugins/x86_64/FirebaseCppApp-8_7_0.bundle file, for example, with the one from the .zip file.

Note: you can only copy it directly into your Unity project if you installed via the .unitypackage files. If you're using the .tgz files, you need to unpack them, replace the .bundle files in question, repack them and then install that modified .tgz file.

from firebase-unity-sdk.

paulinon avatar paulinon commented on May 24, 2024

Hi @tab1887,

Could you try using an LTS version (2020.3.14f1) of the Unity editor and see if the issue persists?

from firebase-unity-sdk.

happypepper avatar happypepper commented on May 24, 2024

Hi @paulinon , would it be possible to confirm whether this DllNotFoundException is expected behaviour on M1 version of Unity editor? Or do we just have something else misconfigured?

from firebase-unity-sdk.

marwanzaky avatar marwanzaky commented on May 24, 2024

@fruitdrawing Same here on my M1 MBP however, the intel versions (Unity v2020 & v2019) ran through Rosetta, no issues.

from firebase-unity-sdk.

fruitdrawing avatar fruitdrawing commented on May 24, 2024

Any update on this? :)

from Unity m1 forum they are saying like this : It looks like Firebase SDK doesn't have Apple silicon binaries yet - you'll have to ask them to recompile them to support Apple silicon.

from firebase-unity-sdk.

happypepper avatar happypepper commented on May 24, 2024

Has anyone tried building the unitypackage themselves from the firebase-unity-sdk repo?

from firebase-unity-sdk.

happypepper avatar happypepper commented on May 24, 2024

Sorry for the inconvenience. Our team is looking at providing M1 support for the Unity SDK. Before that went out, can we try the work around by running Unity in x64 mode using Rosetta, so it will just uses all x64 dlls?

Really happy to hear you guys are working on it!
For me that workaround doesn't make sense, I have an intel macbook pro and M1 mac mini. Unity on M1 running through rosetta is 2x slower than just using intel macbook pro. However, the native M1 unity version is really fast but unusable due to no firebase support. So I am stuck with using the intel machine.

from firebase-unity-sdk.

aroman avatar aroman commented on May 24, 2024

Indeed. Firebase no longer works with the latest stable version of Unity on any new computer made by Apple in the last year.

from firebase-unity-sdk.

marwanzaky avatar marwanzaky commented on May 24, 2024

With the release of 2021.2.0f1 I think this can be officially classified as a bug now.

Right, the only thing now stopping me from using the native Apple Silicone version is this bug, I'm really hoping this will be fixed soon.

from firebase-unity-sdk.

tab1887 avatar tab1887 commented on May 24, 2024

Hi @aroman,

could you please let me know if you've got the Firebase Auth actually working? Are you using that in your project?

Encouraged by your success report I went through the build process myself and finally (after some hours of tweaking and fixing prerequisites) I ended up with some nice native DLLs inside the produced Unity packages.

(I did provide the option -DCMAKE_OSX_DEPLOYMENT_TARGET="10.15" to work around the linker errors for Firestore and had to remove some XCTest bundles as somehow XCTest could not be found in my XCode install)

With these newly built packages installed I got rid of the original "Dll not found" error - so that looks good - but unfortunately the Firebase Auth is not working for me. Whenever I try to login (with email and password) or try to register a new user, I get internal exceptions :-( The same C# code works fine with the intel version of Unity and the latest official SDK release, so I guess the issue is caused by my build.
Any chance you did experience the same and could provide any idea how to fix this?

Here is the exception message that I get:

System.AggregateException: One or more errors occurred. (One or more errors occurred. (An internal error has occurred.)) ---> System.AggregateException: One or more errors occurred. (An internal error has occurred.) ---> Firebase.FirebaseException: An internal error has occurred.
   --- End of inner exception stack trace ---
   --- End of inner exception stack trace ---
---> (Inner Exception #0) System.AggregateException: One or more errors occurred. (An internal error has occurred.) ---> Firebase.FirebaseException: An internal error has occurred.
   --- End of inner exception stack trace ---
---> (Inner Exception #0) Firebase.FirebaseException: An internal error has occurred.<---
<---

UnityEngine.Debug:Log (object)
LoginFunctions/<>c__DisplayClass6_0:<doLogin>b__0 (System.Threading.Tasks.Task`1<Firebase.Auth.FirebaseUser>) (at Assets/Scripts/LoginFunctions.cs:63)
Firebase.Extensions.TaskExtension/<>c__DisplayClass4_1`1<Firebase.Auth.FirebaseUser>:<ContinueWithOnMainThread>b__1 ()
Firebase.Dispatcher/<>c__DisplayClass5_0`1<bool>:<RunAsync>b__0 ()
Firebase.ExceptionAggregator:Wrap (System.Action)
Firebase.Dispatcher:PollJobs ()
Firebase.Platform.FirebaseHandler:Update ()
Firebase.Platform.FirebaseMonoBehaviour:Update ()

from firebase-unity-sdk.

kerembaydogan avatar kerembaydogan commented on May 24, 2024

@aroman
thank you man, you are great.
Is it too much to ask for you to upload .tgz versions of these files?

from firebase-unity-sdk.

tab1887 avatar tab1887 commented on May 24, 2024

@aroman , thank you very much for the prompt response and for providing your build results.
Unfortunately the result is the same for me, even with your version of FirebaseAuth.
Enabling debug output reveals that there is an issue with loading user data from the keystore (I'd guess that is Keychain under MacOS):

LoadUserData: Key com.*******.firebase.auth/__FIRAPP_DEFAULT not found
Failed to read user data for app (__FIRAPP_DEFAULT).  This could happen if the current user doesn't have access to the keystore, the keystore has been corrupted or the app intentionally deleted the stored data.

This seems to be handled in firebase-cpp-sdk/app/src/secure/user_secure_darwin_internal.mm
but I have no clue what is going wrong there :( I guess i'll have to wait patiently until an official release is supporting Apple silicon :-/

from firebase-unity-sdk.

kerembaydogan avatar kerembaydogan commented on May 24, 2024

Hi @cynthiajoan any update on this issue?

from firebase-unity-sdk.

tab1887 avatar tab1887 commented on May 24, 2024

Just for info: In the meantime I was able to get my project running in the Unity M1 editor with Auth, Firestore, and Functions.

It turned out that the keystore issue reported above was a red herring - this happens also on the official Intel version for me and somehow doesn't stop the app from working.

My main issue was a wrong OpenSSL version being used in the build process: OpenSSL 3.0.0 was installed by Homebrew, but that resulted in failed handshakes with www.googleapis.com.
Once replaced with OpenSSL 1.1.1 the Auth was working.

Additionally I had to delete the LevelDB data files manually from my library, as they seem to be incompatible between Intel and Apple versions (crashed when reading schema version)

I still would love to see an official release soon. Unfortunately the packages coming out of the build process are much smaller than the official ones and currently I can't build my Unity project for IOS - still trying to figure out how to "mix" versions to get it all working. But from my experience so far, I would guess that for someone more familiar with this SDK project, it shouldn't be too hard to get a fully working release together.

from firebase-unity-sdk.

aroman avatar aroman commented on May 24, 2024

Unfortunately the packages coming out of the build process are much smaller than the official ones and currently I can't build my Unity project for IOS - still trying to figure out how to "mix" versions to get it all working. But from my experience so far, I would guess that for someone more familiar with this SDK project, it shouldn't be too hard to get a fully working release together.

I noticed the same thing -- the packages I built were much smaller, and I wasn't able to build with them. My solution to that problem was to use the latest official packages provided by Firebase, then ONLY add the AppleSilicon compiled .bundles to my project, replacing the ones from the official package -- but otherwise leaving all other files intact. In this way, I've been able to get the project to both build for normal release targets, and work in-editor.

from firebase-unity-sdk.

kerembaydogan avatar kerembaydogan commented on May 24, 2024

@aroman Thanks for the repo.

I checked it and FirebaseCppFirestore.bundle is missing.
Is there a problem building it?

from firebase-unity-sdk.

kerembaydogan avatar kerembaydogan commented on May 24, 2024

@aroman thank you for your effort

from firebase-unity-sdk.

happypepper avatar happypepper commented on May 24, 2024

@aroman thanks a lot for those .bundles. Unfortunately the FirebaseAuth doesn't work. Trying to follow @tab1887 's instruction to build again, but got a python error: ImportError: No module named absl. I did pip install absl and pip3install absl though

update: got it built. had to set alias for python3

update2: FirebaseAuth working now. For me, it was necessary to copy not only the .bundle, but everything else also

from firebase-unity-sdk.

tab1887 avatar tab1887 commented on May 24, 2024

@aroman Thank you very much for providing the detailed instructions of how to replace only the bundles for a fully working install. This is most appreciated.

Maybe a stupid question, but may I please ask how you managed to build the 8.6.2 bundles? Even after a fresh clone (or git pull) I always end up with a zip for 8.5.0. There seem to be no tags or releases available in the firebase-unity-sdk repo. What am I missing?

Regarding the missing fix for Firestore, the workaround posted here (-DCMAKE_OSX_DEPLOYMENT_TARGET="10.15") is working just fine for me. Not sure why, but it works ;-)

from firebase-unity-sdk.

kerembaydogan avatar kerembaydogan commented on May 24, 2024

@tab1887 Could you share your firestore.bundle file?

from firebase-unity-sdk.

happypepper avatar happypepper commented on May 24, 2024

I've just noticed that i'm getting this error logged in unity whenver my database is updated:
firebase-cpp-sdk/database/src/desktop/core/sync_tree.cc(459): visibility == kOverwriteVisible || !persist
This is using my homebuilt .bundles

Seems like everything is still working well though

from firebase-unity-sdk.

kerembaydogan avatar kerembaydogan commented on May 24, 2024

@tab1887 Thanks for the bundles.

with your bundles I am getting this error.

libc++abi: terminating with uncaught exception of type firebase::firestore::FirestoreInternalError: FIRESTORE INTERNAL ASSERTION FAILED: /Users/tim/Documents/firebase/firebase-unity-sdk/macos_unity/bin/external/src/firestore/Firestore/core/src/local/leveldb_migrations.cc(395) static LevelDbMigrations::SchemaVersion firebase::firestore::local::LevelDbMigrations::ReadSchemaVersion(leveldb::DB *): Failed to read version string from LevelDB, error: 'Corruption: corrupted compressed block contents' (expected status.ok()) ERROR: FIRESTORE INTERNAL ASSERTION FAILED: /Users/tim/Documents/firebase/firebase-unity-sdk /macos_unity/bin/external/src/firestore/Firestore/core/src/local/leveldb_migrations.cc(395) static LevelDbMigrations::SchemaVersion firebase::firestore::local::LevelDbMigrations::ReadSchemaVersion(leveldb::DB *): Failed to read version string from LevelDB, error: 'Corruption: corrupted compressed block contents' (expected status.ok()) Obtained 0 stack frames. Launching bug reporter

from firebase-unity-sdk.

jonsimantov avatar jonsimantov commented on May 24, 2024

BTW If Pull Requests are welcome, I think we can provide some help.

We are still in the process of moving the Firebase Unity's primary development to GitHub, but if you have a PR to add Apple Silicon support, we can take a look at it as we get closer to finishing that transition.

from firebase-unity-sdk.

kerembaydogan avatar kerembaydogan commented on May 24, 2024

My current solution to this problem is building two separate SDK packages, one for arm64 and one for x86_64

If this is ok for you I can add a flag to the build process and update scripts according to that.

If including two separate .bundle files for two architectures is possible on same tgz/unitypackage I can also try to do that.

Third option is building a universal .bunle file (if it is possible),

But I could not find a way to build universal (arm64/x86) bundle file because of the ssl dependencies.

from firebase-unity-sdk.

kerembaydogan avatar kerembaydogan commented on May 24, 2024

@samskivert Wonderful news

from firebase-unity-sdk.

samskivert avatar samskivert commented on May 24, 2024

The final step, which I'm not 100% sure is necessary, but probably is, is that Unity maintains metadata on the .bundle files which specify which architectures they can run on. That is set to Intel in the currently shipped 8.7.0 libraries, so I had to go in and manually change that to "Any CPU".

Because I use the .tgz files and upload them to my own NPM registry, I had to unpack the shipped 8.7.0 .tgz files, replace the .bundle files in the Firebase/Plugins/x86_64 directories, load that up in a scratch Unity project so that I could tweak the .meta file to specify "Any CPU" and then finally publish the results to my own NPM server. And I had to do that individually for all the Firebase libraries we use. Fun times!

But it all works, so that's a plus. :) If anyone with an Intel Mac but not enough patience to go through this whole process themselves wants to try out these .bundle files on their machine to confirm that they also work on Intel Macs, LMK. I can put them up somewhere.

from firebase-unity-sdk.

samskivert avatar samskivert commented on May 24, 2024

Also FWIW, I just confirmed that a standalone build of our game for macOS works with these libraries (on an Apple Silicon Mac).

from firebase-unity-sdk.

megavoid avatar megavoid commented on May 24, 2024

If anyone with an Intel Mac but not enough patience to go through this whole process themselves wants to try out these .bundle files on their machine to confirm that they also work on Intel Macs, LMK. I can put them up somewhere.

@samskivert I have both Intel and Apple Silicon Macs available and would like to test your .bundle files!

from firebase-unity-sdk.

samskivert avatar samskivert commented on May 24, 2024

Great, grab them from here: https://samskivert.com/firebase-bundles.zip and copy whichever of the ones you use over top of the ones installed by the 8.7.0 unitypackage.

from firebase-unity-sdk.

kjyv avatar kjyv commented on May 24, 2024

@samskivert Also tried testing your bundles and using Silicon Unity 2021.2.7 on M1, I can't get any different behavior from vanilla firebase 8.7.0 - same "DllNotFoundException: FirebaseCppApp-8_7_0 assembly: type: member:(null)" exception. I've installed all the modules we need using .unitypackages and replaced the bundle files in the Firebase/Plugins/x86_64 directory (there is just one for me) - anything else that needs to be done?

from firebase-unity-sdk.

kerembaydogan avatar kerembaydogan commented on May 24, 2024

@kjyv Did you rename the x86_64 x86_64.meta to arm64 arm64.meta?

from firebase-unity-sdk.

samskivert avatar samskivert commented on May 24, 2024

You shouldn't need to rename the directory to arm64, but what you do need to do is go in and inspect the .bundle files in Unity, and then you need to set CPU to "Any CPU" in platform settings for the standalone platform:

Screen Shot 2021-12-23 at 2 16 58 PM

Then "Apply" that change (to all .bundle files you need).

from firebase-unity-sdk.

kjyv avatar kjyv commented on May 24, 2024

@kerembaydogan No, I don't think that was supposed to be necessary as the bundles are universal. But I did try creating a new arm64 folder, made sure it was set to Silicon target and deleted the x86_64 folder, no difference.
All files already had Any CPU set when I checked.

from firebase-unity-sdk.

kerembaydogan avatar kerembaydogan commented on May 24, 2024

@kjyv Sorry, I did not realize the bundles are universal.

from firebase-unity-sdk.

samskivert avatar samskivert commented on May 24, 2024

So another guy I work with is having trouble getting these to work as well and we can't figure out what is different. Do you happen to be using a MacBook rather than a MacBook Pro? That's the only thing we can tell is different between his system and mine, and he encounters that same problem in Unity and in with our standalone built client. It's a very mysterious error.

from firebase-unity-sdk.

samskivert avatar samskivert commented on May 24, 2024

When he tries to run our standalone build, it logs the following errors:

Fallback handler could not load library /Users/plastr/Data/Scratch/PuzWiz-mac/Client.app/Contents/Frameworks/MonoEmbedRuntime/osx/libFirebaseCppApp-8_7_0
Fallback handler could not load library /Users/plastr/Data/Scratch/PuzWiz-mac/Client.app/Contents/Frameworks/MonoEmbedRuntime/osx/libFirebaseCppApp-8_7_0.dylib
Fallback handler could not load library /Users/plastr/Data/Scratch/PuzWiz-mac/Client.app/Contents/Frameworks/MonoEmbedRuntime/osx/libFirebaseCppApp-8_7_0.dylib
Fallback handler could not load library /Users/plastr/Data/Scratch/PuzWiz-mac/Client.app/Contents/Frameworks/MonoEmbedRuntime/osx/libFirebaseCppApp-8_7_0.so
Fallback handler could not load library /Users/plastr/Data/Scratch/PuzWiz-mac/Client.app/Contents/Frameworks/MonoEmbedRuntime/osx/libFirebaseCppApp-8_7_0.bundle
Fallback handler could not load library /Users/plastr/Data/Scratch/PuzWiz-mac/Client.app/Contents/Frameworks/MonoEmbedRuntime/osx/libFirebaseCppApp-8_7_0
DllNotFoundException: FirebaseCppApp-8_7_0 assembly:<unknown assembly> type:<unknown type> member:(null)
  at (wrapper managed-to-native) Firebase.AppUtilPINVOKE+SWIGExceptionHelper.SWIGRegisterExceptionCallbacks_AppUtil(Firebase.AppUtilPINVOKE/SWIGExceptionHelper/ExceptionDelegate,Firebase.AppUtilPINVOKE/SWIGExceptionHelper/ExceptionDelegate,Firebase.AppUtilPINVOKE/SWIGExceptionHelper/ExceptionDelegate,Firebase.AppUtilPINVOKE/SWIGExceptionHelper/ExceptionDelegate,Firebase.AppUtilPINVOKE/SWIGExceptionHelper/ExceptionDelegate,Firebase.AppUtilPINVOKE/SWIGExceptionHelper/ExceptionDelegate,Firebase.AppUtilPINVOKE/SWIGExceptionHelper/ExceptionDelegate,Firebase.AppUtilPINVOKE/SWIGExceptionHelper/ExceptionDelegate,Firebase.AppUtilPINVOKE/SWIGExceptionHelper/ExceptionDelegate,Firebase.AppUtilPINVOKE/SWIGExceptionHelper/ExceptionDelegate,Firebase.AppUtilPINVOKE/SWIGExceptionHelper/ExceptionDelegate)
  at Firebase.AppUtilPINVOKE+SWIGExceptionHelper..cctor () [0x000ee] in Z:\tmp\tmp.uX3mTvNLXM\firebase\app\client\unity\proxy\AppUtilPINVOKE.cs:117 
Rethrow as TypeInitializationException: The type initializer for 'SWIGExceptionHelper' threw an exception.

As if it's searching for the .bundle file in the wrong location. That does not happen on my machine, and the location it's searching does not exist and has never existed AFAICT in any of our previous standalone game builds.

The Contents/Frameworks directory contains only some dylib files:

% ls -l Contents/Frameworks/
total 60900
51892 -rwxr-xr-x@ 1 mdb  staff  53135232 Dec 23 11:41 UnityPlayer.dylib*
  556 -rwxr-xr-x@ 1 mdb  staff    566992 Dec 23 11:41 libMonoPosixHelper.dylib*
 1564 -rwxr-xr-x@ 1 mdb  staff   1600224 Dec 23 11:41 libmono-native.dylib*
 6888 -rwxr-xr-x@ 1 mdb  staff   7051520 Dec 23 11:41 libmonobdwgc-2.0.dylib*

from firebase-unity-sdk.

kjyv avatar kjyv commented on May 24, 2024

No, also Macbook Pro (that would be really weird to make a difference). I'm seeing the same log messages but thought this would be some generic path Unity tries when not finding the actual file. Could there be a hardcoded path somehow in the binaries from you build that only works on you machine?

from firebase-unity-sdk.

kerembaydogan avatar kerembaydogan commented on May 24, 2024

@samskivert Which version of unity and applesilicon or intel?

from firebase-unity-sdk.

samskivert avatar samskivert commented on May 24, 2024

Yeah, I just got confirmation that it doesn't work on another guy's ASi Mac either. So maybe there are somehow hardcoded paths in the .bundle files I compiled? That would be very surprising, but at this point we have no idea what else could be going on.

I'm using Unity 2021.2.7f1 and an ASi MacBook Pro. The other two guys are using same version of Unity and one has an ASi MacBook Pro and one has an ASi MacBook.

from firebase-unity-sdk.

kerembaydogan avatar kerembaydogan commented on May 24, 2024

@samskivert did you clear the firestore files from (if using firestore)

~/Library/Application Support/firestore/__FIRAPP_DEFAULT/[your_app_id]/main/

from firebase-unity-sdk.

samskivert avatar samskivert commented on May 24, 2024

We're not using Firestore, just Firebase Auth and Firebase Messaging.

from firebase-unity-sdk.

kjyv avatar kjyv commented on May 24, 2024

Using otool -l FirebaseCppApp-8_7_0.bundle I can see

Load command 20
          cmd LC_RPATH
      cmdsize 96
         path /Users/mdb/ops/firebase/firebase-unity-sdk/build/bin/external/src/curl-build/lib (offset 12)

from firebase-unity-sdk.

samskivert avatar samskivert commented on May 24, 2024

I just tracked that down via a much more painful process. Thanks for the otool tip! :)

from firebase-unity-sdk.

samskivert avatar samskivert commented on May 24, 2024

Now I'm trying to figure out why that is getting linked dynamically. I certainly did not tell the Firestore build system to do that, and I assume they must not do that normally...

from firebase-unity-sdk.

samskivert avatar samskivert commented on May 24, 2024

Well, I continue to wrestle with getting it to build without a dynamically linked libcurl. In theory I should be able to add -DCURL_STATICLIB in the right places (presently hacked into firebase-cpp-sdk/app/rest/CMakeLists.txt because that's what introduces the libcurl dependency) but continues to insist on building it dynamically.

I will continue to beat my head against it, but if anyone was waiting around for quick fixes, I'm afraid I have none to offer. I'll report back when I hopefully eventually sort it out.

It's particularly strange that I built arm64-only .bundle files a week or so ago and everyone on my team was able to successfully use those with no weird libcurl.dylib dependency. And the only thing I changed with this new build was adding the x86_64 arch back in and using a new fat OpenSSL build instead of the (arm64-only) one installed by Homebrew. So I don't know how that changed anything involving libcurl.

from firebase-unity-sdk.

kjyv avatar kjyv commented on May 24, 2024

You probably need to rebuild curl as static library, I don't think you can link a shared library statically. And anyway you probably need to specify your openssl version for it instead of it being the one from brew on your system

from firebase-unity-sdk.

kjyv avatar kjyv commented on May 24, 2024

Maybe also the openssl build you did is pulling in the libcurl dependency but your build is using the shared library from your system and should link to an included curl

from firebase-unity-sdk.

Blueteak avatar Blueteak commented on May 24, 2024

@samskivert Unfortunately still getting the DLLNotFound error on play using your latest bundles.

I have tried most of the suggestions posted here about changing the folder name (arm64 vs x86_64), changing the CPU (Any CPU vs Apple Silicon), cand hanging architecture support (Editor/Standalone/All) and all combinations, but they all give the same error.

from firebase-unity-sdk.

samskivert avatar samskivert commented on May 24, 2024

Hrm, my team mates are able to use these bundles and based on the emojis on my comment posting the new bundles, I'm guessing the other people on this thread are also able to use them.

You shouldn't have to change the folder name, that doesn't mean anything to Unity. And the inspector settings should be like the image I posted earlier in the thread: Editor and Standalone players only and in the macOS section, Any CPU. You have to press "Apply" after you change any settings in the inspector, so make sure you're doing that.

Otherwise, I don't know what could be different between your configuration and ours. Maybe make sure you don't have duplicate copies of the Firebase libraries anywhere?

from firebase-unity-sdk.

kerembaydogan avatar kerembaydogan commented on May 24, 2024

@Blueteak If you are using packagemanager, you should also delete this folder;

/Users/<YOUR_USERNAME>/Library/Unity/cache

from firebase-unity-sdk.

jhedenius avatar jhedenius commented on May 24, 2024

Anyhow, updated bundle files are available at that same URL: https://samskivert.com/firebase-bundles.zip

Thanks a lot for this @samskivert - made my day! Question: you don't happen to have one for Firestore? (FirebaseCppFirestore.bundle)

from firebase-unity-sdk.

happypepper avatar happypepper commented on May 24, 2024

Thanks for the bundles @samskivert , I tried them out, but still getting this error log on my side, as I did with my homebuilt .bundles as well: /Users/mdb/ops/firebase/firebase-cpp-sdk/database/src/desktop/core/sync_tree.cc(459): visibility == kOverwriteVisible || !persist

It might be because I'm using transactions?

Everything seems to be functioning though it's just I thought I should mention it so firebase devs can look at it.
Still looking forward to the official versions. @cynthiajoan

from firebase-unity-sdk.

Barokoli avatar Barokoli commented on May 24, 2024

Awesome! @samskivert your bundles worked like a charm for me. Now it's possible to bridge the time until there is official support.
Thanks a lot!

from firebase-unity-sdk.

pixelblue avatar pixelblue commented on May 24, 2024

Experiencing the same issue "dllNotFound.... 8.7.0". Tried the Bundles from @samskivert (thanks for all your effort) but still no luck on my Macbook Pro M1 Max with Unity 2021.2.6. Any help on what we could still try to fix this.

from firebase-unity-sdk.

andreymillion avatar andreymillion commented on May 24, 2024

For latest 8.8.0 SDK and latest Unity 2021.2.9f1 - the same issue:
DllNotFoundException: FirebaseCppApp-8_8_0 assembly: type: member:(null)

With Bundles from @samskivert for 8.7.0 I got firebase related crash on start of my android app

from firebase-unity-sdk.

vincent-savysoda avatar vincent-savysoda commented on May 24, 2024

I'm getting this issue as well on 8.8.0. I even converted all Firebase and Google plugins to use UPM, and still no luck. I'm on Unity 2020.3.26f1 and i get this DLLNotFoundException error when i try to run on Android mode in the Editor(it does not happen on Standalone). It triggers when it tries to run FirebaseApp.CheckAndFixDependenciesAsync().

from firebase-unity-sdk.

aroman avatar aroman commented on May 24, 2024

I'm getting this issue as well on 8.8.0. I even converted all Firebase and Google plugins to use UPM, and still no luck. I'm on Unity 2020.3.26f1 and i get this DLLNotFoundException error when i try to run on Android mode in the Editor. It triggers when it tries to run FirebaseApp.CheckAndFixDependenciesAsync().

Check some of the earlier posts in this thread. Has nothing to do with how you install Firebase, this isn't a bug, it's a feature Google has yet to implement. Until Google adds support for Apple Silicon, firebase won't work in the editor. As a workaround in the meantime (it could be many months before they get around to it -- they haven't even committed to a timeframe for doing this work), we've been building firebase-unity from source ourselves and compiling it for Apple Silicon. Some folks above have been posting their .unitypackages. I have instructions in an earlier comment with tips on how to do this yourself. It works fine, in production.

from firebase-unity-sdk.

vincent-savysoda avatar vincent-savysoda commented on May 24, 2024

I'm getting this issue as well on 8.8.0. I even converted all Firebase and Google plugins to use UPM, and still no luck. I'm on Unity 2020.3.26f1 and i get this DLLNotFoundException error when i try to run on Android mode in the Editor. It triggers when it tries to run FirebaseApp.CheckAndFixDependenciesAsync().

Check some of the earlier posts in this thread. Has nothing to do with how you install Firebase, this isn't a bug, it's a feature Google has yet to implement. Until Google adds support for Apple Silicon, firebase won't work in the editor. As a workaround in the meantime (it could be many months before they get around to it -- they haven't even committed to a timeframe for doing this work), we've been building firebase-unity from source ourselves and compiling it for Apple Silicon. Some folks above have been posting their .unitypackages. I have instructions in an earlier comment with tips on how to do this yourself. It works fine, in production.

ah damn and i just converted everything to UPM haha so i'll have to convert back if i want to use the custom unitypackages haha. facepalm

from firebase-unity-sdk.

kerembaydogan avatar kerembaydogan commented on May 24, 2024

@vincent-savysoda No, you do not have to convert back. You can run a local NPM server like verdaccio and upload your own customized tgz files there.

Then just add these lines to manifest.json

    {
      "name": "package.yourname.com",
      "url": "http://localhost:4873",
      "scopes": [
        "com.google.external-dependency-manager",
        "com.google.firebase.app",
        "com.google.firebase.auth",
        "com.google.firebase.crashlytics",
        "com.google.firebase.database",
        "com.google.firebase.firestore"
      ]
    }

When Google arm64 support arrives you can easily redirect to their UPM server.

I am doing this and highly recommend it.

Please let me know if you need help.

from firebase-unity-sdk.

spikyworm5 avatar spikyworm5 commented on May 24, 2024

@samskivert @aroman Can we kindly ask you to share the latest arm64 binaries for 8.8.0? Thanks🙏

from firebase-unity-sdk.

samskivert avatar samskivert commented on May 24, 2024

Never mind, it's been too long since I last build them. I say what version number goes in there and forgot to update it. Doing that now and new .zip file coming shortly.

from firebase-unity-sdk.

spikyworm5 avatar spikyworm5 commented on May 24, 2024

@samskivert Thanks a lot! That was super quick. Going to try that soon.

from firebase-unity-sdk.

HochulCL avatar HochulCL commented on May 24, 2024

Is there any roadmap for when Firebase officially supports this?

from firebase-unity-sdk.

Przemo0c avatar Przemo0c commented on May 24, 2024

Hi, a dumb question, but still... I have tried looking for it everywhere, so here it is :
How can you open/add that .bundle file (to Unity) ?

I keep getting ./FirebaseCppApp-8_8_0.bundle: cannot execute binary file inside Terminal

from firebase-unity-sdk.

Przemo0c avatar Przemo0c commented on May 24, 2024

@samskivert Thank you! That worked like a charm, I did also clicked "apply" on the new bundles, and it is working'ish now, good solution for the time being! Huge thanks.

from firebase-unity-sdk.

megavoid avatar megavoid commented on May 24, 2024

@samskivert I finally got to implement your bundles into my project and I just wanted to shout out a big THANK YOU, SIR!

As @Przemo0c said, it works like a charm. I have tested the Universal Binaries successfully on both Intel an Apple Silicon Macs in my compiled project. For anyone coming in at this time: It is a three step process:

  1. Install Firebase Unity SDK 8.8.0 modules you need into your Unity project
  2. Replace the bundle files you use in your project with the Universal Binaries by @samskivert
  3. Inspect the bundles in the Unity editor, set them to "Any CPU" and press "Apply"

Thanks again!
Danny

from firebase-unity-sdk.

h4rdmol avatar h4rdmol commented on May 24, 2024

first, thank you @samskivert for helping a lot of users above according to the emojis. But for me it's somehow didn't work. I think it's because I am a newbie with unity. I have tried all possible options above, even with setting Any CPU, when I start to change it Any CPU and click the Run button Unity falls into Not Responding state and never work anymore, only force quit required.
Steps I performed, may you will find not correct one:

  1. In Aseests->Import Package -> Custom Package and in finder picked a FirebaseDatabase.unitypakage
  2. Clicked to Run game to see that error still reproducible. Stopped the game.
  3. Opened Finder navigated to the project folder then into Firebase/Plugins/x86_64/. From the firebase-bundles.zip I have found the FirebaseCppApp-8_8_0.bundle and replaced it with the filed in X86_86 folder.
  4. Found in Unity the FirebaseCppApp-8_8_0.bundle and then in Platform Settings set to Any CPU for both: Editor and Standalone to use "Any CPU".
    The Unity falls into the endless and not responding anymore.

am I doing something not correctly?

Unity: 2021.2.12f1

from firebase-unity-sdk.

techyworm10 avatar techyworm10 commented on May 24, 2024

@h4rdmol It shouldn't cause Unity to freeze, but did you check the security & privacy window? You should allow the bundle to execute in this window.

from firebase-unity-sdk.

h4rdmol avatar h4rdmol commented on May 24, 2024

bundle allowed in Privacy

from firebase-unity-sdk.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.