1--- android/CMakeLists.txt 2+++ android/CMakeLists.txt 3@@ -40,13 +40,13 @@ 4 "${PROJECT_SOURCE_DIR}/cpp/rnskia-android/RNSkOpenGLCanvasProvider.cpp" 5 "${PROJECT_SOURCE_DIR}/cpp/rnskia-android/SkiaOpenGLRenderer.cpp" 6 7- "${PROJECT_SOURCE_DIR}/cpp/jsi/JsiHostObject.cpp" 8+ "${PROJECT_SOURCE_DIR}/../cpp/jsi/JsiHostObject.cpp" 9 10- "${PROJECT_SOURCE_DIR}/cpp/rnskia/RNSkManager.cpp" 11- "${PROJECT_SOURCE_DIR}/cpp/rnskia/RNSkJsView.cpp" 12- "${PROJECT_SOURCE_DIR}/cpp/rnskia/RNSkDispatchQueue.cpp" 13+ "${PROJECT_SOURCE_DIR}/../cpp/rnskia/RNSkManager.cpp" 14+ "${PROJECT_SOURCE_DIR}/../cpp/rnskia/RNSkJsView.cpp" 15+ "${PROJECT_SOURCE_DIR}/../cpp/rnskia/RNSkDispatchQueue.cpp" 16 17- "${PROJECT_SOURCE_DIR}/cpp/api/third_party/CSSColorParser.cpp" 18+ "${PROJECT_SOURCE_DIR}/../cpp/api/third_party/CSSColorParser.cpp" 19 20 ) 21 22@@ -60,28 +60,28 @@ 23 "${NODE_MODULES_DIR}/react-native/ReactCommon/react/nativemodule/core" 24 "${NODE_MODULES_DIR}/react-native/ReactAndroid/src/main/java/com/facebook/react/turbomodule/core/jni" 25 26- cpp/skia/include/config/ 27- cpp/skia/include/core/ 28- cpp/skia/include/effects/ 29- cpp/skia/include/utils/ 30- cpp/skia/include/pathops/ 31- cpp/skia/modules/ 32- cpp/skia/include/ 33- cpp/skia 34- 35- cpp/api 36- cpp/jsi 37- cpp/jni/include 38- cpp/rnskia-android 39- cpp/rnskia 40- cpp/rnskia/values 41- cpp/utils 42+ ${PROJECT_SOURCE_DIR}/../cpp/skia/include/config/ 43+ ${PROJECT_SOURCE_DIR}/../cpp/skia/include/core/ 44+ ${PROJECT_SOURCE_DIR}/../cpp/skia/include/effects/ 45+ ${PROJECT_SOURCE_DIR}/../cpp/skia/include/utils/ 46+ ${PROJECT_SOURCE_DIR}/../cpp/skia/include/pathops/ 47+ ${PROJECT_SOURCE_DIR}/../cpp/skia/modules/ 48+ ${PROJECT_SOURCE_DIR}/../cpp/skia/include/ 49+ ${PROJECT_SOURCE_DIR}/../cpp/skia 50+ 51+ ${PROJECT_SOURCE_DIR}/../cpp/api 52+ ${PROJECT_SOURCE_DIR}/../cpp/jsi 53+ ${PROJECT_SOURCE_DIR}/cpp/jni/include 54+ ${PROJECT_SOURCE_DIR}/cpp/rnskia-android 55+ ${PROJECT_SOURCE_DIR}/../cpp/rnskia 56+ ${PROJECT_SOURCE_DIR}/../cpp/rnskia/values 57+ ${PROJECT_SOURCE_DIR}/../cpp/utils 58 59 ${libfbjni_include_DIRS} 60 ) 61 62 # Import prebuilt SKIA libraries 63-set (SKIA_LIBS_PATH "${CMAKE_CURRENT_SOURCE_DIR}/../libs/android/${ANDROID_ABI}") 64+set (SKIA_LIBS_PATH "${CMAKE_CURRENT_SOURCE_DIR}/../../../../common/libs/${ANDROID_ABI}") 65 add_library(skia STATIC IMPORTED) 66 set_property(TARGET skia PROPERTY IMPORTED_LOCATION "${SKIA_LIBS_PATH}/libskia.a") 67 68--- android/build.gradle 69+++ android/build.gradle 70@@ -43,13 +43,17 @@ 71 throw new GradleException("React-Native-Skia: Failed to find node_modules/ path!") 72 } 73 74-def nodeModules = findNodeModules(projectDir) 75+def nodeModules = Paths.get(projectDir.getPath(), '../../../../../..', 'react-native-lab').toString() 76 logger.warn("react-native-skia: node_modules/ found at: ${nodeModules}") 77 78 def sourceBuild = false 79 def defaultDir = null 80 def androidSourcesDir = null 81 def androidSourcesName = 'React Native sources' 82+def reactNativeArchitectures() { 83+ def value = project.getProperties().get("reactNativeArchitectures") 84+ return value ? value.split(",") : ["armeabi-v7a", "x86", "x86_64", "arm64-v8a"] 85+} 86 87 def buildType = "debug" 88 tasks.all({ task -> 89@@ -77,7 +81,7 @@ 90 } 91 92 def prebuiltDir = sourceBuild 93- ? "$nodeModules/react-native/ReactAndroid/src/main/jni/prebuilt/lib" 94+ ? Paths.get(findProject(":ReactAndroid").getProjectDir().toString(), "build", "intermediates", "library_*", "*", "jni") 95 : "$buildDir/react-native-0*/jni" 96 97 98@@ -119,7 +123,7 @@ 99 externalNativeBuild { 100 cmake { 101 cppFlags "-fexceptions", "-frtti", "-std=c++1y", "-DONANDROID" 102- abiFilters 'x86', 'x86_64', 'armeabi-v7a', 'arm64-v8a' 103+ abiFilters (*reactNativeArchitectures()) 104 arguments '-DANDROID_STL=c++_shared', 105 "-DREACT_NATIVE_VERSION=${REACT_NATIVE_VERSION}", 106 "-DNODE_MODULES_DIR=${nodeModules}", 107@@ -190,8 +194,10 @@ 108 } else { 109 // React Native >= 0.69 110 def rnAarMatcher = "**/react-native/**/*${buildType}.aar" 111- def rnAAR = fileTree("${nodeModules}/react-native/android").matching({ it.include rnAarMatcher }).singleFile 112- extractJNI(files(rnAAR)) 113+ def rnAAR = fileTree("${nodeModules}/react-native/android").matching({ it.include rnAarMatcher }) 114+ if (rnAAR.any()) { 115+ extractJNI(files(rnAAR)) 116+ } 117 } 118 } 119 120@@ -256,4 +262,16 @@ 121 afterEvaluate { 122 nativeBuildDependsOn(extractAARHeaders, null) 123 nativeBuildDependsOn(extractJNIFiles, null) 124-} 125\ No newline at end of file 126+} 127+ 128+tasks.whenTaskAdded { task -> 129+ if (!task.name.contains("Clean") && (task.name.contains('externalNativeBuild') || task.name.startsWith('configureCMake'))) { 130+ if (sourceBuild) { 131+ def currentBuildType = task.name.endsWith('Debug') ? 'Debug' : 'Release' 132+ task.dependsOn(":ReactAndroid:copy${currentBuildType}JniLibsProjectOnly") 133+ } 134+ } else if (task.name.startsWith('generateJsonModel') && sourceBuild) { 135+ def currentBuildType = task.name.endsWith('Debug') ? 'Debug' : 'Release' 136+ task.dependsOn(":ReactAndroid:copy${currentBuildType}JniLibsProjectOnly") 137+ } 138+} 139