java.lang.UnsatisfiedLinkError: No implementation found in library module

I am trying to build a library(sdk/aar) which uses native code within library. But I am getting error like ‘java.lang.UnsatisfiedLinkError: No implementation found’ for my native functions declared in library class.

package com.abc.android.count_ai

class CountActivity : BaseActivity(), CameraBridgeViewBase.CvCameraViewListener2 {

//these functions is in red color and showing wrong package name to resolve
//Cannot resolve corresponding JNI function 
//Java_com_abc_android_count_1ai_CountActivity_detection.
    private external fun detection(img: Long, cPath: String, wPath: 
            String, frameInfo: CFrameInfo)

    private external fun isBlurry(img: Long, threshold: Double): Boolean

}


//BaseActivity where 
package com.abc.android.count_ai;

import android.os.Bundle;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;

public class BaseActivity extends AppCompatActivity {

    static {
        System.loadLibrary("native-lib");
    }

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    }
}


>native-lib.cpp
#include <jni.h>
#include <android/log.h>
#include <opencv2/core/core.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <iostream>
#include <fstream>
#include <algorithm>
#include <string>
#import <opencv2/opencv.hpp>
#import <opencv2/dnn/dnn.hpp>
#include <android/asset_manager.h>

#define TAG "NativeLib"

using namespace std;
using namespace cv;

extern "C" {
void JNIEXPORT Java_com_abc_android_count_ai_CountActivity_detection(JNIEnv *env, jobject instance,
                                                                                     jlong imgAddr, jstring cPath, jstring wPath, jobject frameInfo) {

}

jboolean JNICALL Java_com_abc_android_count_ai_CountActivity_isBlurry(JNIEnv *env, jobject instance, jlong imgAddr, jdouble blurThreshold) {

}

}

App works file if I put all library code into main module. But if I put cpp code and android code into a library project and call its class from main module’s MainActivity the it give me above error. Project is building fine but This error comes when I try to call those native methods into library project.

Means cpp is not working in case of library module and I have to distribute those functions as a SDK.

build.gradle(:count_ai)
Commented code has been tried.

plugins {
    id 'com.android.library'
    id 'kotlin-android'
}

android {

    compileSdk 31

    packagingOptions {
        pickFirst '/lib/armeabi-v7a/libopencv_java4.so'
        pickFirst '/lib/arm64-v8a/libopencv_java4.so'
        pickFirst '/lib/x86/libopencv_java4.so'
        pickFirst '/lib/x86_64/libopencv_java4.so'
    }
    defaultConfig {
        minSdk 21
        targetSdk 31
        versionCode 1
        versionName "1.0"

        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
        externalNativeBuild {
            cmake {
                cppFlags "-frtti -fexceptions"
                abiFilters 'armeabi-v7a', 'arm64-v8a', 'x86', 'x86_64'
                arguments "-DOpenCV_DIR=" + opencvsdk + "/sdk/native"
            }
        }
    }
   
    /*sourceSets {
        main {
            // The libs directory contains prebuilt libraries that are used by the
            // app's library defined in CMakeLists.txt via an IMPORTED target.
            jniLibs.srcDirs = [opencvsdk + '/sdk/native/libs']
        }
    }*/

    /*externalNativeBuild {
        cmake {
            path "src/main/cpp/CMakeLists.txt"
            version "3.10.2"
        }
    }*/

    /*sourceSets {
        main {
            jniLibs.srcDirs = [opencvsdk + '/sdk/native/libs']
            java.srcDirs = [project.projectDir.toString() + '/src']
            aidl.srcDirs = [project.projectDir.toString() + '/src']
            res.srcDirs = [project.projectDir.toString() + '/src/main/res']
            manifest.srcFile project.projectDir.toString() + '/src/main/AndroidManifest.xml'
        }
    }*/
    println 'ProjectDir in contours:'+project.projectDir.toString()
    externalNativeBuild {
        cmake {
            path (project.projectDir.toString() + '/src/main/cpp/CMakeLists.txt')
            version "3.10.2"
        }
    }
}

dependencies {
    implementation 'androidx.core:core-ktx:1.8.0'
    implementation 'androidx.appcompat:appcompat:1.4.2'
    implementation project(':opencv')

}

CMakeLists.txt

cmake_minimum_required(VERSION 3.4.1)

include_directories(${OpenCV_DIR}/jni/include)
add_library( lib_opencv SHARED IMPORTED )
set_target_properties(lib_opencv PROPERTIES IMPORTED_LOCATION ${OpenCV_DIR}/libs/${ANDROID_ABI}/libopencv_java4.so)

add_library(
        native-lib

             SHARED

        native-lib.cpp)

find_library(
              log-lib
    
              log )
    
target_link_libraries( # Specifies the target library.
                       native-lib

                       lib_opencv

                       # Links the target library to the log library
                       # included in the NDK.
                       ${log-lib} )