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 our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

React Native for Android is incompatible with 3rd-party 64-bit libraries #2814

Open
corbt opened this Issue Sep 17, 2015 · 90 comments

Comments

Projects
None yet
@corbt
Contributor

corbt commented Sep 17, 2015

Hey, it appears that React Native on Android doesn't provide a 64-bit version of the libreactnativejni.so native library, which can cause compatibility issues on 64-bit devices. I ran into this while attempting to integrate React Native with a large existing application I'm developing.

Steps to reproduce:

  1. Create a new application with react-native init.
  2. In the "android/app/build.gradle" file, add compile 'io.realm:realm-android:0.82.2' to the end of the dependencies {} block. (Note that I don't think this is an issue specifically caused by Realm, it's just an example dependency with a 64-bit native library).
  3. Attempt to run on a Nexus 9.

Stack trace:

E/AndroidRuntime(32171): FATAL EXCEPTION: main
E/AndroidRuntime(32171): Process: com.androidemberall, PID: 32171
E/AndroidRuntime(32171): java.lang.UnsatisfiedLinkError: could find DSO to load: libreactnativejni.so
E/AndroidRuntime(32171):    at com.facebook.soloader.SoLoader.loadLibraryBySoName(SoLoader.java:213)
E/AndroidRuntime(32171):    at com.facebook.soloader.SoLoader.loadLibrary(SoLoader.java:178)
E/AndroidRuntime(32171):    at com.facebook.react.bridge.JSCJavaScriptExecutor.<clinit>(JSCJavaScriptExecutor.java:19)
...

I believe this to be caused by the shared library loading logic explained in this answer on StackOverflow. Since Realm includes a 64-bit native binary, the system no longer automatically falls back to the 32-bit version of libreactnativejni.so provided by React.

This bug is blocking me from integrating React Native into my existing application, which I'm really excited to try!

@mkonicek

This comment has been minimized.

Show comment
Hide comment
@mkonicek

mkonicek Sep 17, 2015

Contributor

Thanks for reporting! Yes we don't provide 64-bit version of the native code and the system should always fall back to 32-bit. I believe @kmagiera has context on why we don't provide 64-bit version.

Contributor

mkonicek commented Sep 17, 2015

Thanks for reporting! Yes we don't provide 64-bit version of the native code and the system should always fall back to 32-bit. I believe @kmagiera has context on why we don't provide 64-bit version.

@corbt

This comment has been minimized.

Show comment
Hide comment
@corbt

corbt Sep 17, 2015

Contributor

Like the stackoverflow answer says, the fallback doesn't work if there are other 64-bit native libraries. Most Android projects use a number of 3rd-party libraries, and any that include native 64-bit code will cause React Native to fail.

I think that Android's policy on this is strange (the way one library is loaded shouldn't affect another that doesn't depend on it), but as you can see if you follow my steps to reproduce, it does in fact fail. As more libraries switch to native 64-bit support and React Native gets used in more heterogeneous projects this will become more of an issue.

Contributor

corbt commented Sep 17, 2015

Like the stackoverflow answer says, the fallback doesn't work if there are other 64-bit native libraries. Most Android projects use a number of 3rd-party libraries, and any that include native 64-bit code will cause React Native to fail.

I think that Android's policy on this is strange (the way one library is loaded shouldn't affect another that doesn't depend on it), but as you can see if you follow my steps to reproduce, it does in fact fail. As more libraries switch to native 64-bit support and React Native gets used in more heterogeneous projects this will become more of an issue.

@ide ide changed the title from React Native for Android fails on nexus 9 with 3rd-party libraries to [Android] React Native for Android is incompatible with 3rd-party 64-bit libraries Sep 17, 2015

@kmagiera

This comment has been minimized.

Show comment
Hide comment
@kmagiera

kmagiera Sep 18, 2015

Contributor

It definitely matters as all native libs share address space.

Workaround would be to follow build.grade from our examples and add the following block to defaultConfig:

ndk {
  abiFilters "armeabi-v7a", "x86"
}

see: https://github.com/facebook/react-native/blob/master/Examples/SampleApp/android/app/build.gradle

