精华内容
下载资源
问答
  • Ubuntu下NDK安卓动态库

    2020-05-12 00:18:43
    sudo gedit /etc/profile 在 profile 文件下面添加,保存并退出 export ANDROID_NDK= ndk 路径 ( ndk 的路径 ) export PATH=ANDROIDNDK:ANDROID_NDK:ANDROIDN​DK:PATH source /etc/profile 3.输入 ndk-build -v ,...

    下载 NDK: https://developer.android.google.cn/ndk/downloads/index.html
    sudo gedit /etc/profile
    在 profile 文件下面添加,保存并退出
    export ANDROID_NDK= ndk 路径 ( ndk 的路径 )
    export PATH=ANDROIDNDK:ANDROID_NDK:PATH
    source /etc/profile
    3.输入 ndk-build -v ,出现一下信息说明 ndk 配置 ok

    新建/home/ubuntu/WorkSpace/HelloNdk “HelloNdk” 文件夹进行测试,在”HelloNdk”目录下新建 jni 目录,将源代码放于 jni 目录下

    编写 Android.mk 文件与 Application.mk 文件,完成后即可进行编译
    Android.mk:

    Application.mk:

    展开全文
  • 提供了一系列的工具,帮助开发者快速开发C(或C++)的动态库,并能自动将so和java应用一起打包成apk.比较简单的说,NDK是一套交叉编译工具,它可以帮你把你用C或C++书写的代码,编译为.so(类似与win下的.dll)格式...

    1、工具介绍

       Cygwin:在windows平台上运行的unix模拟环境
       NDK:Native Development Kit,android平台的一部分.提供了一系列的工具,帮助开发者快速开发C(或C++)的动态库,并能自动将so和java应用一起打包成apk.比较简单的说,NDK是一套交叉编译工具,它可以帮你把你用C或C++书写的代码,编译为.so(类似与win下的.dll)格式的文件,使你可以在你的Android程序当中用Java语言(JNI)调用这些代码
       更多ndk的介绍见:http://blog.sina.com.cn/s/blog_70e6ed3a01019dns.html
       ndk脚本的分析见:http://blog.sina.com.cn/s/blog_70e6ed3a01019ecw.html

        下载ndk Download the NDK
       下载cygwin,选择ftp://mirrors.kernel.org这个镜像,搜索Devel Install安装gcc、make、swig等工具

       ps:如此处忘了安装make,之后编译过程中会找不到make,如何在已安装完成的cygwin中安装make,可参考 http://blog.sina.com.cn/s/blog_70e6ed3a01019dmq.html

       Cygwin安装目录下,找到home/username的目录下的.bash_profile文件,打开文件在最后加上:
       NDK=/cygdrive/d:cygwin/android-ndk-r4-crystax(此为ndk的目录路径)
       export NDK

     

    参考:cygwin下通过ndk交叉编译Android openCV

    2、依赖cygwin的android动态库编译

    cygwin的安装参考网上相关教程。

    ndk找到相应版本解压即可。

    1.编辑cygwin目录下的 home\user(你的用户名)\.bash_profile

    比如我配置了ndk20如下:

    NDKN20=/cygdrive/d/android-ndk-r20 # /Linux/android-develop/android-develop
    export NDKN20

    编译时从cygwin进入android项目的jni文件夹,执行以下命令进行编译:

    $NDKN20/ndk-build.cmd

    注意:一般执行命令没有“.cmd”但是我查看相应目录下只有带cmd的这个文件所以只能执行这个了,可以正常使用。

    参考:Android:搭建NDK环境(Cygwin+android-NDK)

     

    3、不依赖cygwin的Android动态库编译

    NDK在7以后就不需要依赖于cygwin了。

    一.下载安装android-ndk

    下载android-ndk-r10d   windows 版

    解压后放到某目录下 如:D:\sdk\android-ndk-r10d

    高级系统设置中 添加环境变量:

    ANDROID_NDK :   D:\sdk\android-ndk-r10d

    PATH:  %ANDROID_NDK%

    二.写.mk 文件 编译动态库

    项目目录格式:

    项目文件夹--jni--Android.mk

                             --Application.mk

                             --XX.h XX.cpp XX1.cpp XX1.h XX2.cpp XX2.h...

    Android.mk 内容:

    LOCAL_PATH:= $(call my-dir)
    include $(CLEAR_VARS)  
    LOCAL_CPP_EXTENSION := .cpp  
    LOCAL_MODULE:= XX 
    LOCAL_PRELINK_MODULE := true  
    LOCAL_SRC_FILES := XX1.cpp XX2.cpp
    LOCAL_C_INCLUDES += $(LOCAL_PATH)
    LOCAL_CFLAGS := -Wall -std=c++11 
    include $(BUILD_SHARED_LIBRARY) 

    Application.mk 内容:

    APP_ABI:=armeabi-v7a
    APP_STL := stlport_static
    APP_CPPFLAGS +=-fexceptions

    编译通过后与jni并列的文件夹下出现libs和obj文件夹

    include $(BUILD_SHARED_LIBRARY)  生成动态库
    include $(BUILD_STATIC_LIBRARY) 生成静态库

    最后生成目录格式:

     

    项目文件夹--jni

                     --libs

                     --obj

    最后生成的动态库在libs中

    中间文件在obj文件夹中。

    三.注意事项

    1.保证环境变量添加正确

    参考:windows下使用android-ndk编译c++动态库

     

     

    展开全文
  • 前面两篇文章,分别介绍了如何编译opencv-android的库文件: ...以及在VS的跨平台动态库中如何配置opencv: https://blog.csdn.net/Merria28/article/details/102517646 这一篇简单介绍一下,如何生成纯C++...

    前面两篇文章,分别介绍了如何编译opencv-android的库文件:

    https://blog.csdn.net/Merria28/article/details/102517420

    以及在VS的跨平台动态库中如何配置opencv:

    https://blog.csdn.net/Merria28/article/details/102517646

     

    这一篇简单介绍一下,如何生成纯C++动态库和添加opencv的动态库

    我这种搞图像算法的通常借助opencv开源库的一些功能,写成c++算法,两个不在一起搞不行(很多人是在AS中直接调用opencv,我不会用java写算法,只能一步步来了)

     

    使用Visual Studio2019新建项目——跨平台——C++——android——动态共享库,生成so文件。

    其内部可以直接写c++函数,便于c++代码开发。

     

    第一部分: Visual Studio-跨平台编译-android- 动态共享库,生成so文件,供JAVA调用(可以是Android Studio,也可以是Eclipse)

    1. 链接其它.so文件

    #include <math.h> //增加math头文件

    需要添加math的动态库:

    链接器——输入——库依赖项:m

     

    2. 在SharedObject19.cpp中添加测试函数

    extern "C" {

    省略。。。

    float math_test()

    {

    float t = sqrtf(12.f);//使用math.h中的数学函数

    return t;

    }

    }

     

    3. nm -D ***.so 查看so文件的导出符号

     

     

    4. 验证opencv是否可以正常调用

    添加 #include <opencv2/opencv.hpp>

    配置opencv,可参考文章:

    Visual Studio + android + opencv 跨平台生成动态库文件https://blog.csdn.net/Merria28/article/details/102517646

     

    编译出错(原因是添加了opencv头文件):

    错误(活动) E0282 全局范围没有 "acosl" SharedObject19 F:\android\android-ndk-r16-beta1\sources\cxx-stl\llvm-libc++\include\cmath 464

    错误(活动) E0282 全局范围没有 "asinl" SharedObject19 F:\android\android-ndk-r16-beta1\sources\cxx-stl\llvm-libc++\include\cmath 465

    。。。

    后来发现使用VS2019,用自带的sdk,ndk选择android-21,就可以编译通过,原因:

    The answer is - NDK version for SDK 19 doesn't implement the whole C++11 standard in the STL. locale.h header has stubs for localeconv() method, but the library doesn't implement it.The closest Android SDK that implement localeconv() is SDK 21.

    修改方法:属性——配置属性——常规——目标API级别

     

     

    5. 在SharedObject19.cpp中添加opencv相关测试函数

    extern "C" {

    省略。。。

    float math_test()

    {

    float t = sqrtf(12.f);//使用math.h中的数学函数

    return t;

    }

    float opencv_test()

    {

    cv::Mat img = cv::imread("D:\\image\\ocrROI.bmp");

    cv::Scalar mean, stddev;

    cv::meanStdDev(img, mean, stddev);

    float t = mean(0);

    return t;

    }

    }

    编译通过,生成so文件,可以通过第3步查看导出函数。

     

    这部分内容是可以正常生成so文件的,现在回头查看是有问题的:没有提供java可直接调用的接口函数,在android studio中调用时只能通过native c++类型的项目,在native-lib.cpp中再实现java接口,才能成功被调用。具体可参考文章:

    终极篇 C++算法到安卓的移植——AS调用VS的so库 https://blog.csdn.net/Merria28/article/details/102745163

     

     

    第二部分 Android Studio 调用opencv

    这部分内容是直接在AS中调用opencv库的配置。因为用到了就写下来。

    参考链接:https://www.jianshu.com/p/9240d1440051

    这个作者给出的方法可以完全复现。

    这里解释一下,测试部分相关代码添加后,需要在对应的res文件夹下修改一些内容。

     

     

    修改步骤:

    1. imageView变量

    F:\android\AndroidStudioProjects\jianshu-TestOpenCV-master\app\src\main\res\layout\activity_main.xml文件修改,添加如下内容

    <ImageView

    android:id="@+id/imageView"

    android:layout_width="wrap_content"

    android:layout_height="wrap_content"

    app:layout_constraintBottom_toBottomOf="parent"

    app:layout_constraintLeft_toLeftOf="parent"

    app:layout_constraintRight_toRightOf="parent"

    app:layout_constraintTop_toTopOf="parent" />

     

    2. girl变量

    F:\android\AndroidStudioProjects\jianshu-TestOpenCV-master\app\src\main\res\drawable文件夹下

    放入girl.gif的图像文件,girl即图像文件的名称

     

     

     

    展开全文
  • android编译动态链接时,缺省的编译选项下默认所有的符号表都会导出, 这导致别人很容易通过符号表获取动态库里的相关信息。 通过增加-fvisibility=hidden选项有时候能影藏部分符号表,如何根本上解决这个问题呢,...

    android编译动态链接库时,缺省的编译选项下默认所有的符号表都会导出, 这导致别人很容易通过符号表获取动态库里的相关信息。

    通过增加-fvisibility=hidden选项有时候能影藏部分符号表,如何根本上解决这个问题呢,本文介绍的“jni加密器”就能解决此功能。

    1.安装jni加密器:sec.apk

    下载链接:http://apk.91.com/Soft/Android/com.sn.sec-2.html

    2. 把so拷贝到手机上, 用jni加密器打开它,如下图:

    点击打开链接

    3. 设置过滤条件

    点击设置按钮, 对过滤条件进行设置

    例如要对所有包含x264的符号进行加密,在”包含“里输入x264,如果需要保留所有包含java或者com的符号表, 则在”不包含“项填java  com。


    4.加密

    加密后符号表如下图:



    现在所有包含x264的符号全部影藏起来了


    展开全文
  • 安卓动态加载SO文件点击上方“技术支持联盟”,选择“置顶公众号”第一时间了解程序员大小事儿作者:百香果,一个坚持认为Coding能改变世界的程序猿,喜欢分享,望互相学习指正,博客地址:www.devmajun.com。...
  • 1.为什么我使用System.load加载动态库时会抛出动态库文件找不到的的错误,我确保动态库可用,文件路径/名正确,并且具有执行权限。 2.而更加令我不解的是,同一目录下的其他动态库可以正常加载。
  • 6.0及以后 动态库不行,静态库可以 add_library( 7zr SHARED IMPORTED ) 备注:( 库名:例如你导入的动态库为lib7zr.so 就去掉lib 和.so 7zr就是库名 定义库的类型:例如静态库是STATIC 动态库是SHARED ;...
  • 含义: 库是别人写好的 可以复用代码 现实中大多数程序都依赖很多库 不可能所有功能都自己来实现 和jar包道理一样 库也包括动态库和静态库之分 2.如何编译一个so库 ...
  • 闲话少说,so的修改,重要性大家都知道,俗话说,磨刀不误砍柴功,不写...安卓开发环境 ndk开发环境 1.新建个工程,随便建 主函数界面入口 先这样放着 public class MainActivity extends ActionBarActivity { @...
  • 安卓使用原生代码一般都是以编译成动态库的形式直接在Java中应用 当需要构建大型项目的时候,一般希望向上层提供一个动态库,而内部能够引用多个静态库 分模块的形式达到解耦合的目的 以实例说明,编译生成静态库...
  • 安卓,so库动态载入

    千次阅读 2019-08-17 18:00:41
    so库动态载入,修复应用无法安装。 (so库动态加载示例。从asset目录加载so,安装时不导出so,不会导致安装失败,运行时生成并载入) com.google.android.finsky.cu.k.onReceive(20): Error -504 ...
  • 安卓端使用的opencv动态库,如果其它需要可联系本人定制,本版本主要包括的库:core highgui imgcodecs imgproc world flann cnn
  • 安卓App在启动或运行时经常会遇到.so动态库加载失败的情况,其中具体分2种情况: 1.在程序启动时加载失败,这时候就需要用Relinker去重新加载,可以看我的另外2篇博文:Relinker源码分析、Android安卓本地库加载程序...
  • 在本次项目中ios和安卓应用通过分别调用cocos2d编译的动态和静态来实现功能。 1.安卓方面 和之前打包apk类似,有时间从原理上来分析下,先说编译过程中遇到的问题吧,cocos compile -p android 进行编译后,出现...
  • 前几天调试安卓下某个应用程序的加密功能,需要依赖openssl库,由于编译制定了连接...000390bc T SSL_xxx,发现动态库里面有这个SSL_xxx函数,然而怀疑是不是安卓设备里面的libssl.so.1.x.x动态库,跟应用程序实...
  • 因为项目需要编译opencv安卓动态库,应用于armv8-64平台,记录下编译过程。 一、交叉编译环境 系统:ubuntu16.04 ndk版本:android-toolchain-r14b(ndk下载地址,选对应版本)...
  • 1、ndk环境   下载好箭头所指的插件 2.编写代码 编写JniUtil类 package com.svautolife.desaysv; /** * Created by linmingxing on 2018/10/29 ...JniUtil.getSslPwd()调用动态库中的方法  
  • QT编译安卓arm64-v8a动态库

    千次阅读 2017-01-12 17:24:38
    使用QT编译安卓v8a共享 使用QT开发安卓的朋友可能会注意到Qt Creator中并没有v8a的编译选项,有的时候我们需要编译v8a的so来提高程序的运行速率,那么怎么使用QT编译v8a的so呢? QT安卓没有提供v8a的...
  • 音视频开发(一)编译安卓需要的SO动态库 1、下载FFmpeg(3.3.9) http://www.ffmpeg.org/download.html#releases 2、下载NDK(R13b) https://developer.android.google.cn/ndk/downloads/index.html 3、解压...
  • 如何在不去掉maven依赖的情况下直接替换maven内部带进来的动态库.so呢? 1.在依赖的模块下的build.gradle配置里,找到 android { sourceSets { main { } } } 在main节点内部加入jniLibs.srcDirs = ['...
  • 就是别人给了我一个动态so,给我一个h头文件,然后我建立一个包jniLibs,将so放到jniLibs中,然后loadlibrary时写上名字,在c中调用头文件的方法,此时报错说头文件方法未定义,so没添加成功
  • 本文基于安卓8.0 注意一定要与本文提供的版本对应不要问为什么 因为踏过来的血泪史 首先下载并编译ffmpeg 版本 4.0.3 配置ndk 版本 android-ndk-r14b android sdk 版本 26 linux 编译脚本 --其实windows也能用 ...
  • # 是否采用改进了的 HM    USING_IMPROVED_HM :=  true   # 一些路径的设置,相对路径和绝对路径   ifeq ($(USING_IMPROVED_HM), true )  # 优化的版本,加快运行效率   PATH_HM := libHM  else ...
  • 这是对应java层,当然java层还是需要有个固定的包名的,这是不能避免的,但是你可以直接使用这个类去load你需要的so类 static { System.loadLibrary("Loadso"); /** * 动态注册jni函数 * 不需要写...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 387
精华内容 154
关键字:

安卓动态库