- Notifications
You must be signed in to change notification settings - Fork156
Android V8 Support#290
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to ourterms of service andprivacy statement. We’ll occasionally send you account related emails.
Already on GitHub?Sign in to your account
base:master
Are you sure you want to change the base?
Uh oh!
There was an error while loading.Please reload this page.
Conversation
var baseDirectory = ""; | ||
try | ||
{ | ||
baseDirectory = appDomain.BaseDirectory; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others.Learn more.
Mono throws error here for some reason.
@@ -127,6 +153,11 @@ private static IntPtr LoadNativeLibrary(string baseName, string platform, string | |||
messageBuilder.AppendInvariant("\n{0}: {1}", systemPath, MiscHelpers.EnsureNonBlank(GetLoadLibraryErrorMessage(), "Unknown error")); | |||
} | |||
if (HostSettings.IsAndroid) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others.Learn more.
As far as I understand, ClearScript works even if we don't callLoadNativeLibrary
. And I cannot makeLoadNativeLibrary
work consistently for Android. So, if it does not work, I decided to ignore the error for Android. It certainly works, although I don't know what effects this may have.
Hi@KurtGokhan, Thanks so much for contributing! At the moment we're focused on the next point release, so we'll evaluate Android support a bit later – most likely toward the end of the year. Apparently .NET 6 will support Android and iOS in some capacity; thatcould eliminate the need for new APIs such as Thanks again! |
nextfool commentedOct 18, 2021
|
nextfool commentedOct 19, 2021 • edited
Loading Uh oh!
There was an error while loading.Please reload this page.
edited
Uh oh!
There was an error while loading.Please reload this page.
Hi@KurtGokhan so I am now able to build the arm64 version for android. how ever I also want to build x86 from android, so I just start the command like this: make -f Unix/Makefile CPU=x86 ANDROID=1 I checked the "build-android-x86-release.log" and the detail error is this: it seems the libatomic library is missing, but when I try to install it , it says Can you please point me out whats goes wrong here? |
@nextfool you are probably missing one of the build dependencies. Try running |
KurtGokhan commentedOct 19, 2021 • edited
Loading Uh oh!
There was an error while loading.Please reload this page.
edited
Uh oh!
There was an error while loading.Please reload this page.
Sorry, the correct file name is |
Tested with 7.1.7 and works well. |
This does not work currently. Can't build the V8 Android library anymore with the current V8 source code. Android NDK removed linkers I used so the build scripts must be changed. I haven't figured how yet. |
I didn't have time to update this PR so converting it to draft. PR can be closed if not needed anymore. |
Uh oh!
There was an error while loading.Please reload this page.
This PR partially adds support for using V8 with ClearScript in Android Mono. It is partial because it requires some manual steps, and it uses some solutions which can be considered ashacks.
The PR may not be up to merging standards but I opened it hoping that I can get some feedback or other people may find it useful.
Summary of what was done:
-a
flag toV8Update.sh
, andANDROID
symbol to Makefile to build V8 for Android. It can build forarm
andarm64
architectures and can only be built in Linux. To be able to build, it is required to installinstall-build-deps-android.sh
of v8 as far as I can tell.ClearScriptV8.android-arm.so
andClearScriptV8.android-arm64.so
but they need to be prefixed withlib
likelibClearScriptV8.android-arm.so
otherwiseDLLImport
can't find it when built with release configuration for some reason (works with debug though, I guess it is a Mono bug).HostSettings.IsAndroid
to tell the ClearScript that current platform is Android. The user must set this setting to true in Android platforms. (For example, I am using#if UNITY_ANDROID
build flag to conditionally add it)Arm
asX86
so I had to add some hacks for that.