Contributor

kmagiera commented Sep 18, 2015

It definitely matters as all native libs share address space.

Workaround would be to follow build.grade from our examples and add the following block to defaultConfig:

ndk {
  abiFilters "armeabi-v7a", "x86"
}

see: https://github.com/facebook/react-native/blob/master/Examples/SampleApp/android/app/build.gradle

@corbt

This comment has been minimized.

Show comment
Hide comment
@corbt

corbt Sep 18, 2015

Contributor

Yeah, I tested with that ndk block as well (it actually is included in the default project config generated by react-native init) and the issue still stands.

Contributor

corbt commented Sep 18, 2015

Yeah, I tested with that ndk block as well (it actually is included in the default project config generated by react-native init) and the issue still stands.

@corbt

This comment has been minimized.

Show comment
Hide comment
@corbt

corbt Sep 18, 2015

Contributor

I've uploaded an example failing project here, in case it helps with debugging.

The only changes to the default React-Native-generated project are the addition of the README and the addition of the realm-android dependency.

Contributor

corbt commented Sep 18, 2015

I've uploaded an example failing project here, in case it helps with debugging.

The only changes to the default React-Native-generated project are the addition of the README and the addition of the realm-android dependency.

@corbt

This comment has been minimized.

Show comment
Hide comment
@corbt

corbt Sep 18, 2015

Contributor

Furthermore, I can confirm that installing the apk in 32-bit mode works on the nexus 9, as found in this SO answer (adb install --abi armeabi-v7a app-debug.apk)

Contributor

corbt commented Sep 18, 2015

Furthermore, I can confirm that installing the apk in 32-bit mode works on the nexus 9, as found in this SO answer (adb install --abi armeabi-v7a app-debug.apk)

@corbt

This comment has been minimized.

Show comment
Hide comment
@corbt

corbt Sep 18, 2015

Contributor

I figured out a workaround in the short term (disabling all ARM64 binaries) and wrote it up in a blog. However, the right solution definitely needs to be proper ARM64 support, because that's the way the device ecosystem is moving).

If it isn't included because of concerns over binary size, maybe switching to the packaged V8 interpreter would help? Any ARM64 devices should come with it included, and perhaps falling back to the vendored JSC for devices where V8 isn't available could work.

Contributor

corbt commented Sep 18, 2015

I figured out a workaround in the short term (disabling all ARM64 binaries) and wrote it up in a blog. However, the right solution definitely needs to be proper ARM64 support, because that's the way the device ecosystem is moving).

If it isn't included because of concerns over binary size, maybe switching to the packaged V8 interpreter would help? Any ARM64 devices should come with it included, and perhaps falling back to the vendored JSC for devices where V8 isn't available could work.

@ide

This comment has been minimized.

Show comment
Hide comment
@ide

ide Sep 18, 2015

Collaborator

The fragmentation of running on different JS VMs is worth avoiding. It already kind of sucks that iOS 7/8/9 support different features, and the JS VM should be only a couple MB anyway.

Can ABI splits be used to address concerns about APK size? The idea is that you generate three APKs for 32bit, 64bit, simulator, and distribute them separately.

Collaborator

ide commented Sep 18, 2015

The fragmentation of running on different JS VMs is worth avoiding. It already kind of sucks that iOS 7/8/9 support different features, and the JS VM should be only a couple MB anyway.

Can ABI splits be used to address concerns about APK size? The idea is that you generate three APKs for 32bit, 64bit, simulator, and distribute them separately.

@corbt

This comment has been minimized.

Show comment
Hide comment
@corbt

corbt Sep 18, 2015

Contributor

@ide yes, splits can be used to keep size down, although Google doesn't recommend it: "Although we encourage you to develop and publish a single APK that supports as many device configurations as possible, doing so is sometimes not possible" (emphasis theirs).

I think a reasonable solution would be to generate a monolithic APK by default with x86/arm/arm64 support, and allow individual developers to go through the hassle of producing multiple APKs if their app requires it. I don't think that just ignoring ARM64 will be a good long-term compromise -- it will become harder and harder to use 3rd-party libraries with React Native as more include ARM64 support and more 64-bit devices come to market.

