android studio 多个动态库,windows android studio 编译Jni动态库

项目需要,折腾了半天搞定windows android studio环境编译Jni动态库,现记录下来。

准备安装环境:

1. android studio 下载地址是http://www.android-studio.org/index.php/component/content/category/88-download,我用的版本是1.5.1

2.android ndk  下载地址:http://wear.techbrood.com/tools/sdk/ndk/ 我用的版本是android-ndk-r10d. ndk 不用安装,可放在任意目录,后面会有

地方指向这个目录。

3.cygwin 下载地址https://www.cygwin.com/,我用的版本是64位的,cygwin安装不在本博客范围。

安装好环境后开始一个简单的Demo

1.新建一个project,选择Empty Activity.

95c15b0edc057bf7e115a65bd5aec1b0.png2.创建一个Class 名称为TestA。

e9c493a7506644467718bdf747b253d1.pngTestA创建好以后添加如下代码:

public classTestA {static{

System.loadLibrary("test");

}public native int testAdd(int a, intb);

}

3. 执行编译操作:

编译通过后将在app\build\intermediates\classes\debug\cn\net\shuihan\myapplication目录下产生文件TestA.class

4.产生Jni头文件:

通过Alt +F12打开terminal窗口,在命令行输入cd app/src/main.

e403317ffd78a2bfe4600aade46f2ad6.png接着在命令行中执行

javah -d jni -classpath C:\Users\Justin\AppData\Local\Android\sdk\platforms\android-23\android.jar;..\..\build\intermediates\classes\debug cn.net.shuihan.myapplication.TestA

如果出现以下错误  class MainActivity extends AppCompatActivity 替换成 class MainActivity extends Activity 再重复操作。

dc08657c5d5b91e7c249c491dd75c76d.png

如果没有出现错误提示信息,会在Jni文件夹下产生头文件

3fd63aa491188362e95f06b74c914b33.png5. 添加源文件.c或者cpp都可以,文件名称自定义没有限制,将产生的头文件包含进去,并实现头文件内的接口方法。源文件中的代码如下:

#include "cn_net_shuihan_myapplication_TestA.h"JNIEXPORT jint JNICALL Java_cn_net_shuihan_myapplication_TestA_testAdd

(JNIEnv*para1, jobject para2, jint a, jint b)

{return a +b;

}

6.编译文件:执行编译操作,会发下编译不通过,有以下错误提示。ndk环境需要配置,至今还没有配。

6fa0591a0239a760892527646bc7d273.png

7.配置ndk:在gradle.properties中添加 android.useDeprecatedNdk=true,local.properties中添加

ndk.dir=D\:\\wgg\\ffmpeg-project\\android-ndk-r10d,module:app下面的 build.gradle中添加

ndk {

moduleName"test"ldLibs"log", "z", "m"

abiFilters"armeabi"}

3b62f599183bb5b5233b1f770ca51473.png

dfa7f6ad28377d61f7cfe0b463b0ddd2.png

7e353447eb31baa438801aca2623d523.png

8.生成动态库:重新编译程序,出现以下错误,这是windows android studio的一个bug,任意添加一个空.c文件,再次编译就没有问题了。输出的so文件在app\build\intermediates\ndk\debug\lib\armeabi目录下,名称为libtest.so。

如果按照方法编译不成功 可以加入QQ群127903734进行交流。

make.exe: *** No rule to make target `D:\wgg\ffmpeg-project\android-ndk\MyApplication2\app\build\intermediates\ndk\debug\obj/local/armeabi/objs/zuozuoutil/D_\wgg\ffmpeg-project\android-ndk\MyApplication2\app\src\main\jni', needed by `D:\wgg\ffmpeg-project\android-ndk\MyApplication2\app\build\intermediates\ndk\debug\obj/local/armeabi/objs/zuozuoutil/D_\wgg\ffmpeg-project\android-ndk\MyApplication2\app\src\main\jni\cn_net_shuihan_myapplication_TestA.o'. Stop.

FAILED

FAILURE: Build failed with an exception.*What went wrong:

Execution failedfor task ':app:compileDebugNdk'.> com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command 'D:\wgg\ffmpeg-project\android-ndk-r10d\ndk-build.cmd'' finished with non-zero exit value 2

*Try:

Run with--stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.

BUILD FAILED

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值