Android Studio 對so庫的操作
阿新 • • 發佈:2019-01-22
1、在本專案中使用本專案生成的so檔案
1、小知識:
1)、as庫的預設位置:
在app/build/intermediates/ndk/debug/lib
2)、ndk的功能是生成so庫,在專案中有底層c程式碼的時候能夠提供jni的環境,使用已經生成的so庫已經不需要ndk的環境,此時可以將ndk的相關設定都刪掉。
例如:可以刪除ndk環境,刪除清單檔案中的下列ndk配置程式碼
ndk{
moduleName "hello"
}
2、在本專案中使用so檔案必要條件(libs和jniLibs中要有so檔案)
1)、jniLibs的設定
在app下面的gradle裡面設定以下內容
sourceSets{
main {
jniLibs.srcDirs = ['libs']
}
}
syn 生成了jniLib檔案
2)、將上面生成的so檔案複製到專案libs(app下的libs)中
複製之後的目錄結構如下:
注意檢視下jniLibs目錄下是否有so檔案,沒有的情況下需要複製進去
3)、操作基本上就完成了,編譯執行吧
下面是執行效果:
2、在新建專案中使用之前的so庫
由於so庫生成的時候是以很多固定資訊通過ndk編譯的,這裡需要原專案中的native所在類以及所在包資料夾拷貝下來。
其餘的沒上面區別,將native所在類匯入它原本的包路徑下就可以了,之後,只需要配置jniLibs 和libs 就可以了。
對android studio的jni的使用大概先到這裡了。
目前仍然存在的問題,在eclipse下面時,能夠有下面的使用場景:
在jni 底層程式碼中使用so
各種百度 google之下,各種配置嘗試之後,並沒有找到在android studio jni下這種情況的解決。
實在找不到解決方案的條件下的解決方案:
直接使用了eclipse中生成的so庫,按照上列方法做native的複製,以及jniLibs與libs的配置,然後就能夠正常使用了。