Contributor

corbt commented Sep 18, 2015

@ide yes, splits can be used to keep size down, although Google doesn't recommend it: "Although we encourage you to develop and publish a single APK that supports as many device configurations as possible, doing so is sometimes not possible" (emphasis theirs).

I think a reasonable solution would be to generate a monolithic APK by default with x86/arm/arm64 support, and allow individual developers to go through the hassle of producing multiple APKs if their app requires it. I don't think that just ignoring ARM64 will be a good long-term compromise -- it will become harder and harder to use 3rd-party libraries with React Native as more include ARM64 support and more 64-bit devices come to market.

@ide

This comment has been minimized.

Show comment
Hide comment
@ide

ide Sep 18, 2015

Collaborator

I kind of understand Google's solution though that's how Apple operated for almost a decade and they're moving to architecture-/device-specific binaries (but doing it all for you with their bitcode compiler).

allow individual developers to go through the hassle of producing multiple APKs if their app requires it

I like this solution as a starting point.

Things to track for 64-bit support are:

All of these are up-for-grabs. @kmagiera can you tell us if 64-bit is something that Facebook is actively interested in, or should people just start working on these items?

Collaborator

ide commented Sep 18, 2015

I kind of understand Google's solution though that's how Apple operated for almost a decade and they're moving to architecture-/device-specific binaries (but doing it all for you with their bitcode compiler).

allow individual developers to go through the hassle of producing multiple APKs if their app requires it

I like this solution as a starting point.

Things to track for 64-bit support are:

All of these are up-for-grabs. @kmagiera can you tell us if 64-bit is something that Facebook is actively interested in, or should people just start working on these items?

@kmagiera

This comment has been minimized.

Show comment
Hide comment
@kmagiera

kmagiera Sep 20, 2015

Contributor

@ide I don't think we have anyone focusing on this at the moment. What are the specific things that doesn't compile for armv8? Except from JSC we build all the first-party and third-party libs RN depends on with BUCK for arm64 so it shouldn't take much to make android makefiles build them as well.

Speaking of split builds I don't think Google's recommendation apply in the case when 80% of the APK size comes from native libs. Don't have exact values with me at the moment but from what I remember JSC lib is around 2.3M for armv7 and 2.5M for x86 (uncompressed) which adds around 1.3M to the APK size. Considering the fact that arm64 are quite rare and all of them can run armv7 binaries (JSC with JIT enabled doesn't work with libhoudini if I recall correctly from our experiments, so I consider x86 android devices incapable of running armv7 in this case) I don't think we should default to armv7+arm64+x86 builds. My suggestion would be still to default to x86+armv7 but provide config for split builds for arm64 once it's supported

Contributor

kmagiera commented Sep 20, 2015

@ide I don't think we have anyone focusing on this at the moment. What are the specific things that doesn't compile for armv8? Except from JSC we build all the first-party and third-party libs RN depends on with BUCK for arm64 so it shouldn't take much to make android makefiles build them as well.

Speaking of split builds I don't think Google's recommendation apply in the case when 80% of the APK size comes from native libs. Don't have exact values with me at the moment but from what I remember JSC lib is around 2.3M for armv7 and 2.5M for x86 (uncompressed) which adds around 1.3M to the APK size. Considering the fact that arm64 are quite rare and all of them can run armv7 binaries (JSC with JIT enabled doesn't work with libhoudini if I recall correctly from our experiments, so I consider x86 android devices incapable of running armv7 in this case) I don't think we should default to armv7+arm64+x86 builds. My suggestion would be still to default to x86+armv7 but provide config for split builds for arm64 once it's supported

@ide

This comment has been minimized.

Show comment
Hide comment
@ide

ide Sep 20, 2015

Collaborator

@kmagiera - OK. So if people are interested in 64-bit support they should contribute.

I hit an issue with Google's double-conversion library but I could have specified the wrong compiler options. I didn't spend much time looking into it.

Collaborator

ide commented Sep 20, 2015

