Android Studio生成.so库

简介

通过android studio生成so库的实践。

上一篇记录的是通过eclipse生成so的方法eclipse生成so库实践,这里记录一下通过android studio是怎么生成so库的,参考文章http://www.jianshu.com/p/0c0d37c9a2db,这篇blog主要是参考上面文章实现,自己做了一部分修改,以及实现时遇到了一些坑,这里记录一下。


配置NDK

  1. 下载ndk
    下载地址:http://developer.android.com/intl/zh-cn/ndk/downloads/index.html
  2. 解压配置环境变量
    12

  3. 验证配置成功
    这里写图片描述

  4. 设置android studio ndk路径
    这里写图片描述

JNI开发

  1. 添加native接口注意写好native接口和System.loadLibrary()。

  2. 执行Build->Make Project,生成了.class文件,.class文件的生成路径是在 app/build/intermediates/classes/debug下
    这里写图片描述

  3. javah生成c头文件
    点击”View->Tool Windows->Terminal“,打开终端,进入 \app\src\main的目录下执行javah命令:

    javah -d jni -classpath <SDK_android.jar>;<APP_classes> <class>

    这里写图片描述然后就看到\app\src\main\jni\com_fy_administrator_jnitoso_JniUtil.h出现了.

  4. 然后根据.h文件,创建相对应的.cpp文件
    这里写图片描述
  5. 创建Android.mk和Application.mk文件
    Android.mk

    LOCAL_PATH := $(call my-dir)
    include $(CLEAR_VARS)
    
    LOCAL_MODULE := JNIDemo
    LOCAL_SRC_FILES := testJni.cpp
    LOCAL_SRC_FILES += CAdd.cpp
    
    include $(BUILD_SHARED_LIBRARY)

    其中LOCAL_PATH是C/C++代码所在目录,也就是我们的jni目录。
    LOCAL_MODULE是要编译的库的名称。编译器会自动在前面加上lib,在后面加上.so。
    LOCAL_SRC_FILES是要编译的C/C++文件。

    Application.mk

    APP_ABI := all
    
    #APP_ABI := armeabi armeabi-v7a x86 mips arm64-v8a mips64 x86_64
    

配置gradle

  1. 在defaultConfig下,配置ndk:

      ndk {
            moduleName "JNIDemo" // 生成的so名字
        }
  2. 在android标签内配置sourceSets:

    sourceSets {
        main {
            jniLibs.srcDirs = ['libs']
        }
    }

    这里写图片描述

  3. 执行ndk-build命令生成所有cpu架构的so库
    这里写图片描述


注意:
在最后生成so库的时候,如果无法生成64位的so库,可能原因是ndk版本太老的缘故,下载最新ndk试试

代码:https://github.com/fayou147/JniToSo

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值