From 0c1e009ad98bd078fb06d2495be7685165e3ba4e Mon Sep 17 00:00:00 2001 From: Pieter De Baets Date: Mon, 15 May 2017 07:47:00 -0700 Subject: [PATCH] Disable SamplingProfiler for OSS builds Summary: It depends on symbols that are not available. Closes https://github.com/facebook/react-native/pull/13950 Reviewed By: cwdick Differential Revision: D5053724 Pulled By: javache fbshipit-source-id: 9d5676ce5e4ad3ceeb20aeb8c48429319d48799e --- .../devsupport/DevSupportManagerImpl.java | 13 ++-- .../facebook/react/packagerconnection/BUCK | 8 ++- .../src/main/jni/packagerconnection/BUCK | 61 ++++++++++--------- .../SamplingProfilerJniMethod.cpp | 3 + .../SamplingProfilerJniMethod.h | 4 +- 5 files changed, 49 insertions(+), 40 deletions(-) diff --git a/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevSupportManagerImpl.java b/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevSupportManagerImpl.java index 816ddcdf2..f5a28a66d 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevSupportManagerImpl.java +++ b/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevSupportManagerImpl.java @@ -45,7 +45,7 @@ import com.facebook.react.devsupport.interfaces.StackFrame; import com.facebook.react.modules.debug.interfaces.DeveloperSettings; import com.facebook.react.packagerconnection.JSPackagerClient; import com.facebook.react.packagerconnection.Responder; -import com.facebook.react.packagerconnection.SamplingProfilerPackagerMethod; +import com.facebook.react.packagerconnection.RequestHandler; import java.io.File; import java.io.IOException; @@ -699,9 +699,14 @@ public class DevSupportManagerImpl implements responder.error("JSCContext is missing, unable to profile"); return; } - SamplingProfilerPackagerMethod method = - new SamplingProfilerPackagerMethod(mCurrentContext.getJavaScriptContext()); - method.onRequest(null, responder); + try { + long jsContext = mCurrentContext.getJavaScriptContext(); + Class clazz = Class.forName("com.facebook.react.packagerconnection.SamplingProfilerPackagerMethod"); + RequestHandler handler = (RequestHandler)clazz.getConstructor(long.class).newInstance(jsContext); + handler.onRequest(null, responder); + } catch (Exception e) { + // Module not present + } } }); } diff --git a/ReactAndroid/src/main/java/com/facebook/react/packagerconnection/BUCK b/ReactAndroid/src/main/java/com/facebook/react/packagerconnection/BUCK index 0fd14faba..4202a2782 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/packagerconnection/BUCK +++ b/ReactAndroid/src/main/java/com/facebook/react/packagerconnection/BUCK @@ -2,7 +2,10 @@ include_defs("//ReactAndroid/DEFS") android_library( name = "packagerconnection", - srcs = glob(["**/*.java"]), + srcs = glob( + ["**/*.java"], + excludes = ["SamplingProfilerPackagerMethod.java"] if IS_OSS_BUILD else [], + ), visibility = [ "PUBLIC", ], @@ -17,6 +20,5 @@ android_library( react_native_dep("third-party/java/okhttp:okhttp3-ws"), react_native_dep("third-party/java/okio:okio"), react_native_target("java/com/facebook/react/modules/systeminfo:systeminfo-moduleless"), - react_native_target("jni/packagerconnection:jni"), - ], + ] + ([react_native_target("jni/packagerconnection:jni")] if not IS_OSS_BUILD else []), ) diff --git a/ReactAndroid/src/main/jni/packagerconnection/BUCK b/ReactAndroid/src/main/jni/packagerconnection/BUCK index 2f0debd6f..b229550b9 100644 --- a/ReactAndroid/src/main/jni/packagerconnection/BUCK +++ b/ReactAndroid/src/main/jni/packagerconnection/BUCK @@ -1,32 +1,33 @@ include_defs("//ReactAndroid/DEFS") -cxx_library( - name = "jni", - srcs = glob(["*.cpp"]), - compiler_flags = [ - "-Wall", - "-Werror", - "-fexceptions", - "-std=c++1y", - "-frtti", - ], - header_namespace = "", - headers = glob( - ["*.h"], - ), - preprocessor_flags = [ - "-DLOG_TAG=\"PackagerConnectionJNI\"", - "-DWITH_FBSYSTRACE=1", - "-DWITH_INSPECTOR=1", - ], - soname = "libpackagerconnectionjnifb.$(ext)", - visibility = [ - "PUBLIC", - ], - xcode_public_headers_symlinks = True, - deps = JSC_DEPS + [ - FBJNI_TARGET, - "//xplat/folly:molly", - react_native_xplat_target("jschelpers:jschelpers"), - ] if not IS_OSS_BUILD else [], -) +if not IS_OSS_BUILD: + cxx_library( + name = "jni", + srcs = glob(["*.cpp"]), + compiler_flags = [ + "-Wall", + "-Werror", + "-fexceptions", + "-std=c++1y", + "-frtti", + ], + header_namespace = "", + headers = glob( + ["*.h"], + ), + preprocessor_flags = [ + "-DLOG_TAG=\"PackagerConnectionJNI\"", + "-DWITH_FBSYSTRACE=1", + "-DWITH_INSPECTOR=1", + ], + soname = "libpackagerconnectionjnifb.$(ext)", + visibility = [ + "PUBLIC", + ], + xcode_public_headers_symlinks = True, + deps = JSC_DEPS + [ + FBJNI_TARGET, + "//xplat/folly:molly", + react_native_xplat_target("jschelpers:jschelpers"), + ] + ) diff --git a/ReactAndroid/src/main/jni/packagerconnection/SamplingProfilerJniMethod.cpp b/ReactAndroid/src/main/jni/packagerconnection/SamplingProfilerJniMethod.cpp index 3d4eb28ac..738d3e4fa 100644 --- a/ReactAndroid/src/main/jni/packagerconnection/SamplingProfilerJniMethod.cpp +++ b/ReactAndroid/src/main/jni/packagerconnection/SamplingProfilerJniMethod.cpp @@ -2,6 +2,9 @@ #include "SamplingProfilerJniMethod.h" +#include + +#include #include #include diff --git a/ReactAndroid/src/main/jni/packagerconnection/SamplingProfilerJniMethod.h b/ReactAndroid/src/main/jni/packagerconnection/SamplingProfilerJniMethod.h index 070b27124..da83ec4cf 100644 --- a/ReactAndroid/src/main/jni/packagerconnection/SamplingProfilerJniMethod.h +++ b/ReactAndroid/src/main/jni/packagerconnection/SamplingProfilerJniMethod.h @@ -1,9 +1,7 @@ // Copyright 2004-present Facebook. All Rights Reserved. -#include -#include #include -#include +#include #include "JSPackagerClientResponder.h"