/** * Rapid OCR (https://github.com/RapidAI/RapidOCR) build script (Groovy). * * Created by SuperMonster003 on Sep 19, 2024. */ plugins { id 'org.autojs.build.utils' id 'org.autojs.build.properties' id 'com.android.library' id 'org.jetbrains.kotlin.android' id 'kotlin-parcelize' } ext["projectName"] = "Rapid OCR" def versionMap = [ "OFFICIAL_NAME" : "1.3.0", /* From original build.gradle file. */ "MIN_SDK" : props["MIN_SDK"] as Integer, "COMPILE_SDK" : props["COMPILE_SDK"] as Integer, "TARGET_SDK" : props["TARGET_SDK"] as Integer, "NDK" : props["RAPID_OCR/NDK"], "CMAKE" : props["RAPID_OCR/CMAKE"], "OPENCV_MOBILE" : props["RAPID_OCR/OPENCV_MOBILE"], "OPENCV_MOBILE_LABEL": props["RAPID_OCR/OPENCV_MOBILE_LABEL"], "ONNX" : props["RAPID_OCR/ONNX"], "ONNX_RUNTIME" : props["RAPID_OCR/ONNX_RUNTIME"], ] def nameMap = [ "PROJECT" : ext["projectName"], "OPENCV_MOBILE" : "OpenCV Mobile", "OPENCV_MOBILE_LABEL": "OpenCV Mobile Label", "ONNX" : "Onnx", "ONNX_RUNTIME" : "Onnx Runtime", "NDK" : "NDK", "CMAKE" : "Cmake", ] def libsToDeploy = [ utils.newLibDeployer(project, nameMap.OPENCV_MOBILE, "https://github.com/nihui/opencv-mobile/releases/download" + "/v${versionMap.OPENCV_MOBILE_LABEL}/opencv-mobile-${versionMap.OPENCV_MOBILE}-android.zip") .setSourceDir("/opencv-mobile-${versionMap.OPENCV_MOBILE}-android/sdk/native/") .setDestDir("/src/sdk/native/"), utils.newLibDeployer(project, nameMap.ONNX, "https://github.com/RapidAI/RapidOcrOnnx/releases/download" + "/${versionMap.ONNX}/Project_RapidOcrOnnx-${versionMap.ONNX}.7z") .setSourceDir("/Project_RapidOcrOnnx-${versionMap.ONNX}/models/") .setDestDir("/src/main/assets/models/"), utils.newLibDeployer(project, nameMap.ONNX_RUNTIME, "https://github.com/RapidAI/OnnxruntimeBuilder/releases/download" + "/${versionMap.ONNX_RUNTIME}/onnxruntime-${versionMap.ONNX_RUNTIME}-android-shared.7z") .setSourceDir("/onnxruntime-shared/") .setDestDir("/src/main/onnxruntime-shared/"), ] utils.configureLibraryLifecycleHooks(project, nameMap.PROJECT, [ "OPENCV_MOBILE", "OPENCV_MOBILE_LABEL", "ONNX", "ONNX_RUNTIME", "NDK", "CMAKE", ].collect { "${nameMap[it]}: ${versionMap[it]}" }, libsToDeploy, "isCleanupRapidOcr", [".cxx"]) android { namespace = "com.benjaminwan.ocrlibrary" ndkVersion versionMap.NDK compileSdk versionMap.COMPILE_SDK defaultConfig { minSdk versionMap.MIN_SDK targetSdk versionMap.TARGET_SDK versionName versionMap.OFFICIAL_NAME testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" consumerProguardFiles "consumer-rules.pro" externalNativeBuild { cmake { abiFilters 'armeabi-v7a', 'arm64-v8a', 'x86_64', 'x86' } } } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } } compileOptions { sourceCompatibility = JavaVersion.toVersion(project.ext.javaVersion) targetCompatibility = JavaVersion.toVersion(project.ext.javaVersion) } kotlinOptions { jvmTarget = project.ext.javaVersion } externalNativeBuild { cmake { path "src/main/cpp/CMakeLists.txt" version versionMap.CMAKE } } libraryVariants.all { variant -> variant.outputs.all { outputFileName = "${project.name}-${defaultConfig.versionName}-${variant.buildType.name}.aar" } } } dependencies { implementation fileTree(dir: "libs", include: ["*.jar"]) testImplementation libs.junit androidTestImplementation libs.test.ext.junit androidTestImplementation libs.test.espresso.core implementation libs.core.ktx implementation libs.appcompat }