Build new bridge with gradle
Reviewed By: bestander Differential Revision: D3324351 fbshipit-source-id: 41fa18a23c8661440a7deff244c93278f418e1d9
This commit is contained in:
Родитель
708530a905
Коммит
5e8f1716fc
|
@ -114,7 +114,7 @@ task prepareGlog(dependsOn: downloadGlog, type: Copy) {
|
|||
|
||||
task downloadJSCHeaders(type: Download) {
|
||||
def jscAPIBaseURL = 'https://svn.webkit.org/repository/webkit/!svn/bc/174650/trunk/Source/JavaScriptCore/API/'
|
||||
def jscHeaderFiles = ['JSBase.h', 'JSContextRef.h', 'JSObjectRef.h', 'JSRetainPtr.h', 'JSStringRef.h', 'JSValueRef.h', 'WebKitAvailability.h']
|
||||
def jscHeaderFiles = ['JavaScript.h', 'JSBase.h', 'JSContextRef.h', 'JSObjectRef.h', 'JSRetainPtr.h', 'JSStringRef.h', 'JSValueRef.h', 'WebKitAvailability.h']
|
||||
def output = new File(downloadsDir, 'jsc')
|
||||
output.mkdirs()
|
||||
src(jscHeaderFiles.collect { headerName -> "$jscAPIBaseURL$headerName" })
|
||||
|
@ -185,7 +185,7 @@ def getNdkBuildFullPath() {
|
|||
}
|
||||
|
||||
task buildReactNdkLib(dependsOn: [prepareJSC, prepareBoost, prepareDoubleConversion, prepareFolly, prepareGlog], type: Exec) {
|
||||
inputs.file('src/main/jni/react')
|
||||
inputs.file('src/main/jni/xreact')
|
||||
outputs.dir("$buildDir/react-ndk/all")
|
||||
commandLine getNdkBuildFullPath(),
|
||||
'NDK_PROJECT_PATH=null',
|
||||
|
@ -193,7 +193,8 @@ task buildReactNdkLib(dependsOn: [prepareJSC, prepareBoost, prepareDoubleConvers
|
|||
'NDK_OUT=' + temporaryDir,
|
||||
"NDK_LIBS_OUT=$buildDir/react-ndk/all",
|
||||
"THIRD_PARTY_NDK_DIR=$buildDir/third-party-ndk",
|
||||
'-C', file('src/main/jni/react/jni').absolutePath,
|
||||
"REACT_COMMON_DIR=$projectDir/../ReactCommon",
|
||||
'-C', file('src/main/jni/xreact/jni').absolutePath,
|
||||
'--jobs', project.hasProperty("jobs") ? project.property("jobs") : Runtime.runtime.availableProcessors()
|
||||
}
|
||||
|
||||
|
|
|
@ -5,7 +5,7 @@ APP_PLATFORM := android-9
|
|||
|
||||
APP_MK_DIR := $(dir $(lastword $(MAKEFILE_LIST)))
|
||||
|
||||
NDK_MODULE_PATH := $(APP_MK_DIR)$(HOST_DIRSEP)$(THIRD_PARTY_NDK_DIR)$(HOST_DIRSEP)$(APP_MK_DIR)first-party
|
||||
NDK_MODULE_PATH := $(APP_MK_DIR)$(HOST_DIRSEP)$(THIRD_PARTY_NDK_DIR)$(HOST_DIRSEP)$(REACT_COMMON_DIR)$(HOST_DIRSEP)$(APP_MK_DIR)first-party
|
||||
|
||||
APP_STL := gnustl_shared
|
||||
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
LOCAL_PATH:= $(call my-dir)
|
||||
LOCAL_PATH := $(call my-dir)
|
||||
|
||||
include $(CLEAR_VARS)
|
||||
|
||||
LOCAL_SRC_FILES:= \
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
LOCAL_PATH:= $(call my-dir)
|
||||
LOCAL_PATH := $(call my-dir)
|
||||
|
||||
include $(CLEAR_VARS)
|
||||
|
||||
|
@ -18,7 +18,6 @@ LOCAL_EXPORT_C_INCLUDES := $(LOCAL_C_INCLUDES)
|
|||
LOCAL_CFLAGS := \
|
||||
-DLOG_TAG=\"ReactNative\"
|
||||
|
||||
LOCAL_LDLIBS += -landroid
|
||||
LOCAL_CFLAGS += -Wall -Werror -fexceptions -frtti
|
||||
CXX11_FLAGS := -std=c++11
|
||||
LOCAL_CFLAGS += $(CXX11_FLAGS)
|
||||
|
|
|
@ -2,20 +2,21 @@ LOCAL_PATH := $(call my-dir)
|
|||
|
||||
include $(CLEAR_VARS)
|
||||
|
||||
LOCAL_MODULE := reactnativejni
|
||||
LOCAL_MODULE := libreactnativejni
|
||||
|
||||
LOCAL_SRC_FILES := \
|
||||
JExecutorToken.cpp \
|
||||
JMessageQueueThread.cpp \
|
||||
JniJSModulesUnbundle.cpp \
|
||||
JSCPerfLogging.cpp \
|
||||
JSLoader.cpp \
|
||||
JSLogging.cpp \
|
||||
JniJSModulesUnbundle.cpp \
|
||||
NativeArray.cpp \
|
||||
OnLoad.cpp \
|
||||
ProxyExecutor.cpp \
|
||||
|
||||
LOCAL_C_INCLUDES := $(LOCAL_PATH)
|
||||
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/../.. $(LOCAL_PATH)/..
|
||||
|
||||
LOCAL_CFLAGS += -Wall -Werror -fvisibility=hidden -fexceptions -frtti
|
||||
CXX11_FLAGS := -std=c++11
|
||||
|
|
|
@ -24,4 +24,3 @@ LOCAL_LDFLAGS += $(BUCK_DEP_LDFLAGS)
|
|||
include $(BUILD_EXECUTABLE)
|
||||
|
||||
$(call import-module,react)
|
||||
$(call import-module,google-test)
|
||||
|
|
|
@ -5,6 +5,7 @@ LOCAL_SRC_FILES:= \
|
|||
folly/json.cpp \
|
||||
folly/Unicode.cpp \
|
||||
folly/Conv.cpp \
|
||||
folly/Demangle.cpp \
|
||||
folly/detail/FunctionalExcept.cpp \
|
||||
folly/detail/MallocImpl.cpp \
|
||||
folly/StringBase.cpp \
|
||||
|
|
|
@ -0,0 +1,40 @@
|
|||
LOCAL_PATH := $(call my-dir)
|
||||
|
||||
include $(CLEAR_VARS)
|
||||
|
||||
LOCAL_MODULE := reactnativejnifb
|
||||
|
||||
LOCAL_SRC_FILES := \
|
||||
CatalystInstanceImpl.cpp \
|
||||
CxxModuleWrapper.cpp \
|
||||
JExecutorToken.cpp \
|
||||
JMessageQueueThread.cpp \
|
||||
JniJSModulesUnbundle.cpp \
|
||||
JSCPerfLogging.cpp \
|
||||
JSLoader.cpp \
|
||||
JSLogging.cpp \
|
||||
MethodInvoker.cpp \
|
||||
ModuleRegistryHolder.cpp \
|
||||
OnLoad.cpp \
|
||||
ProxyExecutor.cpp \
|
||||
|
||||
LOCAL_C_INCLUDES := $(LOCAL_PATH)
|
||||
LOCAL_C_INCLUDES := $(LOCAL_PATH)/../../
|
||||
|
||||
LOCAL_CFLAGS += -Wall -Werror -fvisibility=hidden -fexceptions -frtti
|
||||
CXX11_FLAGS := -std=c++11
|
||||
LOCAL_CFLAGS += $(CXX11_FLAGS)
|
||||
LOCAL_EXPORT_CPPFLAGS := $(CXX11_FLAGS)
|
||||
|
||||
LOCAL_LDLIBS += -landroid
|
||||
LOCAL_SHARED_LIBRARIES := libfolly_json libfbjni libjsc libglog_init libreactnativejni
|
||||
LOCAL_STATIC_LIBRARIES := libreactnative libreactnativefb
|
||||
|
||||
include $(BUILD_SHARED_LIBRARY)
|
||||
|
||||
$(call import-module,cxxreact)
|
||||
$(call import-module,jsc)
|
||||
$(call import-module,folly)
|
||||
$(call import-module,fbgloginit)
|
||||
$(call import-module,jni)
|
||||
$(call import-module,react)
|
|
@ -0,0 +1,40 @@
|
|||
LOCAL_PATH := $(call my-dir)
|
||||
|
||||
include $(CLEAR_VARS)
|
||||
|
||||
LOCAL_MODULE := libreactnativejnifb
|
||||
|
||||
LOCAL_SRC_FILES := \
|
||||
CatalystInstanceImpl.cpp \
|
||||
CxxModuleWrapper.cpp \
|
||||
JExecutorToken.cpp \
|
||||
JMessageQueueThread.cpp \
|
||||
JniJSModulesUnbundle.cpp \
|
||||
JSCPerfLogging.cpp \
|
||||
JSLoader.cpp \
|
||||
JSLogging.cpp \
|
||||
MethodInvoker.cpp \
|
||||
ModuleRegistryHolder.cpp \
|
||||
OnLoad.cpp \
|
||||
ProxyExecutor.cpp \
|
||||
|
||||
LOCAL_C_INCLUDES := $(LOCAL_PATH)
|
||||
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/../..
|
||||
|
||||
LOCAL_CFLAGS += -Wall -Werror -fvisibility=hidden -fexceptions -frtti
|
||||
CXX11_FLAGS := -std=c++11
|
||||
LOCAL_CFLAGS += $(CXX11_FLAGS)
|
||||
LOCAL_EXPORT_CPPFLAGS := $(CXX11_FLAGS)
|
||||
|
||||
LOCAL_LDLIBS += -landroid
|
||||
LOCAL_SHARED_LIBRARIES := libfolly_json libfbjni libjsc libglog_init libreactnativejni
|
||||
LOCAL_STATIC_LIBRARIES := libreactnativefb
|
||||
|
||||
include $(BUILD_SHARED_LIBRARY)
|
||||
|
||||
$(call import-module,cxxreact)
|
||||
$(call import-module,jsc)
|
||||
$(call import-module,folly)
|
||||
$(call import-module,fbgloginit)
|
||||
$(call import-module,jsc)
|
||||
$(call import-module,react/jni)
|
|
@ -18,8 +18,8 @@ cxx_library(
|
|||
'//xplat/folly:molly',
|
||||
'//xplat/fbsystrace:fbsystrace',
|
||||
react_native_target('jni/react/jni:jni'),
|
||||
react_native_xplat_target('bridge:bridge'),
|
||||
react_native_xplat_target('bridge:module'),
|
||||
react_native_xplat_target('cxxreact:bridge'),
|
||||
react_native_xplat_target('cxxreact:module'),
|
||||
],
|
||||
srcs = glob(['*.cpp']),
|
||||
exported_headers = EXPORTED_HEADERS,
|
||||
|
|
|
@ -10,6 +10,7 @@
|
|||
#include <jni/Registration.h>
|
||||
|
||||
#include <cxxreact/JsArgumentHelpers.h>
|
||||
#include <cxxreact/FollySupport.h>
|
||||
|
||||
#include <android/log.h>
|
||||
|
||||
|
@ -190,7 +191,7 @@ std::string CxxModuleWrapper::getConstantsJson() {
|
|||
constsobject.insert(std::move(c.first), std::move(c.second));
|
||||
}
|
||||
|
||||
return folly::toJson(constsobject);
|
||||
return facebook::react::detail::toStdString(folly::toJson(constsobject));
|
||||
}
|
||||
|
||||
jobject CxxModuleWrapper::getMethods() {
|
||||
|
|
|
@ -137,7 +137,7 @@ jvalue extract(std::weak_ptr<Instance>& instance, ExecutorToken token, char type
|
|||
value.l = valueOf(extractDouble(arg));
|
||||
break;
|
||||
case 'S':
|
||||
value.l = jni::make_jstring(arg.getString()).release();
|
||||
value.l = jni::make_jstring(arg.getString().c_str()).release();
|
||||
break;
|
||||
case 'A':
|
||||
value.l = ReadableNativeArray::newObjectCxxArgs(arg).release();
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
#include <fb/fbjni.h>
|
||||
|
||||
#include <cxxreact/ModuleRegistry.h>
|
||||
#include <react/jni/CxxModuleWrapper.h>
|
||||
#include "CxxModuleWrapper.h"
|
||||
|
||||
namespace facebook {
|
||||
namespace react {
|
||||
|
|
|
@ -10,6 +10,7 @@
|
|||
#include <folly/Memory.h>
|
||||
|
||||
#include <cxxreact/SystraceSection.h>
|
||||
#include <cxxreact/FollySupport.h>
|
||||
|
||||
namespace facebook {
|
||||
namespace react {
|
||||
|
@ -56,7 +57,7 @@ ProxyExecutor::ProxyExecutor(jni::global_ref<jobject>&& executorInstance,
|
|||
SystraceSection t("setGlobalVariable");
|
||||
setGlobalVariable(
|
||||
"__fbBatchedBridgeConfig",
|
||||
folly::make_unique<JSBigStdString>(folly::toJson(config)));
|
||||
folly::make_unique<JSBigStdString>(detail::toStdString(folly::toJson(config))));
|
||||
}
|
||||
|
||||
ProxyExecutor::~ProxyExecutor() {
|
||||
|
|
|
@ -8,10 +8,10 @@ cxx_library(
|
|||
'-fexceptions',
|
||||
],
|
||||
deps = [
|
||||
'//native:base',
|
||||
'//native/fb:fb',
|
||||
'//native:base',
|
||||
'//xplat/folly:molly',
|
||||
react_native_xplat_target('bridge:module'),
|
||||
react_native_xplat_target('cxxreact:module'),
|
||||
],
|
||||
visibility = [
|
||||
'//instrumentation_tests/com/facebook/react/...',
|
||||
|
|
|
@ -0,0 +1,41 @@
|
|||
LOCAL_PATH := $(call my-dir)
|
||||
|
||||
include $(CLEAR_VARS)
|
||||
|
||||
LOCAL_MODULE := libreactnativefb
|
||||
|
||||
LOCAL_SRC_FILES := \
|
||||
Instance.cpp \
|
||||
JSCExecutor.cpp \
|
||||
JSCHelpers.cpp \
|
||||
JSCLegacyProfiler.cpp \
|
||||
JSCLegacyTracing.cpp \
|
||||
JSCMemory.cpp \
|
||||
JSCPerfStats.cpp \
|
||||
JSCTracing.cpp \
|
||||
JSCWebWorker.cpp \
|
||||
MethodCall.cpp \
|
||||
ModuleRegistry.cpp \
|
||||
NativeToJsBridge.cpp \
|
||||
Platform.cpp \
|
||||
Value.cpp \
|
||||
|
||||
LOCAL_C_INCLUDES := $(LOCAL_PATH)/..
|
||||
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_C_INCLUDES)
|
||||
|
||||
LOCAL_CFLAGS := \
|
||||
-DLOG_TAG=\"ReactNative\"
|
||||
|
||||
LOCAL_CFLAGS += -Wall -Werror -fexceptions -frtti
|
||||
CXX11_FLAGS := -std=c++11
|
||||
LOCAL_CFLAGS += $(CXX11_FLAGS)
|
||||
LOCAL_EXPORT_CPPFLAGS := $(CXX11_FLAGS)
|
||||
|
||||
LOCAL_SHARED_LIBRARIES := libfb libfolly_json libjsc libglog
|
||||
|
||||
include $(BUILD_STATIC_LIBRARY)
|
||||
|
||||
$(call import-module,fb)
|
||||
$(call import-module,folly)
|
||||
$(call import-module,jsc)
|
||||
$(call import-module,glog)
|
|
@ -56,13 +56,14 @@ elif THIS_IS_FBOBJC:
|
|||
|
||||
cxx_library(
|
||||
name = 'module',
|
||||
header_namespace = 'cxxreact',
|
||||
force_static = True,
|
||||
exported_headers = [
|
||||
'CxxModule.h',
|
||||
'FollySupport.h',
|
||||
'JsArgumentHelpers.h',
|
||||
'JsArgumentHelpers-inl.h',
|
||||
],
|
||||
header_namespace = 'cxxreact',
|
||||
deps = [
|
||||
'//xplat/folly:molly',
|
||||
],
|
|
@ -0,0 +1,21 @@
|
|||
// Copyright 2004-present Facebook. All Rights Reserved.
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <folly/FBString.h>
|
||||
#include <string>
|
||||
|
||||
namespace facebook {
|
||||
namespace react {
|
||||
namespace detail {
|
||||
// TODO(cjhopman): Once folly is updated, remove these.
|
||||
|
||||
inline std::string toStdString(std::string&& str) {
|
||||
return std::move(str);
|
||||
}
|
||||
|
||||
inline std::string toStdString(folly::fbstring&& str) {
|
||||
return str.toStdString();
|
||||
}
|
||||
|
||||
}}}
|
|
@ -14,6 +14,7 @@
|
|||
#include <folly/Conv.h>
|
||||
#include <sys/time.h>
|
||||
|
||||
#include "FollySupport.h"
|
||||
#include "JSCHelpers.h"
|
||||
#include "Platform.h"
|
||||
#include "SystraceSection.h"
|
||||
|
@ -139,7 +140,7 @@ JSCExecutor::JSCExecutor(std::shared_ptr<ExecutorDelegate> delegate,
|
|||
SystraceSection t("setGlobalVariable");
|
||||
setGlobalVariable(
|
||||
"__fbBatchedBridgeConfig",
|
||||
folly::make_unique<JSBigStdString>(folly::toJson(config)));
|
||||
folly::make_unique<JSBigStdString>(detail::toStdString(folly::toJson(config))));
|
||||
}
|
||||
|
||||
JSCExecutor::JSCExecutor(
|
|
@ -2,12 +2,11 @@
|
|||
|
||||
#include "JSCWebWorker.h"
|
||||
|
||||
#include <unistd.h>
|
||||
|
||||
#include <condition_variable>
|
||||
#include <mutex>
|
||||
#include <unordered_map>
|
||||
|
||||
#include <glog/logging.h>
|
||||
#include <folly/Memory.h>
|
||||
|
||||
#include "JSCHelpers.h"
|
||||
|
@ -15,6 +14,8 @@
|
|||
#include "Platform.h"
|
||||
#include "Value.h"
|
||||
|
||||
#include <glog/logging.h>
|
||||
|
||||
#include <JavaScriptCore/JSValueRef.h>
|
||||
|
||||
namespace facebook {
|
|
@ -5,7 +5,10 @@
|
|||
#include <folly/Conv.h>
|
||||
#include <folly/dynamic.h>
|
||||
|
||||
#include "FollySupport.h"
|
||||
|
||||
#include <exception>
|
||||
#include <string>
|
||||
|
||||
// When building a cross-platform module for React Native, arguments passed
|
||||
// from JS are represented as a folly::dynamic. This class provides helpers to
|
||||
|
@ -97,7 +100,7 @@ inline double jsArgAsDouble(const folly::dynamic& args, size_t n) {
|
|||
// Extract the n'th arg from the given dynamic, as a string. Throws a
|
||||
// JsArgumentException if this fails for some reason.
|
||||
inline std::string jsArgAsString(const folly::dynamic& args, size_t n) {
|
||||
return jsArgN(args, n, &folly::dynamic::asString);
|
||||
return facebook::react::detail::toStdString(jsArgN(args, n, &folly::dynamic::asString));
|
||||
}
|
||||
|
||||
}}
|
|
@ -147,8 +147,9 @@ void NativeToJsBridge::callFunction(
|
|||
const std::string& methodId,
|
||||
const folly::dynamic& arguments,
|
||||
const std::string& tracingName) {
|
||||
int systraceCookie = -1;
|
||||
#ifdef WITH_FBSYSTRACE
|
||||
int systraceCookie = m_systraceCookie++;
|
||||
systraceCookie = m_systraceCookie++;
|
||||
FbSystraceAsyncFlow::begin(
|
||||
TRACE_TAG_REACT_CXX_BRIDGE,
|
||||
tracingName.c_str(),
|
||||
|
@ -173,8 +174,9 @@ void NativeToJsBridge::callFunction(
|
|||
|
||||
void NativeToJsBridge::invokeCallback(ExecutorToken executorToken, const double callbackId,
|
||||
const folly::dynamic& arguments) {
|
||||
int systraceCookie = -1;
|
||||
#ifdef WITH_FBSYSTRACE
|
||||
int systraceCookie = m_systraceCookie++;
|
||||
systraceCookie = m_systraceCookie++;
|
||||
FbSystraceAsyncFlow::begin(
|
||||
TRACE_TAG_REACT_CXX_BRIDGE,
|
||||
"<callback>",
|
Загрузка…
Ссылка в новой задаче