把大象裝進冰箱需要幾步?
其實,如果順利的話,AS 生成 so 的步驟還是比較清晰的。
但是,隨著我升級到了 AS 最新版 「3.3.1 穩定版」
而且我也不再想使用下面兩種方法解決
Your project contains C++ files but it is not using a supported native build
這個問題。
一、使用 「老版本 NDK」進行兼容:
把 android.useDeprecatedNdk=true 添加進 gradle.properties 中
二、隱藏 cpp 文件:
在 app 的 build.gradle 中添加
<code> sourceSets {
main {
jni.srcDirs = []
}
}
/<code>
那麼,步驟就多了幾步了,不過沒關係,只要跟著我填坑的姿勢 一步一步走 還是能成功的,而且花費的時間也不是很多喲,一起來看看吧。
開始啦
一、先配置 NDK 環境
說明:創建項目完成之後,點擊圖片右上角的 項目結構,然後選擇 SDK Location 就能看到 NDK 配置出現了,直接點擊讓 AS 自己下載、配置就可以了
二、配置好之後,創建 JNI 文件夾
看圖就會啦
三、創建好之後,通過 javah 命令生成「頭文件」
命令:
<code> javah com.example.ndktest.MainActivity
/<code>
即 javah 後邊跟著 我們的 MainActivity 的「引用名」,沒有 .class 後綴的哦
複製引用名方法:複製好之後,把 .class 後綴去掉
注意我是先進入的java目錄,然後開始執行的呦,生成之後,記得將這個頭文件移動到 jni目錄中
四、配置 build.gradle,然後構建項目
按照圖片方式執行完後,報錯了
這個時候,你可以按照我 開頭說的那兩個方法解決一下,是可以通過的,可是現在我有點倔,就不用那兩種方法,我決定聽一聽 android studio 善意的提醒 Consider using CMake or ndk-build integration.
五、按照 Android Studio 的提示,使用 CMake 或者 ndk-build 去生成
module 處右鍵 選擇 Link C++ Project with Gradle
選擇哪個都可以,這裡我選擇是 ndk-build,因為 CMake 對應的 CMakeLists.txt 文件懶得寫
而ndk-build對應的 Android.mk文件卻有現成的,位置在:app/build/intermediates/ndk/debug如下圖所示:
複製路徑,然後指定一下即可,如圖
最後,點下小錘子
這樣就成功生成了,生成的位置見下圖
六、複製 so 文件到 libs 目錄即可
Bingo !!!搞定了
閱讀更多 黑鍵手記 的文章