Android studio 整合ndk環境,生成so庫,並在其他專案上引用
-
1.
生成so庫
首先 as的安裝這裡就不介紹了 版本3.0,新啟動一個專案 正式跑通 hello world 開始整合ndk環境。
第一步:
第二步:
這裡說明一下 看下圖,是引用ndk的目錄 ,有的小夥伴在下載sdk的時候 會把ndk也一併下載了,如果ndk版本是r9以下版本(不包括r9) 那麼可能會導致編譯so庫失敗,所以為了避免麻煩 ,我下載了一個R12的版本,
並在as中指定一下目錄,其實這個ndk的目錄是自動生成的 只需要在下面選中一下目錄 上圖的這個目錄會自動匹配,
第三步:
在工程目錄的gradle-properties最後一行,加上這句話 android.useDeprecatedNdk=true
至此,ndk環境的搭建基本完成,下面開始寫內容:
首先 在本地新建一個NdkText類(English不好,命名略過。。。)
static {
System.loadLibrary("wangh");
}
//java調C中的方法都需要用native宣告且方法名必須和c的方法名一樣
public static native String getString();
初次編寫這個方法是報錯的 不用理會
第四步:
make 一下。
這步操作過後 會在 這個目錄生成一個.class檔案
第五步;
用javah 命令生成.h檔案 這個可用as自帶的teminal來完成
首先 命令進入到main目錄下 用javah 來生成.h 資料夾
javah -d jni -classpath F:\workspace\MyNdkApplication\app\build\intermediates\classes\debug com.wangh.myndkapplication.jnitext.JniText classpath後面有空格 build後面有空格 這裡要注意 是絕對路徑,你可以右鍵點選JniText.class copy the path 然後改一下 改成上面的樣子,
第六步:
這個操作之後 會在main目錄下生成一個jni資料夾 裡面是一個.h 檔案, 這個檔案不做修改, 在jni資料夾也就是.h檔案的同級目錄,新建一個.c的檔案 命名隨意
.C 檔案要引入.h的檔案頭, 和方法名,
//
// Created by Administrator on 2017/11/20.
//
#include "com_wangh_myndkapplication_jnitext_JniText.h"
JNIEXPORT jstring JNICALL Java_com_wangh_myndkapplication_jnitext_JniText_getString
(JNIEnv *env, jobject jobject1){
return (*env)->NewStringUTF(env,"Hello Jni Wangh !!!");
}
檔案頭就是.h檔案的檔名稱, 方法名可以拷貝.h檔案裡的方法名 稍作修改(新增上引數 和返回值,對C++程式碼不懂 照著這個寫就可以了 ^_^)
第七步:
萬事俱備 只欠配置,app model下,build-gradle
moduleName 生成so的名稱
abiFilters 指定CPU型別,這裡只輸出三種
到這裡就大功告成了。rebuild一下, 編譯成功的話 會在app下build資料夾裡生成so檔案
這個就是我們可能會在其他專案中用到的so庫
2. 引用so庫
至於so庫在其他專案中的引用 本人也只是試用了一下,如果有更好的引用方式望留言告知。感激不盡!
要在com目錄下建立和之前的專案同樣的包名路徑,將JniText類複製過來,將so對應CPU型號依次複製到main下jniLibs裡面。(這裡經驗少的可能會把同一個so複製到不同cpu型別裡 一定要分別複製 不然生成不同的so就沒有什麼意義了) 這樣就完成了so在其他專案的使用。
如有問題請留言 文章有問題望指正 多謝!!!!!!!!!!!!!!!
相關文章
- 在Eclipse 下整合ndk 自動編譯生成so檔案Eclipse編譯
- android studio生成並引用aarAndroid
- Android Studio NDK:三、打包SOAndroid
- Android Studio NDK開發-環境配置Android
- Android Studio NDK開發:環境配置Android
- Android Studio 已有專案新增NDK支援(mac/ndk-build)AndroidMacUI
- AndroidStudio之NDK環境搭建,so檔案打包以及使用Android
- Android so檔案生成Android
- Android Studio使用新的Gradle構建工具配置NDK環境AndroidGradle
- Android環境下生成PDF檔案Android
- android ndk整合Android
- Android Studio NDK開發:自定義庫Android
- Android NDK學習(2)Windows下NDK開發環境配置AndroidWindows開發環境
- 在Ubuntu上安裝Drone持續整合環境Ubuntu
- FM專案如何本地聯調其他測試環境
- Android Studio:couldn't find .so檔案Android
- Andorid Studio NDK開發-使用NDK庫
- 在Android原生專案中整合FlutterAndroidFlutter
- 隨手筆記:windows環境,內網上訪問其他電腦的laravel專案筆記Windows內網Laravel
- Android Studio配置開發環境Android開發環境
- Eclipse下搭建Android的NDK開發環境EclipseAndroid開發環境
- win10系統下如何搭建ndk環境_怎麼在win10系統下搭建ndk環境Win10
- 在 Android Studio 上除錯資料庫 ( SQLite )Android除錯資料庫SQLite
- android studio配置ndk開發Android
- Android Studio中NDK開發Android
- 雲伺服器Ubuntu下搭建NDK環境,並編譯FFmpeg伺服器Ubuntu編譯
- Android Studio 3 0 如何生成 aar 並使用?Android
- JNI學習筆記之AS+ndk+gradle自動編譯出so並整合流程筆記Gradle編譯
- 一定能成功的Android NDK環境配置教程Android
- Linux下NDK環境搭建!Linux
- Hexo專案部署在Github上並配置域名HexoGithub
- 裝在筆記本里的私有云環境:持續整合(上)筆記
- 【Android Studio】Android Studio 搭建開發環境(Linux Ubuntu篇)Android開發環境LinuxUbuntu
- Android Studio搭建ndk開發流程Android
- less引用其他less檔案
- Android Studio在android Emulator中執行的專案黑屏Android
- 專案經理在敏捷環境中的作用敏捷
- 在CentOS上全命令列搭建android編譯環境CentOS命令列Android編譯