@kmagiera - OK. So if people are interested in 64-bit support they should contribute.

I hit an issue with Google's double-conversion library but I could have specified the wrong compiler options. I didn't spend much time looking into it.

@kmagiera

This comment has been minimized.

Show comment
Hide comment
@kmagiera

kmagiera Sep 20, 2015

Contributor

@ide feel free to send PR, I'll update here once we start working on this but I don't expect this to happen within the next couple of weeks.

Contributor

kmagiera commented Sep 20, 2015

@ide feel free to send PR, I'll update here once we start working on this but I don't expect this to happen within the next couple of weeks.

@LegNeato

This comment has been minimized.

Show comment
Hide comment
@LegNeato

LegNeato Oct 1, 2015

FWIW Facebook does ABI apk splitting (and others). Whenever we ship we ship ~14 apks to the store. Out of that 14 we had a fallback that supported everything (no splitting) but virtually no device ever installed it because the others were sufficient.

LegNeato commented Oct 1, 2015

FWIW Facebook does ABI apk splitting (and others). Whenever we ship we ship ~14 apks to the store. Out of that 14 we had a fallback that supported everything (no splitting) but virtually no device ever installed it because the others were sufficient.

@Matthew-C

This comment has been minimized.

Show comment
Hide comment
@Matthew-C

Matthew-C Oct 27, 2015

Hi,
any plan to solve this issue in the near future? It simply blocks us using react-native on Nexus 9.

Matthew-C commented Oct 27, 2015

Hi,
any plan to solve this issue in the near future? It simply blocks us using react-native on Nexus 9.

@ide

This comment has been minimized.

Show comment
Hide comment
@ide

ide Oct 28, 2015

Collaborator

@Matthew-C I haven't heard any updates. If you need this feature, please help out!

Collaborator

ide commented Oct 28, 2015

@Matthew-C I haven't heard any updates. If you need this feature, please help out!

@mkonicek

This comment has been minimized.

Show comment
Hide comment
@mkonicek

mkonicek Oct 28, 2015

Contributor

@Matthew-C This workaround might unblock you (see the discussion above): https://corbt.com/posts/2015/09/18/mixing-32-and-64bit-dependencies-in-android.html

Contributor

mkonicek commented Oct 28, 2015

@Matthew-C This workaround might unblock you (see the discussion above): https://corbt.com/posts/2015/09/18/mixing-32-and-64bit-dependencies-in-android.html

@ajwhite

This comment has been minimized.

Show comment
Hide comment
@ajwhite

ajwhite Nov 6, 2015

Contributor

+1 on this, our product has some 64bit dependencies as well

Contributor

ajwhite commented Nov 6, 2015

+1 on this, our product has some 64bit dependencies as well

@lklots

This comment has been minimized.

Show comment
Hide comment
@lklots
Contributor

lklots commented Dec 1, 2015

@mkonicek

This comment has been minimized.

Show comment
Hide comment
@mkonicek

mkonicek Apr 10, 2016

Contributor

Hi there! This issue is being closed because it has been inactive for a while.

But don't worry, it will live on with ProductPains! Check out its new home: https://productpains.com/post/react-native/android-react-native-for-android-is-incompatible-with-3rd-party-64-bit-libraries

ProductPains helps the community prioritize the most important issues thanks to its voting feature.
It is easy to use - just login with GitHub.

Also, if this issue is a bug, please consider sending a PR with a fix.
We're a small team and rely on the community for bug fixes of issues that don't affect fb apps.

Contributor

mkonicek commented Apr 10, 2016

Hi there! This issue is being closed because it has been inactive for a while.

But don't worry, it will live on with ProductPains! Check out its new home: https://productpains.com/post/react-native/android-react-native-for-android-is-incompatible-with-3rd-party-64-bit-libraries

ProductPains helps the community prioritize the most important issues thanks to its voting feature.
It is easy to use - just login with GitHub.

Also, if this issue is a bug, please consider sending a PR with a fix.
We're a small team and rely on the community for bug fixes of issues that don't affect fb apps.

@MattFoley

This comment has been minimized.

