使用Eclipse+NDK编译arm64-v8a CPU架构的speex.so文件
2015-12-31 16:41
1041 查看
随着处理器制造工艺的不断进步,和Android系统的不断发展,最近出了arm64-v8a的架构,由于项目中用到了speex的第三方语音编解码的动态库,其他架构的处理器暂不用说,一切正常,唯独到arm64-v8a这里出问题了,在Android5.0 arm64位的手机上使用语音会报错,关于其他架构的.so文件编译不再赘述,网上都有资料。废话少说,直接上步骤:
1.下载android-ndk-r10e-windows-x86_64并解压,这个支持arm64 -v8a的编译,之前的版本都不行,我之前用了android-ndk32-r10-windows-x86_64,结果后来编译的时候报错Android NDK: NDK Application 'local' targets unknown ABI(s): arm64-v8a 所以要使用最新的。
2.可以直接在Eclipse配置NDK的编译环境,而不必使用Cygwin,项目右键-->Properties-->Builder-->New-->选择Program,Main选项卡里面设置NDK的Location,Browse File System选择ndk-build.cmd的路径,Working Directory选择项目下jni文件夹路径,这里选Browse WorkSpace,如图:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201512/391fdc8f10e4038d3ddba820a1adb0d1)
切换到Refresh选项卡,选择如下
![](https://oscdn.geek-share.com/Uploads/Images/Content/201512/a0a307dfe25f5000b6f0989f55b45f02)
切换到Build Options选项卡,选择如下
![](https://oscdn.geek-share.com/Uploads/Images/Content/201512/1384cef7704aea5027548b4ed83afe8d)
最后别忘记点OK,回到Properties,把当前新建的NDK_Builder Up到最上面
![](https://oscdn.geek-share.com/Uploads/Images/Content/201512/8fc8622a621c24f2672bd1e55daca5bf)
这样,就配置了NDK的编译环境。
3.jni下的Application.mk文件需要修改成APP_ABI := armeabi armeabi-v7a arm64-v8a ……添加了arm64-v8a
4.Project选择Clean或者Build Project都可以自动把jni下的源文件编译成.so文件。
以上步骤顺利执行过后查看libs目录,下面的arm64-v8a文件夹下生成了libspeex.so文件。
1.下载android-ndk-r10e-windows-x86_64并解压,这个支持arm64 -v8a的编译,之前的版本都不行,我之前用了android-ndk32-r10-windows-x86_64,结果后来编译的时候报错Android NDK: NDK Application 'local' targets unknown ABI(s): arm64-v8a 所以要使用最新的。
2.可以直接在Eclipse配置NDK的编译环境,而不必使用Cygwin,项目右键-->Properties-->Builder-->New-->选择Program,Main选项卡里面设置NDK的Location,Browse File System选择ndk-build.cmd的路径,Working Directory选择项目下jni文件夹路径,这里选Browse WorkSpace,如图:
切换到Refresh选项卡,选择如下
切换到Build Options选项卡,选择如下
最后别忘记点OK,回到Properties,把当前新建的NDK_Builder Up到最上面
这样,就配置了NDK的编译环境。
3.jni下的Application.mk文件需要修改成APP_ABI := armeabi armeabi-v7a arm64-v8a ……添加了arm64-v8a
4.Project选择Clean或者Build Project都可以自动把jni下的源文件编译成.so文件。
以上步骤顺利执行过后查看libs目录,下面的arm64-v8a文件夹下生成了libspeex.so文件。
相关文章推荐
- Java-String类型的参数传递问题
- SpringMVC通过拦截URL控制Mybatis切换数据源
- RxJava多种常用场景使用方法
- Struts2--Helloworld
- spring core io 包 ResourceLoader接口
- Java并发同步器--CyclicBarrier
- JAVA-计算器
- spring中的单例与java中的单例
- Jigsaw项目会解决Java的JAR地狱问题么?
- java写一个爬虫
- Java语言基础
- Java中数据类型转换
- 【第二章】 IoC 之 2.3 IoC的配置使用——跟我学Spring3
- eclipse debug
- Spring下设置CXF的WebService客户端超时时长
- spring为什么不能注入static变量
- [JAVA][学习笔记]关于java.util.concurrent中 Future类的一些验证
- SpringMVC的异常处理
- Spring常用属性的注入及属性编辑器
- mac上切换jdk版本