Move react_render_debug to be consumed via prefab (#34802)

Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/34802

This removes the old way of consuming `libreact_render_debug.so` from
`Android-prebuilt.cmake` to using Prefab which is natively supported
by the Android pipeline.

Changelog:
[Internal] [Changed] - Move `react_render_debug` to be consumed via prefab

Reviewed By: cipolleschi

Differential Revision: D39849622

fbshipit-source-id: 45451dfe92ecce94d1b466094baae05a75ed803f
This commit is contained in:
Nicola Corti
2022-09-27 09:30:50 -07:00
committed by Facebook GitHub Bot
parent 80b8cefb26
commit 49b14cc603
6 changed files with 45 additions and 12 deletions
+33 -3
View File
@@ -19,9 +19,12 @@ plugins {
}
import com.facebook.react.tasks.internal.*
import com.facebook.react.tasks.internal.utils.*
import java.nio.file.Paths
import kotlin.Pair
import de.undercouch.gradle.tasks.download.Download
import org.apache.tools.ant.taskdefs.condition.Os
import org.apache.tools.ant.filters.ReplaceTokens
@@ -48,8 +51,25 @@ def dependenciesPath = System.getenv("REACT_NATIVE_DEPENDENCIES")
// and the build will use that.
def boostPath = dependenciesPath ?: System.getenv("REACT_NATIVE_BOOST_PATH")
// Setup build type for NDK, supported values: {debug, release}
def nativeBuildType = System.getenv("NATIVE_BUILD_TYPE") ?: "release"
// By setting REACT_NATIVE_SKIP_PREFAB we can skip prefab publishing, to
// reduce the size of the React Native published .AAR.
def skipPrefabPublishing = System.getenv("REACT_NATIVE_SKIP_PREFAB") != null
def prefabHeadersDir = project.file("$buildDir/prefab-headers")
final def preparePrefab = tasks.register("preparePrefab", PreparePrefabHeadersTask) {
// To export to a ReactNativePrefabProcessingEntities.kt once all
// libraries have been moved. We keep it here for now as it make easier to
// migrate one library at a time.
it.input.set(
[
new PrefabPreprocessingEntry(
"react_render_debug",
new Pair("../ReactCommon/react/renderer/debug/", "react/renderer/debug/")
)
]
)
it.outputDir.set(prefabHeadersDir)
}
// We put the publishing version from gradle.properties inside ext. so other
// subprojects can access it as well.
@@ -300,7 +320,9 @@ android {
"reactperfloggerjni",
"react_newarchdefaults",
"turbomodulejsijni",
"fabricjni"
"fabricjni",
// prefab targets
"react_render_debug"
}
}
ndk {
@@ -334,6 +356,7 @@ android {
preBuild.dependsOn(prepareJSC, prepareBoost, prepareDoubleConversion, prepareFmt, prepareFolly, prepareGlog, prepareLibevent, extractNativeDependencies)
preBuild.dependsOn("generateCodegenArtifactsFromSchema")
preBuild.dependsOn(preparePrefab)
sourceSets.main {
res.srcDirs = ["src/main/res/devsupport", "src/main/res/shell", "src/main/res/views/modal", "src/main/res/views/uimanager"]
@@ -366,6 +389,13 @@ android {
buildFeatures {
prefab true
prefabPublishing !skipPrefabPublishing
}
prefab {
react_render_debug {
headers(new File(prefabHeadersDir, "react_render_debug").absolutePath)
}
}
publishing {
@@ -124,14 +124,6 @@ target_include_directories(react_render_core
${REACT_COMMON_DIR}
${REACT_COMMON_DIR}/react/renderer/core)
## react_render_debug
add_library(react_render_debug SHARED IMPORTED GLOBAL)
set_target_properties(react_render_debug
PROPERTIES
IMPORTED_LOCATION
${REACT_NDK_EXPORT_DIR}/${ANDROID_ABI}/libreact_render_debug.so)
target_include_directories(react_render_debug INTERFACE ${REACT_COMMON_DIR}/react/renderer/debug)
## react_debug
add_library(react_debug SHARED IMPORTED GLOBAL)
set_target_properties(react_debug
@@ -39,6 +39,10 @@ target_include_directories(${CMAKE_PROJECT_NAME}
target_compile_options(${CMAKE_PROJECT_NAME} PRIVATE -Wall -Werror -fexceptions -frtti -std=c++17 -DWITH_INSPECTOR=1 -DLOG_TAG=\"ReactNative\")
# Prefab packages
find_package(ReactAndroid REQUIRED CONFIG)
add_library(react_render_debug ALIAS ReactAndroid::react_render_debug)
target_link_libraries(${CMAKE_PROJECT_NAME}
fabricjni
fbjni
@@ -51,7 +55,7 @@ target_link_libraries(${CMAKE_PROJECT_NAME}
react_newarchdefaults
react_render_componentregistry
react_render_core
react_render_debug
react_render_debug # prefab ready
react_render_graphics
react_render_mapbuffer
rrc_view
@@ -191,6 +191,9 @@ android {
]
}
}
buildFeatures {
prefab true
}
packagingOptions {
pickFirst '**/libhermes.so'
pickFirst '**/libjsc.so'
+1
View File
@@ -197,6 +197,7 @@ if (isCommitly) {
}
// -------- Generating Android Artifacts
env.REACT_NATIVE_SKIP_PREFAB = true;
if (exec('./gradlew :ReactAndroid:installArchives').code) {
echo('Could not generate artifacts');
exit(1);
+3
View File
@@ -167,6 +167,9 @@ android {
path "$projectDir/src/main/jni/CMakeLists.txt"
}
}
buildFeatures {
prefab true
}
def reactAndroidProjectDir = project(':ReactAndroid').projectDir
def packageReactNdkDebugLibs = tasks.register("packageReactNdkDebugLibs", Copy) {
dependsOn(":ReactAndroid:packageReactNdkDebugLibsForBuck")