Show comment
Hide comment
@MattFoley

MattFoley May 19, 2016

Contributor

@ide and @mkonicek, I think we should consider re-opening this. Am I understanding correctly that the underlying issue is that JavaScriptCore hasn't been compiled to 64bit for Android?

Is the Android architecture landscape wildly different from the iOS architecture landscape? On iOS, you've been required to support arm64 over a year. If Google takes on this stance, than this is no longer a product pain, and becomes a massive blocker for many developers using React Native.

I argue that due to this, as well as the large performance gain 64bit architectures have over 32bit, this should be reopened and prioritized. If you can provide direction on what needs to be done, it's possible that we can devote time to helping with this effort, as this will quickly become a blocker for us here at Skillz (game developers need all the performance they can get).

Thanks!

Contributor

MattFoley commented May 19, 2016

@ide and @mkonicek, I think we should consider re-opening this. Am I understanding correctly that the underlying issue is that JavaScriptCore hasn't been compiled to 64bit for Android?

Is the Android architecture landscape wildly different from the iOS architecture landscape? On iOS, you've been required to support arm64 over a year. If Google takes on this stance, than this is no longer a product pain, and becomes a massive blocker for many developers using React Native.

I argue that due to this, as well as the large performance gain 64bit architectures have over 32bit, this should be reopened and prioritized. If you can provide direction on what needs to be done, it's possible that we can devote time to helping with this effort, as this will quickly become a blocker for us here at Skillz (game developers need all the performance they can get).

Thanks!

@ide ide reopened this May 19, 2016

@ide ide added Help Wanted :octocat: and removed Icebox labels May 19, 2016

@csotiriou

This comment has been minimized.

Show comment
Hide comment
@csotiriou

csotiriou May 20, 2016

This is indeed a blocker for us, too. We are really interested into using react native in our company, but the lack of 64-bit architectures on android is a real show-stopper, since we definitely need to use some C++ dependencies as well (we build some augmented reality apps)

