Tim Glasgow
1 year ago
47 changed files with 13793 additions and 18874 deletions
Binary file not shown.
@ -1,6 +0,0 @@ |
|||
|
|||
[android] |
|||
target = Google Inc.:Google APIs:23 |
|||
|
|||
[maven_repositories] |
|||
central = https://repo1.maven.org/maven2 |
@ -1,4 +1,4 @@ |
|||
module.exports = { |
|||
root: true, |
|||
extends: '@react-native-community', |
|||
extends: '@react-native', |
|||
}; |
|||
|
@ -1,66 +0,0 @@ |
|||
[ignore] |
|||
; We fork some components by platform |
|||
.*/*[.]android.js |
|||
|
|||
; Ignore "BUCK" generated dirs |
|||
<PROJECT_ROOT>/\.buckd/ |
|||
|
|||
; Ignore polyfills |
|||
node_modules/react-native/Libraries/polyfills/.* |
|||
|
|||
; Flow doesn't support platforms |
|||
.*/Libraries/Utilities/LoadingView.js |
|||
|
|||
.*/node_modules/resolve/test/resolver/malformed_package_json/package\.json$ |
|||
|
|||
[untyped] |
|||
.*/node_modules/@react-native-community/cli/.*/.* |
|||
|
|||
[include] |
|||
|
|||
[libs] |
|||
node_modules/react-native/interface.js |
|||
node_modules/react-native/flow/ |
|||
|
|||
[options] |
|||
emoji=true |
|||
|
|||
exact_by_default=true |
|||
|
|||
format.bracket_spacing=false |
|||
|
|||
module.file_ext=.js |
|||
module.file_ext=.json |
|||
module.file_ext=.ios.js |
|||
|
|||
munge_underscores=true |
|||
|
|||
module.name_mapper='^react-native/\(.*\)$' -> '<PROJECT_ROOT>/node_modules/react-native/\1' |
|||
module.name_mapper='^@?[./a-zA-Z0-9$_-]+\.\(bmp\|gif\|jpg\|jpeg\|png\|psd\|svg\|webp\|m4v\|mov\|mp4\|mpeg\|mpg\|webm\|aac\|aiff\|caf\|m4a\|mp3\|wav\|html\|pdf\)$' -> '<PROJECT_ROOT>/node_modules/react-native/Libraries/Image/RelativeImageStub' |
|||
|
|||
suppress_type=$FlowIssue |
|||
suppress_type=$FlowFixMe |
|||
suppress_type=$FlowFixMeProps |
|||
suppress_type=$FlowFixMeState |
|||
|
|||
[lints] |
|||
sketchy-null-number=warn |
|||
sketchy-null-mixed=warn |
|||
sketchy-number=warn |
|||
untyped-type-import=warn |
|||
nonstrict-import=warn |
|||
deprecated-type=warn |
|||
unsafe-getters-setters=warn |
|||
unnecessary-invariant=warn |
|||
|
|||
[strict] |
|||
deprecated-type |
|||
nonstrict-import |
|||
sketchy-null |
|||
unclear-type |
|||
unsafe-getters-setters |
|||
untyped-import |
|||
untyped-type-import |
|||
|
|||
[version] |
|||
^0.176.3 |
@ -1 +0,0 @@ |
|||
2.7.5 |
@ -1,6 +1,6 @@ |
|||
source 'https://rubygems.org' |
|||
|
|||
# You may use http://rbenv.org/ or https://rvm.io/ to install and use this version |
|||
ruby '2.7.5' |
|||
ruby ">= 2.6.10" |
|||
|
|||
gem 'cocoapods', '~> 1.11', '>= 1.11.2' |
|||
gem 'cocoapods', '~> 1.12' |
|||
|
@ -0,0 +1,98 @@ |
|||
GEM |
|||
remote: https://rubygems.org/ |
|||
specs: |
|||
CFPropertyList (3.0.6) |
|||
rexml |
|||
activesupport (7.0.5) |
|||
concurrent-ruby (~> 1.0, >= 1.0.2) |
|||
i18n (>= 1.6, < 2) |
|||
minitest (>= 5.1) |
|||
tzinfo (~> 2.0) |
|||
addressable (2.8.4) |
|||
public_suffix (>= 2.0.2, < 6.0) |
|||
algoliasearch (1.27.5) |
|||
httpclient (~> 2.8, >= 2.8.3) |
|||
json (>= 1.5.1) |
|||
atomos (0.1.3) |
|||
claide (1.1.0) |
|||
cocoapods (1.12.1) |
|||
addressable (~> 2.8) |
|||
claide (>= 1.0.2, < 2.0) |
|||
cocoapods-core (= 1.12.1) |
|||
cocoapods-deintegrate (>= 1.0.3, < 2.0) |
|||
cocoapods-downloader (>= 1.6.0, < 2.0) |
|||
cocoapods-plugins (>= 1.0.0, < 2.0) |
|||
cocoapods-search (>= 1.0.0, < 2.0) |
|||
cocoapods-trunk (>= 1.6.0, < 2.0) |
|||
cocoapods-try (>= 1.1.0, < 2.0) |
|||
colored2 (~> 3.1) |
|||
escape (~> 0.0.4) |
|||
fourflusher (>= 2.3.0, < 3.0) |
|||
gh_inspector (~> 1.0) |
|||
molinillo (~> 0.8.0) |
|||
nap (~> 1.0) |
|||
ruby-macho (>= 2.3.0, < 3.0) |
|||
xcodeproj (>= 1.21.0, < 2.0) |
|||
cocoapods-core (1.12.1) |
|||
activesupport (>= 5.0, < 8) |
|||
addressable (~> 2.8) |
|||
algoliasearch (~> 1.0) |
|||
concurrent-ruby (~> 1.1) |
|||
fuzzy_match (~> 2.0.4) |
|||
nap (~> 1.0) |
|||
netrc (~> 0.11) |
|||
public_suffix (~> 4.0) |
|||
typhoeus (~> 1.0) |
|||
cocoapods-deintegrate (1.0.5) |
|||
cocoapods-downloader (1.6.3) |
|||
cocoapods-plugins (1.0.0) |
|||
nap |
|||
cocoapods-search (1.0.1) |
|||
cocoapods-trunk (1.6.0) |
|||
nap (>= 0.8, < 2.0) |
|||
netrc (~> 0.11) |
|||
cocoapods-try (1.2.0) |
|||
colored2 (3.1.2) |
|||
concurrent-ruby (1.2.2) |
|||
escape (0.0.4) |
|||
ethon (0.16.0) |
|||
ffi (>= 1.15.0) |
|||
ffi (1.15.5) |
|||
fourflusher (2.3.1) |
|||
fuzzy_match (2.0.4) |
|||
gh_inspector (1.1.3) |
|||
httpclient (2.8.3) |
|||
i18n (1.14.1) |
|||
concurrent-ruby (~> 1.0) |
|||
json (2.6.3) |
|||
minitest (5.18.1) |
|||
molinillo (0.8.0) |
|||
nanaimo (0.3.0) |
|||
nap (1.1.0) |
|||
netrc (0.11.0) |
|||
public_suffix (4.0.7) |
|||
rexml (3.2.5) |
|||
ruby-macho (2.5.1) |
|||
typhoeus (1.4.0) |
|||
ethon (>= 0.9.0) |
|||
tzinfo (2.0.6) |
|||
concurrent-ruby (~> 1.0) |
|||
xcodeproj (1.22.0) |
|||
CFPropertyList (>= 2.3.3, < 4.0) |
|||
atomos (~> 0.1.3) |
|||
claide (>= 1.0.2, < 2.0) |
|||
colored2 (~> 3.1) |
|||
nanaimo (~> 0.3.0) |
|||
rexml (~> 3.2.4) |
|||
|
|||
PLATFORMS |
|||
ruby |
|||
|
|||
DEPENDENCIES |
|||
cocoapods (~> 1.12) |
|||
|
|||
RUBY VERSION |
|||
ruby 2.7.6p219 |
|||
|
|||
BUNDLED WITH |
|||
2.1.4 |
@ -1,55 +0,0 @@ |
|||
# To learn about Buck see [Docs](https://buckbuild.com/). |
|||
# To run your application with Buck: |
|||
# - install Buck |
|||
# - `npm start` - to start the packager |
|||
# - `cd android` |
|||
# - `keytool -genkey -v -keystore keystores/debug.keystore -storepass android -alias androiddebugkey -keypass android -dname "CN=Android Debug,O=Android,C=US"` |
|||
# - `./gradlew :app:copyDownloadableDepsToLibs` - make all Gradle compile dependencies available to Buck |
|||
# - `buck install -r android/app` - compile, install and run application |
|||
# |
|||
|
|||
load(":build_defs.bzl", "create_aar_targets", "create_jar_targets") |
|||
|
|||
lib_deps = [] |
|||
|
|||
create_aar_targets(glob(["libs/*.aar"])) |
|||
|
|||
create_jar_targets(glob(["libs/*.jar"])) |
|||
|
|||
android_library( |
|||
name = "all-libs", |
|||
exported_deps = lib_deps, |
|||
) |
|||
|
|||
android_library( |
|||
name = "app-code", |
|||
srcs = glob([ |
|||
"src/main/java/**/*.java", |
|||
]), |
|||
deps = [ |
|||
":all-libs", |
|||
":build_config", |
|||
":res", |
|||
], |
|||
) |
|||
|
|||
android_build_config( |
|||
name = "build_config", |
|||
package = "com.changeme", |
|||
) |
|||
|
|||
android_resource( |
|||
name = "res", |
|||
package = "com.changeme", |
|||
res = "src/main/res", |
|||
) |
|||
|
|||
android_binary( |
|||
name = "app", |
|||
keystore = "//android/keystores:debug", |
|||
manifest = "src/main/AndroidManifest.xml", |
|||
package_type = "debug", |
|||
deps = [ |
|||
":app-code", |
|||
], |
|||
) |
@ -1,19 +0,0 @@ |
|||
"""Helper definitions to glob .aar and .jar targets""" |
|||
|
|||
def create_aar_targets(aarfiles): |
|||
for aarfile in aarfiles: |
|||
name = "aars__" + aarfile[aarfile.rindex("/") + 1:aarfile.rindex(".aar")] |
|||
lib_deps.append(":" + name) |
|||
android_prebuilt_aar( |
|||
name = name, |
|||
aar = aarfile, |
|||
) |
|||
|
|||
def create_jar_targets(jarfiles): |
|||
for jarfile in jarfiles: |
|||
name = "jars__" + jarfile[jarfile.rindex("/") + 1:jarfile.rindex(".jar")] |
|||
lib_deps.append(":" + name) |
|||
prebuilt_jar( |
|||
name = name, |
|||
binary_jar = jarfile, |
|||
) |
@ -1,116 +0,0 @@ |
|||
package com.changeme.newarchitecture; |
|||
|
|||
import android.app.Application; |
|||
import androidx.annotation.NonNull; |
|||
import com.facebook.react.PackageList; |
|||
import com.facebook.react.ReactInstanceManager; |
|||
import com.facebook.react.ReactNativeHost; |
|||
import com.facebook.react.ReactPackage; |
|||
import com.facebook.react.ReactPackageTurboModuleManagerDelegate; |
|||
import com.facebook.react.bridge.JSIModulePackage; |
|||
import com.facebook.react.bridge.JSIModuleProvider; |
|||
import com.facebook.react.bridge.JSIModuleSpec; |
|||
import com.facebook.react.bridge.JSIModuleType; |
|||
import com.facebook.react.bridge.JavaScriptContextHolder; |
|||
import com.facebook.react.bridge.ReactApplicationContext; |
|||
import com.facebook.react.bridge.UIManager; |
|||
import com.facebook.react.fabric.ComponentFactory; |
|||
import com.facebook.react.fabric.CoreComponentsRegistry; |
|||
import com.facebook.react.fabric.FabricJSIModuleProvider; |
|||
import com.facebook.react.fabric.ReactNativeConfig; |
|||
import com.facebook.react.uimanager.ViewManagerRegistry; |
|||
import com.changeme.BuildConfig; |
|||
import com.changeme.newarchitecture.components.MainComponentsRegistry; |
|||
import com.changeme.newarchitecture.modules.MainApplicationTurboModuleManagerDelegate; |
|||
import java.util.ArrayList; |
|||
import java.util.List; |
|||
|
|||
/** |
|||
* A {@link ReactNativeHost} that helps you load everything needed for the New Architecture, both |
|||
* TurboModule delegates and the Fabric Renderer. |
|||
* |
|||
* <p>Please note that this class is used ONLY if you opt-in for the New Architecture (see the |
|||
* `newArchEnabled` property). Is ignored otherwise. |
|||
*/ |
|||
public class MainApplicationReactNativeHost extends ReactNativeHost { |
|||
public MainApplicationReactNativeHost(Application application) { |
|||
super(application); |
|||
} |
|||
|
|||
@Override |
|||
public boolean getUseDeveloperSupport() { |
|||
return BuildConfig.DEBUG; |
|||
} |
|||
|
|||
@Override |
|||
protected List<ReactPackage> getPackages() { |
|||
List<ReactPackage> packages = new PackageList(this).getPackages(); |
|||
// Packages that cannot be autolinked yet can be added manually here, for example:
|
|||
// packages.add(new MyReactNativePackage());
|
|||
// TurboModules must also be loaded here providing a valid TurboReactPackage implementation:
|
|||
// packages.add(new TurboReactPackage() { ... });
|
|||
// If you have custom Fabric Components, their ViewManagers should also be loaded here
|
|||
// inside a ReactPackage.
|
|||
return packages; |
|||
} |
|||
|
|||
@Override |
|||
protected String getJSMainModuleName() { |
|||
return "index"; |
|||
} |
|||
|
|||
@NonNull |
|||
@Override |
|||
protected ReactPackageTurboModuleManagerDelegate.Builder |
|||
getReactPackageTurboModuleManagerDelegateBuilder() { |
|||
// Here we provide the ReactPackageTurboModuleManagerDelegate Builder. This is necessary
|
|||
// for the new architecture and to use TurboModules correctly.
|
|||
return new MainApplicationTurboModuleManagerDelegate.Builder(); |
|||
} |
|||
|
|||
@Override |
|||
protected JSIModulePackage getJSIModulePackage() { |
|||
return new JSIModulePackage() { |
|||
@Override |
|||
public List<JSIModuleSpec> getJSIModules( |
|||
final ReactApplicationContext reactApplicationContext, |
|||
final JavaScriptContextHolder jsContext) { |
|||
final List<JSIModuleSpec> specs = new ArrayList<>(); |
|||
|
|||
// Here we provide a new JSIModuleSpec that will be responsible of providing the
|
|||
// custom Fabric Components.
|
|||
specs.add( |
|||
new JSIModuleSpec() { |
|||
@Override |
|||
public JSIModuleType getJSIModuleType() { |
|||
return JSIModuleType.UIManager; |
|||
} |
|||
|
|||
@Override |
|||
public JSIModuleProvider<UIManager> getJSIModuleProvider() { |
|||
final ComponentFactory componentFactory = new ComponentFactory(); |
|||
CoreComponentsRegistry.register(componentFactory); |
|||
|
|||
// Here we register a Components Registry.
|
|||
// The one that is generated with the template contains no components
|
|||
// and just provides you the one from React Native core.
|
|||
MainComponentsRegistry.register(componentFactory); |
|||
|
|||
final ReactInstanceManager reactInstanceManager = getReactInstanceManager(); |
|||
|
|||
ViewManagerRegistry viewManagerRegistry = |
|||
new ViewManagerRegistry( |
|||
reactInstanceManager.getOrCreateViewManagers(reactApplicationContext)); |
|||
|
|||
return new FabricJSIModuleProvider( |
|||
reactApplicationContext, |
|||
componentFactory, |
|||
ReactNativeConfig.DEFAULT_CONFIG, |
|||
viewManagerRegistry); |
|||
} |
|||
}); |
|||
return specs; |
|||
} |
|||
}; |
|||
} |
|||
} |
@ -1,36 +0,0 @@ |
|||
package com.changeme.newarchitecture.components; |
|||
|
|||
import com.facebook.jni.HybridData; |
|||
import com.facebook.proguard.annotations.DoNotStrip; |
|||
import com.facebook.react.fabric.ComponentFactory; |
|||
import com.facebook.soloader.SoLoader; |
|||
|
|||
/** |
|||
* Class responsible to load the custom Fabric Components. This class has native methods and needs a |
|||
* corresponding C++ implementation/header file to work correctly (already placed inside the jni/ |
|||
* folder for you). |
|||
* |
|||
* <p>Please note that this class is used ONLY if you opt-in for the New Architecture (see the |
|||
* `newArchEnabled` property). Is ignored otherwise. |
|||
*/ |
|||
@DoNotStrip |
|||
public class MainComponentsRegistry { |
|||
static { |
|||
SoLoader.loadLibrary("fabricjni"); |
|||
} |
|||
|
|||
@DoNotStrip private final HybridData mHybridData; |
|||
|
|||
@DoNotStrip |
|||
private native HybridData initHybrid(ComponentFactory componentFactory); |
|||
|
|||
@DoNotStrip |
|||
private MainComponentsRegistry(ComponentFactory componentFactory) { |
|||
mHybridData = initHybrid(componentFactory); |
|||
} |
|||
|
|||
@DoNotStrip |
|||
public static MainComponentsRegistry register(ComponentFactory componentFactory) { |
|||
return new MainComponentsRegistry(componentFactory); |
|||
} |
|||
} |
@ -1,48 +0,0 @@ |
|||
package com.changeme.newarchitecture.modules; |
|||
|
|||
import com.facebook.jni.HybridData; |
|||
import com.facebook.react.ReactPackage; |
|||
import com.facebook.react.ReactPackageTurboModuleManagerDelegate; |
|||
import com.facebook.react.bridge.ReactApplicationContext; |
|||
import com.facebook.soloader.SoLoader; |
|||
import java.util.List; |
|||
|
|||
/** |
|||
* Class responsible to load the TurboModules. This class has native methods and needs a |
|||
* corresponding C++ implementation/header file to work correctly (already placed inside the jni/ |
|||
* folder for you). |
|||
* |
|||
* <p>Please note that this class is used ONLY if you opt-in for the New Architecture (see the |
|||
* `newArchEnabled` property). Is ignored otherwise. |
|||
*/ |
|||
public class MainApplicationTurboModuleManagerDelegate |
|||
extends ReactPackageTurboModuleManagerDelegate { |
|||
|
|||
private static volatile boolean sIsSoLibraryLoaded; |
|||
|
|||
protected MainApplicationTurboModuleManagerDelegate( |
|||
ReactApplicationContext reactApplicationContext, List<ReactPackage> packages) { |
|||
super(reactApplicationContext, packages); |
|||
} |
|||
|
|||
protected native HybridData initHybrid(); |
|||
|
|||
native boolean canCreateTurboModule(String moduleName); |
|||
|
|||
public static class Builder extends ReactPackageTurboModuleManagerDelegate.Builder { |
|||
protected MainApplicationTurboModuleManagerDelegate build( |
|||
ReactApplicationContext context, List<ReactPackage> packages) { |
|||
return new MainApplicationTurboModuleManagerDelegate(context, packages); |
|||
} |
|||
} |
|||
|
|||
@Override |
|||
protected synchronized void maybeLoadOtherSoLibraries() { |
|||
if (!sIsSoLibraryLoaded) { |
|||
// If you change the name of your application .so file in the Android.mk file,
|
|||
// make sure you update the name here as well.
|
|||
SoLoader.loadLibrary("changeme_appmodules"); |
|||
sIsSoLibraryLoaded = true; |
|||
} |
|||
} |
|||
} |
@ -1,48 +0,0 @@ |
|||
THIS_DIR := $(call my-dir) |
|||
|
|||
include $(REACT_ANDROID_DIR)/Android-prebuilt.mk |
|||
|
|||
# If you wish to add a custom TurboModule or Fabric component in your app you
|
|||
# will have to include the following autogenerated makefile.
|
|||
# include $(GENERATED_SRC_DIR)/codegen/jni/Android.mk
|
|||
include $(CLEAR_VARS) |
|||
|
|||
LOCAL_PATH := $(THIS_DIR) |
|||
|
|||
# You can customize the name of your application .so file here.
|
|||
LOCAL_MODULE := changeme_appmodules |
|||
|
|||
LOCAL_C_INCLUDES := $(LOCAL_PATH) |
|||
LOCAL_SRC_FILES := $(wildcard $(LOCAL_PATH)/*.cpp) |
|||
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH) |
|||
|
|||
# If you wish to add a custom TurboModule or Fabric component in your app you
|
|||
# will have to uncomment those lines to include the generated source
|
|||
# files from the codegen (placed in $(GENERATED_SRC_DIR)/codegen/jni)
|
|||
#
|
|||
# LOCAL_C_INCLUDES += $(GENERATED_SRC_DIR)/codegen/jni
|
|||
# LOCAL_SRC_FILES += $(wildcard $(GENERATED_SRC_DIR)/codegen/jni/*.cpp)
|
|||
# LOCAL_EXPORT_C_INCLUDES += $(GENERATED_SRC_DIR)/codegen/jni
|
|||
|
|||
# Here you should add any native library you wish to depend on.
|
|||
LOCAL_SHARED_LIBRARIES := \
|
|||
libfabricjni \
|
|||
libfbjni \
|
|||
libfolly_runtime \
|
|||
libglog \
|
|||
libjsi \
|
|||
libreact_codegen_rncore \
|
|||
libreact_debug \
|
|||
libreact_nativemodule_core \
|
|||
libreact_render_componentregistry \
|
|||
libreact_render_core \
|
|||
libreact_render_debug \
|
|||
libreact_render_graphics \
|
|||
librrc_view \
|
|||
libruntimeexecutor \
|
|||
libturbomodulejsijni \
|
|||
libyoga |
|||
|
|||
LOCAL_CFLAGS := -DLOG_TAG=\"ReactNative\" -fexceptions -frtti -std=c++17 -Wall |
|||
|
|||
include $(BUILD_SHARED_LIBRARY) |
@ -1,24 +0,0 @@ |
|||
#include "MainApplicationModuleProvider.h" |
|||
|
|||
#include <rncore.h> |
|||
|
|||
namespace facebook { |
|||
namespace react { |
|||
|
|||
std::shared_ptr<TurboModule> MainApplicationModuleProvider( |
|||
const std::string moduleName, |
|||
const JavaTurboModule::InitParams ¶ms) { |
|||
// Here you can provide your own module provider for TurboModules coming from
|
|||
// either your application or from external libraries. The approach to follow
|
|||
// is similar to the following (for a library called `samplelibrary`:
|
|||
//
|
|||
// auto module = samplelibrary_ModuleProvider(moduleName, params);
|
|||
// if (module != nullptr) {
|
|||
// return module;
|
|||
// }
|
|||
// return rncore_ModuleProvider(moduleName, params);
|
|||
return rncore_ModuleProvider(moduleName, params); |
|||
} |
|||
|
|||
} // namespace react
|
|||
} // namespace facebook
|
@ -1,16 +0,0 @@ |
|||
#pragma once |
|||
|
|||
#include <memory> |
|||
#include <string> |
|||
|
|||
#include <ReactCommon/JavaTurboModule.h> |
|||
|
|||
namespace facebook { |
|||
namespace react { |
|||
|
|||
std::shared_ptr<TurboModule> MainApplicationModuleProvider( |
|||
const std::string moduleName, |
|||
const JavaTurboModule::InitParams ¶ms); |
|||
|
|||
} // namespace react
|
|||
} // namespace facebook
|
@ -1,45 +0,0 @@ |
|||
#include "MainApplicationTurboModuleManagerDelegate.h" |
|||
#include "MainApplicationModuleProvider.h" |
|||
|
|||
namespace facebook { |
|||
namespace react { |
|||
|
|||
jni::local_ref<MainApplicationTurboModuleManagerDelegate::jhybriddata> |
|||
MainApplicationTurboModuleManagerDelegate::initHybrid( |
|||
jni::alias_ref<jhybridobject>) { |
|||
return makeCxxInstance(); |
|||
} |
|||
|
|||
void MainApplicationTurboModuleManagerDelegate::registerNatives() { |
|||
registerHybrid({ |
|||
makeNativeMethod( |
|||
"initHybrid", MainApplicationTurboModuleManagerDelegate::initHybrid), |
|||
makeNativeMethod( |
|||
"canCreateTurboModule", |
|||
MainApplicationTurboModuleManagerDelegate::canCreateTurboModule), |
|||
}); |
|||
} |
|||
|
|||
std::shared_ptr<TurboModule> |
|||
MainApplicationTurboModuleManagerDelegate::getTurboModule( |
|||
const std::string name, |
|||
const std::shared_ptr<CallInvoker> jsInvoker) { |
|||
// Not implemented yet: provide pure-C++ NativeModules here.
|
|||
return nullptr; |
|||
} |
|||
|
|||
std::shared_ptr<TurboModule> |
|||
MainApplicationTurboModuleManagerDelegate::getTurboModule( |
|||
const std::string name, |
|||
const JavaTurboModule::InitParams ¶ms) { |
|||
return MainApplicationModuleProvider(name, params); |
|||
} |
|||
|
|||
bool MainApplicationTurboModuleManagerDelegate::canCreateTurboModule( |
|||
std::string name) { |
|||
return getTurboModule(name, nullptr) != nullptr || |
|||
getTurboModule(name, {.moduleName = name}) != nullptr; |
|||
} |
|||
|
|||
} // namespace react
|
|||
} // namespace facebook
|
@ -1,38 +0,0 @@ |
|||
#include <memory> |
|||
#include <string> |
|||
|
|||
#include <ReactCommon/TurboModuleManagerDelegate.h> |
|||
#include <fbjni/fbjni.h> |
|||
|
|||
namespace facebook { |
|||
namespace react { |
|||
|
|||
class MainApplicationTurboModuleManagerDelegate |
|||
: public jni::HybridClass< |
|||
MainApplicationTurboModuleManagerDelegate, |
|||
TurboModuleManagerDelegate> { |
|||
public: |
|||
// Adapt it to the package you used for your Java class.
|
|||
static constexpr auto kJavaDescriptor = |
|||
"Lcom/changeme/newarchitecture/modules/MainApplicationTurboModuleManagerDelegate;"; |
|||
|
|||
static jni::local_ref<jhybriddata> initHybrid(jni::alias_ref<jhybridobject>); |
|||
|
|||
static void registerNatives(); |
|||
|
|||
std::shared_ptr<TurboModule> getTurboModule( |
|||
const std::string name, |
|||
const std::shared_ptr<CallInvoker> jsInvoker) override; |
|||
std::shared_ptr<TurboModule> getTurboModule( |
|||
const std::string name, |
|||
const JavaTurboModule::InitParams ¶ms) override; |
|||
|
|||
/**
|
|||
* Test-only method. Allows user to verify whether a TurboModule can be |
|||
* created by instances of this class. |
|||
*/ |
|||
bool canCreateTurboModule(std::string name); |
|||
}; |
|||
|
|||
} // namespace react
|
|||
} // namespace facebook
|
@ -1,61 +0,0 @@ |
|||
#include "MainComponentsRegistry.h" |
|||
|
|||
#include <CoreComponentsRegistry.h> |
|||
#include <fbjni/fbjni.h> |
|||
#include <react/renderer/componentregistry/ComponentDescriptorProviderRegistry.h> |
|||
#include <react/renderer/components/rncore/ComponentDescriptors.h> |
|||
|
|||
namespace facebook { |
|||
namespace react { |
|||
|
|||
MainComponentsRegistry::MainComponentsRegistry(ComponentFactory *delegate) {} |
|||
|
|||
std::shared_ptr<ComponentDescriptorProviderRegistry const> |
|||
MainComponentsRegistry::sharedProviderRegistry() { |
|||
auto providerRegistry = CoreComponentsRegistry::sharedProviderRegistry(); |
|||
|
|||
// Custom Fabric Components go here. You can register custom
|
|||
// components coming from your App or from 3rd party libraries here.
|
|||
//
|
|||
// providerRegistry->add(concreteComponentDescriptorProvider<
|
|||
// AocViewerComponentDescriptor>());
|
|||
return providerRegistry; |
|||
} |
|||
|
|||
jni::local_ref<MainComponentsRegistry::jhybriddata> |
|||
MainComponentsRegistry::initHybrid( |
|||
jni::alias_ref<jclass>, |
|||
ComponentFactory *delegate) { |
|||
auto instance = makeCxxInstance(delegate); |
|||
|
|||
auto buildRegistryFunction = |
|||
[](EventDispatcher::Weak const &eventDispatcher, |
|||
ContextContainer::Shared const &contextContainer) |
|||
-> ComponentDescriptorRegistry::Shared { |
|||
auto registry = MainComponentsRegistry::sharedProviderRegistry() |
|||
->createComponentDescriptorRegistry( |
|||
{eventDispatcher, contextContainer}); |
|||
|
|||
auto mutableRegistry = |
|||
std::const_pointer_cast<ComponentDescriptorRegistry>(registry); |
|||
|
|||
mutableRegistry->setFallbackComponentDescriptor( |
|||
std::make_shared<UnimplementedNativeViewComponentDescriptor>( |
|||
ComponentDescriptorParameters{ |
|||
eventDispatcher, contextContainer, nullptr})); |
|||
|
|||
return registry; |
|||
}; |
|||
|
|||
delegate->buildRegistryFunction = buildRegistryFunction; |
|||
return instance; |
|||
} |
|||
|
|||
void MainComponentsRegistry::registerNatives() { |
|||
registerHybrid({ |
|||
makeNativeMethod("initHybrid", MainComponentsRegistry::initHybrid), |
|||
}); |
|||
} |
|||
|
|||
} // namespace react
|
|||
} // namespace facebook
|
@ -1,32 +0,0 @@ |
|||
#pragma once |
|||
|
|||
#include <ComponentFactory.h> |
|||
#include <fbjni/fbjni.h> |
|||
#include <react/renderer/componentregistry/ComponentDescriptorProviderRegistry.h> |
|||
#include <react/renderer/componentregistry/ComponentDescriptorRegistry.h> |
|||
|
|||
namespace facebook { |
|||
namespace react { |
|||
|
|||
class MainComponentsRegistry |
|||
: public facebook::jni::HybridClass<MainComponentsRegistry> { |
|||
public: |
|||
// Adapt it to the package you used for your Java class.
|
|||
constexpr static auto kJavaDescriptor = |
|||
"Lcom/changeme/newarchitecture/components/MainComponentsRegistry;"; |
|||
|
|||
static void registerNatives(); |
|||
|
|||
MainComponentsRegistry(ComponentFactory *delegate); |
|||
|
|||
private: |
|||
static std::shared_ptr<ComponentDescriptorProviderRegistry const> |
|||
sharedProviderRegistry(); |
|||
|
|||
static jni::local_ref<jhybriddata> initHybrid( |
|||
jni::alias_ref<jclass>, |
|||
ComponentFactory *delegate); |
|||
}; |
|||
|
|||
} // namespace react
|
|||
} // namespace facebook
|
@ -1,11 +0,0 @@ |
|||
#include <fbjni/fbjni.h> |
|||
#include "MainApplicationTurboModuleManagerDelegate.h" |
|||
#include "MainComponentsRegistry.h" |
|||
|
|||
JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *) { |
|||
return facebook::jni::initialize(vm, [] { |
|||
facebook::react::MainApplicationTurboModuleManagerDelegate:: |
|||
registerNatives(); |
|||
facebook::react::MainComponentsRegistry::registerNatives(); |
|||
}); |
|||
} |
@ -0,0 +1,20 @@ |
|||
/** |
|||
* Copyright (c) Meta Platforms, Inc. and affiliates. |
|||
* |
|||
* <p>This source code is licensed under the MIT license found in the LICENSE file in the root |
|||
* directory of this source tree. |
|||
*/ |
|||
package com.changeme; |
|||
|
|||
import android.content.Context; |
|||
import com.facebook.react.ReactInstanceManager; |
|||
|
|||
/** |
|||
* Class responsible of loading Flipper inside your React Native application. This is the release |
|||
* flavor of it so it's empty as we don't want to load Flipper. |
|||
*/ |
|||
public class ReactNativeFlipper { |
|||
public static void initializeFlipper(Context context, ReactInstanceManager reactInstanceManager) { |
|||
// Do nothing as we don't want to initialize Flipper on Release.
|
|||
} |
|||
} |
@ -1,53 +1,21 @@ |
|||
import org.apache.tools.ant.taskdefs.condition.Os |
|||
|
|||
// Top-level build file where you can add configuration options common to all sub-projects/modules. |
|||
|
|||
buildscript { |
|||
ext { |
|||
buildToolsVersion = "31.0.0" |
|||
buildToolsVersion = "33.0.0" |
|||
minSdkVersion = 21 |
|||
compileSdkVersion = 31 |
|||
targetSdkVersion = 31 |
|||
compileSdkVersion = 33 |
|||
targetSdkVersion = 33 |
|||
|
|||
if (System.properties['os.arch'] == "aarch64") { |
|||
// For M1 Users we need to use the NDK 24 which added support for aarch64 |
|||
ndkVersion = "24.0.8215888" |
|||
} else { |
|||
// Otherwise we default to the side-by-side NDK version from AGP. |
|||
ndkVersion = "21.4.7075529" |
|||
} |
|||
// We use NDK 23 which has both M1 support and is the side-by-side NDK version from AGP. |
|||
ndkVersion = "23.1.7779620" |
|||
} |
|||
repositories { |
|||
google() |
|||
mavenCentral() |
|||
} |
|||
dependencies { |
|||
classpath("com.android.tools.build:gradle:7.1.1") |
|||
classpath("com.android.tools.build:gradle") |
|||
classpath("com.facebook.react:react-native-gradle-plugin") |
|||
classpath("de.undercouch:gradle-download-task:5.0.1") |
|||
// NOTE: Do not place your application dependencies here; they belong |
|||
// in the individual module build.gradle files |
|||
} |
|||
} |
|||
|
|||
allprojects { |
|||
repositories { |
|||
maven { |
|||
// All of React Native (JS, Obj-C sources, Android binaries) is installed from npm |
|||
url("$rootDir/../node_modules/react-native/android") |
|||
} |
|||
maven { |
|||
// Android JSC is installed from npm |
|||
url("$rootDir/../node_modules/jsc-android/dist") |
|||
} |
|||
mavenCentral { |
|||
// We don't want to fetch react-native from Maven Central as there are |
|||
// older versions over there. |
|||
content { |
|||
excludeGroup "com.facebook.react" |
|||
} |
|||
} |
|||
google() |
|||
maven { url 'https://www.jitpack.io' } |
|||
} |
|||
} |
|||
|
Binary file not shown.
@ -1,5 +1,6 @@ |
|||
distributionBase=GRADLE_USER_HOME |
|||
distributionPath=wrapper/dists |
|||
distributionUrl=https\://services.gradle.org/distributions/gradle-7.3.3-all.zip |
|||
distributionUrl=https\://services.gradle.org/distributions/gradle-8.0.1-all.zip |
|||
networkTimeout=10000 |
|||
zipStoreBase=GRADLE_USER_HOME |
|||
zipStorePath=wrapper/dists |
|||
|