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