Android studio Gradle使用NDK 示例Speex
使用csdn 的Markdown排版不是很好,难看多多谅解。。。
- 安装NDK,注意要android stdio 1.5的版本以上才支持NDK,我当前的版本为
- 点击设置中心下载NDK
我下载的是12.1版本的 - 下载成功自动安装后:
如果新的工程local.properties目录下会有NDK的目录路径
- 注意这个NDK安装好后其目录在SDK目录下的ndk-bundle目录下,与以往的不同。要修改的文件见下图
首先需要将根目录下的gradle修改为实验性的gradle
classpath:’com.android.tools.build:gradleexperimental:0.7.0’ 对应的gradle版本是2.10-all
Experimental与gradle的版本对应可以查看android studio安装路径
AndroidStudio\gradle\m2repository\com\android\tools\build\gradle
Android Studio\gradle\m2repository\com\android\tools\build\gradle-experimental
**
接下来在这里以编译speex jni文件示例:
到speex官网下载相应的版本,其中一个就行,我下载了几个,因为我使用speex-1.2.rc2,编译有错误,缺少文件,编译出错缺少什么文件,就从sppex-1.2beta2或sppex-1.2beta3或speexdsp中有的文件复制过来,不要随便复制speexdsp下的文件,因为不是对应arm框架写的代码
下面的版本是我修正版,可以编译通过生成so文件。可能有些文件没有用到过于臃肿
文件下载点这里 [ speex_src.zip ]
在main目录创建jni目录
然后把speex目录下的include和libspeex目录复制到jni目录
写java Native文件式
package com.gy.speexv2;
/**
* JNI调用 <br>
* 层 以当前包名打包的JNI,如果修改了包路径,生成c头文件,修改speex_jni.cpp,使用NDK重新编译产生SO文件
*/
public class Speex {
/*
* quality 1 : 4kbps (very noticeable artifacts, usually intelligible) 2 :
* 6kbps (very noticeable artifacts, good intelligibility) 4 : 8kbps
* (noticeable artifacts sometimes) 6 : 11kpbs (artifacts usually only
* noticeable with headphones) 8 : 15kbps (artifacts not usually noticeable)
*/
/*
* quality 1 : 4kbps (very noticeable artifacts, usually intelligible) 2 :
* 6kbps (very noticeable artifacts, good intelligibility) 4 : 8kbps
* (noticeable artifacts sometimes) 6 : 11kpbs (artifacts usually only
* noticeable with headphones) 8 : 15kbps (artifacts not usually noticeable)
*/
private static final int DEFAULT_COMPRESSION = 4;
Speex() {
}
public void init() {
load();
open(DEFAULT_COMPRESSION);
}
private void load() {
try {
System.loadLibrary("speex");
} catch (Throwable e) {
e.printStackTrace();
}
}
public native int