Throwing away all 64 bit libs as indicated in this post ( https://corbt.com/posts/2015/09/18/mixing-32-and-64bit-dependencies-in-android.html ) is not an actual workaround, it's a hack, that can only get you this far.

Can we at least have an indication regarding this issue's progress (if any)?

csotiriou commented May 20, 2016

This is indeed a blocker for us, too. We are really interested into using react native in our company, but the lack of 64-bit architectures on android is a real show-stopper, since we definitely need to use some C++ dependencies as well (we build some augmented reality apps)

Throwing away all 64 bit libs as indicated in this post ( https://corbt.com/posts/2015/09/18/mixing-32-and-64bit-dependencies-in-android.html ) is not an actual workaround, it's a hack, that can only get you this far.

Can we at least have an indication regarding this issue's progress (if any)?

@MattFoley

This comment has been minimized.

Show comment
Hide comment
@MattFoley

MattFoley May 20, 2016

Contributor

@csotiriou from what I can tell, the best description of the work needed done is expanded upon here by @ide. Item number three seems to be a pretty big rabbit hole at the moment, with no real clear definition. The first two items however are accurate. Item one seems to be a sizable chunk of work, and less defined, whereas item two seems to be smaller and has what seems to be a clear path forward laid out by this issue on Buck.

Contributor

MattFoley commented May 20, 2016

@csotiriou from what I can tell, the best description of the work needed done is expanded upon here by @ide. Item number three seems to be a pretty big rabbit hole at the moment, with no real clear definition. The first two items however are accurate. Item one seems to be a sizable chunk of work, and less defined, whereas item two seems to be smaller and has what seems to be a clear path forward laid out by this issue on Buck.

@ide

This comment has been minimized.

Show comment
Hide comment
@ide

ide May 20, 2016

Collaborator

A good starting point would be to address all the checkboxes in my post above. Get all dependencies working with 64-bit, and add support for armv8 to Buck. Once that's done, it makes more sense to revive the conversation about getting RN compiling for 64-bit.

Collaborator

ide commented May 20, 2016

A good starting point would be to address all the checkboxes in my post above. Get all dependencies working with 64-bit, and add support for armv8 to Buck. Once that's done, it makes more sense to revive the conversation about getting RN compiling for 64-bit.

@LegNeato

This comment has been minimized.

Show comment
Hide comment
@LegNeato

LegNeato May 20, 2016

FWIW I added an untested patch to facebook/buck#414

LegNeato commented May 20, 2016

FWIW I added an untested patch to facebook/buck#414

@gengjiawen

This comment has been minimized.

Show comment
Hide comment
@gengjiawen

gengjiawen Apr 9, 2018

Collaborator

I have finished the pr #18754. If facebook okay with binary aar android-jsc, then the pr can be directly merged. Otherwise merge facebook/android-jsc#30 first.

Collaborator

gengjiawen commented Apr 9, 2018

I have finished the pr #18754. If facebook okay with binary aar android-jsc, then the pr can be directly merged. Otherwise merge facebook/android-jsc#30 first.

@gengjiawen

This comment has been minimized.

Show comment
Hide comment
@gengjiawen

gengjiawen Apr 9, 2018

Collaborator

For anyone want to help test, you can download RNTester for different apk here: https://github.com/gengjiawen/react-native/releases/tag/v0.56beta. I have test on x86 on android-emulator 19 and arm64 on real device android 21.

Collaborator

gengjiawen commented Apr 9, 2018

For anyone want to help test, you can download RNTester for different apk here: https://github.com/gengjiawen/react-native/releases/tag/v0.56beta. I have test on x86 on android-emulator 19 and arm64 on real device android 21.

@gengjiawen

This comment has been minimized.

Show comment
Hide comment
@gengjiawen

gengjiawen Apr 11, 2018

Collaborator

@grabbou @janicduplessis Do you have write access to android-jsc so my pr can be reviewed ?

Collaborator

gengjiawen commented Apr 11, 2018

@grabbou @janicduplessis Do you have write access to android-jsc so my pr can be reviewed ?

@grabbou

This comment has been minimized.

Show comment
Hide comment
@grabbou

grabbou Apr 11, 2018

Collaborator
Collaborator

grabbou commented Apr 11, 2018

@gengjiawen

This comment has been minimized.

Show comment
Hide comment
@gengjiawen

gengjiawen Apr 11, 2018

Collaborator

As far as I known, he doesn't have.

Collaborator

gengjiawen commented Apr 11, 2018

As far as I known, he doesn't have.

@vipcxj

This comment has been minimized.

Show comment
Hide comment
@vipcxj

vipcxj Apr 12, 2018

It seems that fb group don't care this issue. For three years, there is no fb member comment here ever.

vipcxj commented Apr 12, 2018

It seems that fb group don't care this issue. For three years, there is no fb member comment here ever.

@jcampbell05

This comment has been minimized.

Show comment
Hide comment
@jcampbell05

jcampbell05 Apr 12, 2018

it looks like there is progress

jcampbell05 commented Apr 12, 2018

it looks like there is progress

@csotiriou

This comment has been minimized.

Show comment
Hide comment
@csotiriou

csotiriou Apr 12, 2018

From the community, sure. Sad that no big company has invested time into this.

csotiriou commented Apr 12, 2018

From the community, sure. Sad that no big company has invested time into this.

@gengjiawen

This comment has been minimized.

Show comment
Hide comment
@gengjiawen

gengjiawen Apr 14, 2018

Collaborator

Looks like hard to find someone to review my pr :(

Collaborator

gengjiawen commented Apr 14, 2018

Looks like hard to find someone to review my pr :(

@jcampbell05

This comment has been minimized.

Show comment
Hide comment
@jcampbell05

jcampbell05 Apr 16, 2018

@alloy do you know anyone who could from Artsy?

jcampbell05 commented Apr 16, 2018

@alloy do you know anyone who could from Artsy?

@govi

This comment has been minimized.

Show comment
Hide comment
@govi

govi Apr 19, 2018

@gengjiawen We are testing a variant we built by customizing the build scripts. But, we are seeing set faults on Samsung S7. Have you ever tried it on that device before?

govi commented Apr 19, 2018

@gengjiawen We are testing a variant we built by customizing the build scripts. But, we are seeing set faults on Samsung S7. Have you ever tried it on that device before?

@gengjiawen

This comment has been minimized.

Show comment
Hide comment
@gengjiawen

gengjiawen Apr 19, 2018

Collaborator

Nope, what error do you get ? Have tried RNTester https://github.com/gengjiawen/react-native/releases/tag/v0.56beta.

Collaborator

gengjiawen commented Apr 19, 2018

Nope, what error do you get ? Have tried RNTester https://github.com/gengjiawen/react-native/releases/tag/v0.56beta.

@hwangjr

This comment has been minimized.

Show comment
Hide comment
@hwangjr

hwangjr May 5, 2018

any progress about this? in fact, this is really important.

hwangjr commented May 5, 2018

any progress about this? in fact, this is really important.

@gengjiawen

This comment has been minimized.

Show comment
Hide comment
@gengjiawen

gengjiawen May 15, 2018

Collaborator

@grabbou The pr I created can directly merged if we not update android-jsc repo, can you take time to review my pr ?

Collaborator

gengjiawen commented May 15, 2018

@grabbou The pr I created can directly merged if we not update android-jsc repo, can you take time to review my pr ?

@hramos hramos added Core Team and removed Help Wanted :octocat: labels May 15, 2018

@hramos hramos changed the title from [Android] React Native for Android is incompatible with 3rd-party 64-bit libraries to React Native for Android is incompatible with 3rd-party 64-bit libraries May 15, 2018

@hramos

This comment has been minimized.

Show comment
Hide comment
@hramos

hramos May 15, 2018

Contributor

FWIW, I don't have write access to the android-jsc repo either. What's keeping you from using the SoftwareMansion variant?

Contributor

hramos commented May 15, 2018

FWIW, I don't have write access to the android-jsc repo either. What's keeping you from using the SoftwareMansion variant?

@gengjiawen

This comment has been minimized.

Show comment
Hide comment
@gengjiawen

gengjiawen May 16, 2018

Collaborator

SoftwareMansion variant has arm64 suppport. But it's not official and fully tested (jsc version is not the same with facebook android-jsc). Whether or not my pr got merged, I wish we can fix the issue soon. Delay this thing around google's deadline (August 2019) is too risky.

Collaborator

gengjiawen commented May 16, 2018

SoftwareMansion variant has arm64 suppport. But it's not official and fully tested (jsc version is not the same with facebook android-jsc). Whether or not my pr got merged, I wish we can fix the issue soon. Delay this thing around google's deadline (August 2019) is too risky.

@LegNeato

This comment has been minimized.

Show comment
Hide comment
@LegNeato

LegNeato May 16, 2018

I did a PR that I hope will help unblock this on the buck side:

facebook/buck#1889

It will allow NDK's app_platform to vary by CPU ABI. React Native's android-jsc will then need something like:

[ndk]
  app_platform = android-16
  app_platform-arm64 = android-21

LegNeato commented May 16, 2018

I did a PR that I hope will help unblock this on the buck side:

facebook/buck#1889

It will allow NDK's app_platform to vary by CPU ABI. React Native's android-jsc will then need something like:

[ndk]
  app_platform = android-16
  app_platform-arm64 = android-21
@gengjiawen

This comment has been minimized.

Show comment
Hide comment
@gengjiawen

gengjiawen May 23, 2018

Collaborator

@sebmarkbage Sir, can you do something to push this ? Review community pr or do it inside facebook.

Collaborator

gengjiawen commented May 23, 2018

@sebmarkbage Sir, can you do something to push this ? Review community pr or do it inside facebook.

@hramos

This comment has been minimized.

Show comment
Hide comment
@hramos

hramos May 24, 2018

Contributor

SoftwareMansion's JSC repo is legit, and is an effort that sprung from several core React Native contributors.

Contributor

hramos commented May 24, 2018

SoftwareMansion's JSC repo is legit, and is an effort that sprung from several core React Native contributors.

@gengjiawen

This comment has been minimized.

Show comment
Hide comment
@gengjiawen

gengjiawen May 26, 2018

Collaborator

@hramos If you prefer SoftwareMansion's JSC, then maybe add this to this repo. I think arm64 support should be official, not the thing need developers to manually config.

Collaborator

gengjiawen commented May 26, 2018

@hramos If you prefer SoftwareMansion's JSC, then maybe add this to this repo. I think arm64 support should be official, not the thing need developers to manually config.

@hramos

This comment has been minimized.

Show comment
Hide comment
@hramos

hramos May 29, 2018

Contributor

@gengjiawen we're not using that JSC at Facebook. Priority for now is to maintain consistency with what Facebook uses, at least within this repo.

Contributor

hramos commented May 29, 2018

@gengjiawen we're not using that JSC at Facebook. Priority for now is to maintain consistency with what Facebook uses, at least within this repo.

@marafat marafat referenced a pull request that will close this issue Jun 1, 2018

Open

Build 64bit binaries for Android #19536

@gengjiawen

This comment has been minimized.

Show comment
Hide comment
@gengjiawen

gengjiawen Jun 3, 2018

Collaborator

@hramos Does facebook switch to v8 to execute js ? Will it come to react native ?

Collaborator

gengjiawen commented Jun 3, 2018

@hramos Does facebook switch to v8 to execute js ? Will it come to react native ?

@AugustoAleGon

This comment was marked as off-topic.

Show comment
Hide comment
@AugustoAleGon

AugustoAleGon Jun 22, 2018

Any progress of this? It has been almost 3 years :0

AugustoAleGon commented Jun 22, 2018

Any progress of this? It has been almost 3 years :0

@esilverberg

This comment has been minimized.

Show comment
Hide comment
@esilverberg

esilverberg Jun 22, 2018

Airbnb cites this issue specifically as one of the reasons they dropped React Native.

https://medium.com/airbnb-engineering/react-native-at-airbnb-the-technology-dafd0b43838

esilverberg commented Jun 22, 2018

Airbnb cites this issue specifically as one of the reasons they dropped React Native.

https://medium.com/airbnb-engineering/react-native-at-airbnb-the-technology-dafd0b43838

@gengjiawen

This comment has been minimized.

Show comment
Hide comment
@gengjiawen

gengjiawen Jun 22, 2018

Collaborator

For the update, you can see #19737.

Collaborator

gengjiawen commented Jun 22, 2018

For the update, you can see #19737.

@gengjiawen

This comment has been minimized.

Show comment
Hide comment
@gengjiawen

gengjiawen Jul 5, 2018

Collaborator

I am thinking make a showcase for how enable 64 support for 0.56.0, any thought ?

Collaborator

gengjiawen commented Jul 5, 2018

I am thinking make a showcase for how enable 64 support for 0.56.0, any thought ?

@gengjiawen

This comment has been minimized.

Show comment
Hide comment
@gengjiawen

gengjiawen Jul 16, 2018

Collaborator

After this issue fixed facebook/metro#181, I may have time work an example.

Collaborator

gengjiawen commented Jul 16, 2018

After this issue fixed facebook/metro#181, I may have time work an example.

@gengjiawen

This comment has been minimized.

Show comment
Hide comment
@gengjiawen

gengjiawen Jul 26, 2018

Collaborator

I want to give you the show case, but I have stuck by the issue #20353. So let's wait the official team fix the issue.

Collaborator

gengjiawen commented Jul 26, 2018

I want to give you the show case, but I have stuck by the issue #20353. So let's wait the official team fix the issue.

@gengjiawen

This comment has been minimized.

Show comment
Hide comment
@gengjiawen

gengjiawen Aug 19, 2018

Collaborator

I have finish my demo how to support 64bit cpu, you can check here https://github.com/gengjiawen/ReactNative64bitDemo. The demo is based on my pr: #18754.

Collaborator

gengjiawen commented Aug 19, 2018

I have finish my demo how to support 64bit cpu, you can check here https://github.com/gengjiawen/ReactNative64bitDemo. The demo is based on my pr: #18754.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment