Skip to content
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

Packing RN dependencies, hermes and ignoring javadoc failure, #852

Merged
merged 6 commits into from
Oct 13, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 15 additions & 2 deletions .ado/android-pr.yml
Original file line number Diff line number Diff line change
Expand Up @@ -46,11 +46,18 @@ jobs:

- template: templates\prep-android-nuget.yml

# Verify depenendencies can be enumerated and downloaded ..
- task: CmdLine@2
displayName: 'Verify Dependencies can be enumerated'
inputs:
script: sudo apt-get install python3-pip && sudo apt-get install python3-setuptools && pip3 install BeautifulSoup4 && pip3 install wheel && pip3 install wget && python3 android-patches/scripts/downloadDependencies.py $(Build.SourcesDirectory) && tree $(Build.SourcesDirectory)/android


# Very similar to the default pack task .. but appends 'ndk21' to the nuget pack version
- task: CmdLine@2
displayName: 'Verify NuGet can be packed'
inputs:
script: NDK=ndk`cat ${ANDROID_SDK_ROOT}/ndk-bundle/source.properties 2>&1 | grep Pkg.Revision | awk '{ print $3}' | awk -F. '{ print $1 }'`; mono $(System.DefaultWorkingDirectory)/nuget-bin/nuget.exe pack $(System.DefaultWorkingDirectory)/ReactAndroid/ReactAndroid.nuspec -OutputDirectory $(System.DefaultWorkingDirectory) -Properties buildNumber=$(buildNumber)-$NDK;commitId=$(Build.SourceVersion)
script: NDK=ndk`cat ${ANDROID_SDK_ROOT}/ndk-bundle/source.properties 2>&1 | grep Pkg.Revision | awk '{ print $3}' | awk -F. '{ print $1 }'`; mono $(System.DefaultWorkingDirectory)/nuget-bin/nuget.exe pack $(System.DefaultWorkingDirectory)/ReactAndroid/ReactAndroid.nuspec -OutputDirectory $(Build.StagingDirectory)/final -Properties buildNumber=$(buildNumber)-$NDK;commitId=$(Build.SourceVersion)

# Android CI doesn't create a nuget now, but this check is failing builds. Quickest fix to unblock builds is to disable the check... but we need to find the root cause and fix it and enable this again.
# - script: '[ -f $(System.DefaultWorkingDirectory)/*.nupkg ]'
Expand All @@ -70,4 +77,10 @@ jobs:
- task: CmdLine@2
displayName: gradlew clean
inputs:
script: ./gradlew clean
script: ./gradlew clean

- task: PublishBuildArtifacts@1
displayName: 'Publish final artifacts'
inputs:
PathtoPublish: '$(Build.StagingDirectory)/final'
ArtifactName: 'ReactNative-Final'
7 changes: 7 additions & 0 deletions .ado/publish.yml
Original file line number Diff line number Diff line change
Expand Up @@ -144,6 +144,13 @@ jobs:

- template: templates\prep-android-nuget.yml

# Enumerate and download all dependencies ..
- task: CmdLine@2
displayName: 'Verify Dependencies can be enumerated'
inputs:
script: sudo apt-get install python3-pip && sudo apt-get install python3-setuptools && pip3 install BeautifulSoup4 && pip3 install wheel && pip3 install wget && python3 android-patches/scripts/downloadDependencies.py $(Build.SourcesDirectory) && tree $(Build.SourcesDirectory)/android


# Very similar to the default pack task .. but appends 'ndk21b' to the nuget pack version
- task: CmdLine@2
displayName: 'NuGet pack'
Expand Down
76 changes: 73 additions & 3 deletions android-patches/patches/Build/ReactAndroid/ReactAndroid.nuspec
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
--- "E:\\github\\rnm-63-fresh\\ReactAndroid\\ReactAndroid.nuspec" 1969-12-31 16:00:00.000000000 -0800
+++ "E:\\github\\rnm-63\\ReactAndroid\\ReactAndroid.nuspec" 2020-10-27 20:20:54.071789900 -0700
@@ -0,0 +1,130 @@
--- "E:\\gh\\react-native-macos2\\ReactAndroid\\ReactAndroid.nuspec" 1969-12-31 16:00:00.000000000 -0800
+++ "E:\\gh\\react-native-macos\\ReactAndroid\\ReactAndroid.nuspec" 2021-10-12 19:48:38.934480100 -0700
@@ -0,0 +1,200 @@
+<?xml version="1.0" encoding="utf-8"?>
+<package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
+ <metadata>
Expand Down Expand Up @@ -64,6 +64,41 @@
+ <file src="build\react-ndk\all\armeabi-v7a\libyoga.so" target="lib\droidarm"/>
+ <file src="build\react-ndk\all\x86\libyoga.so" target="lib\droidx86"/>
+ <file src="build\react-ndk\all\arm64-v8a\libyoga.so" target="lib\droidarm64"/>
+
+ <file src="build\react-ndk\all\x86_64\libhermes-executor-common-debug.so" target="lib\droidx64"/>
+ <file src="build\react-ndk\all\armeabi-v7a\libhermes-executor-common-debug.so" target="lib\droidarm"/>
+ <file src="build\react-ndk\all\x86\libhermes-executor-common-debug.so" target="lib\droidx86"/>
+ <file src="build\react-ndk\all\arm64-v8a\libhermes-executor-common-debug.so" target="lib\droidarm64"/>
+
+ <file src="build\react-ndk\all\x86_64\libhermes-executor-common-release.so" target="lib\droidx64"/>
+ <file src="build\react-ndk\all\armeabi-v7a\libhermes-executor-common-release.so" target="lib\droidarm"/>
+ <file src="build\react-ndk\all\x86\libhermes-executor-common-release.so" target="lib\droidx86"/>
+ <file src="build\react-ndk\all\arm64-v8a\libhermes-executor-common-release.so" target="lib\droidarm64"/>
+
+ <file src="build\react-ndk\all\x86_64\libhermes-executor-debug.so" target="lib\droidx64"/>
+ <file src="build\react-ndk\all\armeabi-v7a\libhermes-executor-debug.so" target="lib\droidarm"/>
+ <file src="build\react-ndk\all\x86\libhermes-executor-debug.so" target="lib\droidx86"/>
+ <file src="build\react-ndk\all\arm64-v8a\libhermes-executor-debug.so" target="lib\droidarm64"/>
+
+ <file src="build\react-ndk\all\x86_64\libhermes-executor-release.so" target="lib\droidx64"/>
+ <file src="build\react-ndk\all\armeabi-v7a\libhermes-executor-release.so" target="lib\droidarm"/>
+ <file src="build\react-ndk\all\x86\libhermes-executor-release.so" target="lib\droidx86"/>
+ <file src="build\react-ndk\all\arm64-v8a\libhermes-executor-release.so" target="lib\droidarm64"/>
+
+ <file src="build\react-ndk\all\x86_64\libhermes-inspector.so" target="lib\droidx64"/>
+ <file src="build\react-ndk\all\armeabi-v7a\libhermes-inspector.so" target="lib\droidarm"/>
+ <file src="build\react-ndk\all\x86\libhermes-inspector.so" target="lib\droidx86"/>
+ <file src="build\react-ndk\all\arm64-v8a\libhermes-inspector.so" target="lib\droidarm64"/>
+
+ <file src="build\react-ndk\all\x86_64\libjsijniprofiler.so" target="lib\droidx64"/>
+ <file src="build\react-ndk\all\armeabi-v7a\libjsijniprofiler.so" target="lib\droidarm"/>
+ <file src="build\react-ndk\all\x86\libjsijniprofiler.so" target="lib\droidx86"/>
+ <file src="build\react-ndk\all\arm64-v8a\libjsijniprofiler.so" target="lib\droidarm64"/>
+
+ <file src="build\react-ndk\all\x86_64\libfolly_futures.so" target="lib\droidx64"/>
+ <file src="build\react-ndk\all\armeabi-v7a\libfolly_futures.so" target="lib\droidarm"/>
+ <file src="build\react-ndk\all\x86\libfolly_futures.so" target="lib\droidx86"/>
+ <file src="build\react-ndk\all\arm64-v8a\libfolly_futures.so" target="lib\droidarm64"/>
+
+ <!-- Unstripped binaries -->
+ <file src="build\tmp\buildReactNdkLib\local\x86_64\libfb.so" target="lib\droidx64\unstripped"/>
Expand Down Expand Up @@ -116,6 +151,40 @@
+ <file src="build\tmp\buildReactNdkLib\local\x86\libyoga.so" target="lib\droidx86\unstripped"/>
+ <file src="build\tmp\buildReactNdkLib\local\arm64-v8a\libyoga.so" target="lib\droidarm64\unstripped"/>
+
+ <file src="build\tmp\buildReactNdkLib\local\x86_64\libhermes-executor-common-debug.so" target="lib\droidx64\unstripped"/>
+ <file src="build\tmp\buildReactNdkLib\local\armeabi-v7a\libhermes-executor-common-debug.so" target="lib\droidarm\unstripped"/>
+ <file src="build\tmp\buildReactNdkLib\local\x86\libhermes-executor-common-debug.so" target="lib\droidx86\unstripped"/>
+ <file src="build\tmp\buildReactNdkLib\local\arm64-v8a\libhermes-executor-common-debug.so" target="lib\droidarm64\unstripped"/>
+
+ <file src="build\tmp\buildReactNdkLib\local\x86_64\libhermes-executor-common-release.so" target="lib\droidx64\unstripped"/>
+ <file src="build\tmp\buildReactNdkLib\local\armeabi-v7a\libhermes-executor-common-release.so" target="lib\droidarm\unstripped"/>
+ <file src="build\tmp\buildReactNdkLib\local\x86\libhermes-executor-common-release.so" target="lib\droidx86\unstripped"/>
+ <file src="build\tmp\buildReactNdkLib\local\arm64-v8a\libhermes-executor-common-release.so" target="lib\droidarm64\unstripped"/>
+
+ <file src="build\tmp\buildReactNdkLib\local\x86_64\libhermes-executor-debug.so" target="lib\droidx64\unstripped"/>
+ <file src="build\tmp\buildReactNdkLib\local\armeabi-v7a\libhermes-executor-debug.so" target="lib\droidarm\unstripped"/>
+ <file src="build\tmp\buildReactNdkLib\local\x86\libhermes-executor-debug.so" target="lib\droidx86\unstripped"/>
+ <file src="build\tmp\buildReactNdkLib\local\arm64-v8a\libhermes-executor-debug.so" target="lib\droidarm64\unstripped"/>
+
+ <file src="build\tmp\buildReactNdkLib\local\x86_64\libhermes-executor-release.so" target="lib\droidx64\unstripped"/>
+ <file src="build\tmp\buildReactNdkLib\local\armeabi-v7a\libhermes-executor-release.so" target="lib\droidarm\unstripped"/>
+ <file src="build\tmp\buildReactNdkLib\local\x86\libhermes-executor-release.so" target="lib\droidx86\unstripped"/>
+ <file src="build\tmp\buildReactNdkLib\local\arm64-v8a\libhermes-executor-release.so" target="lib\droidarm64\unstripped"/>
+
+ <file src="build\tmp\buildReactNdkLib\local\x86_64\libhermes-inspector.so" target="lib\droidx64\unstripped"/>
+ <file src="build\tmp\buildReactNdkLib\local\armeabi-v7a\libhermes-inspector.so" target="lib\droidarm\unstripped"/>
+ <file src="build\tmp\buildReactNdkLib\local\x86\libhermes-inspector.so" target="lib\droidx86\unstripped"/>
+ <file src="build\tmp\buildReactNdkLib\local\arm64-v8a\libhermes-inspector.so" target="lib\droidarm64\unstripped"/>
+
+ <file src="build\tmp\buildReactNdkLib\local\x86_64\libjsijniprofiler.so" target="lib\droidx64\unstripped"/>
+ <file src="build\tmp\buildReactNdkLib\local\armeabi-v7a\libjsijniprofiler.so" target="lib\droidarm\unstripped"/>
+ <file src="build\tmp\buildReactNdkLib\local\x86\libjsijniprofiler.so" target="lib\droidx86\unstripped"/>
+ <file src="build\tmp\buildReactNdkLib\local\arm64-v8a\libjsijniprofiler.so" target="lib\droidarm64\unstripped"/>
+
+ <file src="build\tmp\buildReactNdkLib\local\x86_64\libfolly_futures.so" target="lib\droidx64\unstripped"/>
+ <file src="build\tmp\buildReactNdkLib\local\armeabi-v7a\libfolly_futures.so" target="lib\droidarm\unstripped"/>
+ <file src="build\tmp\buildReactNdkLib\local\x86\libfolly_futures.so" target="lib\droidx86\unstripped"/>
+ <file src="build\tmp\buildReactNdkLib\local\arm64-v8a\libfolly_futures.so" target="lib\droidarm64\unstripped"/>
+ <!-- AAR and POM -->
+ <file src="..\android\com\facebook\react\react-native\*\react-native-*.aar" target="lib"/>
+ <file src="..\android\com\facebook\react\react-native\*\react-native-*.pom" target="lib"/>
Expand All @@ -128,6 +197,7 @@
+ <file src="..\ReactCommon\cxxreact\**\*.h" target="inc\cxxreact"/>
+ <file src="..\ReactCommon\jsi\**\*.h" target="inc\jsi"/>
+ <file src="..\ReactCommon\yoga\yoga\**\*.h" target="inc\Yoga"/>
+ <file src="..\android\dependencies\**\*.*" target="dependencies"/>
+ </files>
+</package>
+
10 changes: 10 additions & 0 deletions android-patches/patches/Build/ReactAndroid/release.gradle
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
--- /home/mganandraj/github/rnm-64-vanilla/ReactAndroid/release.gradle 2021-10-11 17:51:44.286455263 -0700
+++ /home/mganandraj/github/rnm-64/ReactAndroid/release.gradle 2021-10-07 16:35:28.636536900 -0700
@@ -74,6 +74,7 @@
afterEvaluate { project ->

task androidJavadoc(type: Javadoc) {
+ failOnError false
source = android.sourceSets.main.java.srcDirs
classpath += files(android.bootClasspath)
classpath += files(project.getConfigurations().getByName("compile").asList())
Original file line number Diff line number Diff line change
@@ -1,11 +1,21 @@
--- "E:\\github\\rnm-63-fresh\\ReactAndroid\\src\\main\\java\\com\\facebook\\react\\bridge\\ReactBridge.java" 2020-10-27 20:26:16.762190600 -0700
+++ "E:\\github\\rnm-63\\ReactAndroid\\src\\main\\java\\com\\facebook\\react\\bridge\\ReactBridge.java" 2020-10-13 21:38:04.995797000 -0700
@@ -31,6 +31,14 @@
--- "E:\\gh\\react-native-macos2\\ReactAndroid\\src\\main\\java\\com\\facebook\\react\\bridge\\ReactBridge.java" 2021-10-12 13:35:49.124099000 -0700
+++ "E:\\gh\\react-native-macos\\ReactAndroid\\src\\main\\java\\com\\facebook\\react\\bridge\\ReactBridge.java" 2021-10-12 13:22:46.508704400 -0700
@@ -31,6 +31,24 @@
Systrace.beginSection(
TRACE_TAG_REACT_JAVA_BRIDGE, "ReactBridge.staticInit::load:reactnativejni");
ReactMarker.logMarker(ReactMarkerConstants.LOAD_REACT_NATIVE_SO_FILE_START);
+
+ SoLoader.loadLibrary("v8jsi");
+ // JS Engine is configurable .. And we expect only one packaged.
+ // Hence ignore failure.
+
+ try {
+ SoLoader.loadLibrary("hermes");
+ } catch (UnsatisfiedLinkError jscE) {}
+
+ try {
+ SoLoader.loadLibrary("v8jsi");
+ } catch (UnsatisfiedLinkError jscE) {}
+
+ SoLoader.loadLibrary("glog_init");
+ SoLoader.loadLibrary("fb");
+ SoLoader.loadLibrary("fbjni");
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
--- "E:\\github\\rnm-63-fresh\\ReactAndroid\\src\\main\\java\\com\\facebook\\react\\ReactInstanceManagerBuilder.java" 2020-10-27 20:26:16.728167300 -0700
+++ "E:\\github\\rnm-63\\ReactAndroid\\src\\main\\java\\com\\facebook\\react\\ReactInstanceManagerBuilder.java" 2020-10-13 21:27:45.535631600 -0700
--- "E:\\gh\\react-native-macos2\\ReactAndroid\\src\\main\\java\\com\\facebook\\react\\ReactInstanceManagerBuilder.java" 2021-10-12 13:33:12.881732000 -0700
+++ "E:\\gh\\react-native-macos\\ReactAndroid\\src\\main\\java\\com\\facebook\\react\\ReactInstanceManagerBuilder.java" 2021-10-12 13:26:43.722189600 -0700
@@ -26,6 +26,7 @@
import com.facebook.react.devsupport.interfaces.DevBundleDownloadListener;
import com.facebook.react.devsupport.interfaces.DevSupportManager;
Expand All @@ -8,21 +8,69 @@
import com.facebook.react.modules.core.DefaultHardwareBackBtnHandler;
import com.facebook.react.packagerconnection.RequestHandler;
import com.facebook.react.uimanager.UIImplementationProvider;
@@ -291,7 +292,8 @@
@@ -59,8 +60,21 @@
private @Nullable JSIModulePackage mJSIModulesPackage;
private @Nullable Map<String, RequestHandler> mCustomPackagerCommandHandlers;

+ public enum JSEngine {
+ Hermes,
+ V8
+ }
+
+ private JSEngine mJSEngine = JSEngine.V8;
+
/* package protected */ ReactInstanceManagerBuilder() {}

+ public ReactInstanceManagerBuilder setJSEngine(
+ JSEngine jsEngine) {
+ mJSEngine = jsEngine;
+ return this;
+ }
+
/** Sets a provider of {@link UIImplementation}. Uses default provider if null is passed. */
public ReactInstanceManagerBuilder setUIImplementationProvider(
@Nullable UIImplementationProvider uiImplementationProvider) {
@@ -291,40 +305,10 @@

private JavaScriptExecutorFactory getDefaultJSExecutorFactory(
String appName, String deviceName, Context applicationContext) {
- try {
- // If JSC is included, use it as normal
- initializeSoLoaderIfNecessary(applicationContext);
- SoLoader.loadLibrary("jscexecutor");
- return new JSCExecutorFactory(appName, deviceName);
- } catch (UnsatisfiedLinkError jscE) {
- // https://github.com/facebook/hermes/issues/78 shows that
- // people who aren't trying to use Hermes are having issues.
- // https://github.com/facebook/react-native/issues/25923#issuecomment-554295179
- // includes the actual JSC error in at least one case.
- //
- // So, if "__cxa_bad_typeid" shows up in the jscE exception
- // message, then we will assume that's the failure and just
- // throw now.
-
- if (jscE.getMessage().contains("__cxa_bad_typeid")) {
- throw jscE;
- }
-
- // Otherwise use Hermes
- try {
+ if(mJSEngine == JSEngine.V8) {
+ return new V8ExecutorFactory(appName, deviceName);
+/* try {
// If JSC is included, use it as normal
initializeSoLoaderIfNecessary(applicationContext);
SoLoader.loadLibrary("jscexecutor");
@@ -325,6 +327,6 @@
hermesE.printStackTrace();
throw jscE;
+ } else {
return new HermesExecutorFactory();
- } catch (UnsatisfiedLinkError hermesE) {
- // If we get here, either this is a JSC build, and of course
- // Hermes failed (since it's not in the APK), or it's a Hermes
- // build, and Hermes had a problem.
-
- // We suspect this is a JSC issue (it's the default), so we
- // will throw that exception, but we will print hermesE first,
- // since it could be a Hermes issue and we don't want to
- // swallow that.
- hermesE.printStackTrace();
- throw jscE;
}
- }
+ } */
}
}
Loading