隨着處理器制造工藝的不斷進步,和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,如圖:
切換到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文件。
轉載自:http://blog.csdn.net/xingliuyang/article/details/46710345