当前位置:   article > 正文

NDK33_最全排查UnsatisfiedLinkError: No implementation found_android ndk no implementation found for java.lang.

android ndk no implementation found for java.lang.string

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

问题排查

  1. build.gradle配置 abiFilters ‘armeabi-v7a’
android {
			...
			defaultConfig {
       		 ...
	       		 externalNativeBuild {
       	    		 cmake {
              			  cppFlags ""
              			  abiFilters 'armeabi-v7a'
         	   		}
        	}
    	}
    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  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
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  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) {



}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

注意:

  • 引入#include <jni.h>
  • 方法中有_后面带1
  • cpp中实现带extern “C”,extern "C"只针对当前这一个方法
  1. loadLibrary 要在方法调用前(static)加载,注意是 System.loadLibrary
 static {
        System.loadLibrary("native-lib");
    }
  • 1
  • 2
  • 3
  1. 清除缓存
    Clean Project-> Rebuild Project -> Refresh Linked C++ Projects
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Gausst松鼠会/article/detail/236344
推荐阅读
相关标签
  

闽ICP备14008679号