NDK33_最全排查UnsatisfiedLinkError: No implementation found

NDK开发汇总
报错:No implementation found for java.lang.String

问题排查

  1. build.gradle配置 abiFilters ‘armeabi-v7a’
android {
			...
			defaultConfig {
       		 ...
	       		 externalNativeBuild {
       	    		 cmake {
              			  cppFlags ""
              			  abiFilters 'armeabi-v7a'
         	   		}
        	}
    	}
    }
  1. CmakeList配置实现方法的cpp路径:add_library
cmake_minimum_required(VERSION 3.4.1)

# 引入指定目录下的CMakeLists.txt
add_subdirectory(src/main/cpp/librtmp)

add_library(
             native-lib

             SHARED

             src/main/cpp/native-lib.cpp
             src/main/cpp/VideoChannel.cpp)
...
  1. 检查包名路径与c/cpp中静态注册的是否一致
    java路径:com.cn.ray.rtmpdump.LivePusher
    cpp实现方法
#include <jni.h>
#include <string>
#include "safe_queue.h"

extern "C" JNIEXPORT void JNICALL
Java_com_cn_ray_rtmpdump_LivePusher_native_1init(JNIEnv *env, jobject instance) {



}

注意:

  • 引入#include <jni.h>
  • 方法中有_后面带1
  • cpp中实现带extern “C”,extern "C"只针对当前这一个方法
  1. loadLibrary 要在方法调用前(static)加载,注意是 System.loadLibrary
 static {
        System.loadLibrary("native-lib");
    }
  1. 清除缓存
    Clean Project-> Rebuild Project -> Refresh Linked C++ Projects
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值