Android基于JNA集成調(diào)用第三方C/C++的so庫(kù)
(1)引入JNA。
基于JNA開(kāi)源項(xiàng)目,JNA對(duì)Android NDK的封裝,簡(jiǎn)化Android層JNI集成調(diào)用C/C++的so庫(kù)。
GitHub - java-native-access/jna: Java Native AccessJava Native Access. Contribute to java-native-access/jna development by creating an account on GitHub.https://github.com/java-native-access/jna
在Android的app的build.gradle添加引用:
implementation group: 'net.java.dev.jna', name: 'jna', version: '5.13.0'
這里可以直接添加JNA最新版本:
https://mvnrepository.com/artifact/net.java.dev.jna/jnahttps://mvnrepository.com/artifact/net.java.dev.jna/jna
在app的build.gradle的android塊內(nèi)設(shè)置jniLibs.srcDir:
sourceSets {
main {
jniLibs.srcDir 'libs'
}
}
(2)在?jna/dist at master · java-native-access/jna · GitHub? 這里下載?android-aarch64.jar
因?yàn)槲疫@里基于arm64-v8a架構(gòu)。如果是armv7,選擇相應(yīng)的jar包。
下載后,解壓android-aarch64.jar,里面是libjnidispatch.so文件,把這個(gè)文件放入app\libs\arm64-v8a下面
(3)以上準(zhǔn)備工作完成后,開(kāi)始集成第三方so庫(kù)。
把第三方so庫(kù)放入app\libs\arm64-v8a下
(4)開(kāi)始調(diào)用第三方so庫(kù)中的C/C++函數(shù)。寫(xiě)上層Java代碼。
?注意Native.load()里面對(duì)應(yīng)的so庫(kù)名,so庫(kù)名一般以libxxx.so開(kāi)頭,但是在Native.load里面,不要帶上lib和結(jié)尾的.so后綴名,即去掉開(kāi)頭lib和結(jié)尾的.so。
在CLibrary里面定義的接口函數(shù),即為libxxx.so第三方庫(kù)里面完成的函數(shù)。
(5)在Android層直接使用:
文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-433609.html
Android基于JNA加載第三方.so庫(kù)報(bào)錯(cuò):java.lang.UnsatisfiedLinkError Native library (com/sun/jna/android-aarch64/l_zhangphil的博客-CSDN博客基于Windows平臺(tái),Android NDK(JNI)開(kāi)發(fā)技術(shù)》【摘要】本文介紹如何基于Windows平臺(tái),在Eclipse中使用Android NDK技術(shù)實(shí)現(xiàn)“Android平臺(tái)上的JNI ( Java Native Interface ) ”開(kāi)發(fā)。新增的getStringCpp()是新增的一個(gè)方法,因?yàn)闆](méi)有實(shí)現(xiàn)所以報(bào)紅。解壓后,里面是一個(gè)libjnidispatch.so,把libjnidispatch.so放到Android項(xiàng)目的libs\arm64-v8a\里面即可。https://blog.csdn.net/zhangphil/article/details/130400296文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-433609.html
到了這里,關(guān)于Android基于JNA集成調(diào)用第三方C/C++的so庫(kù)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!