1. 程式人生 > >Android Studio 對so庫的操作

Android Studio 對so庫的操作

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的配置,然後就能夠正常使用了。