在我們的company我們正在開發一個包含Java和本機部分的Android SDK。我們以AAR格式打包SDK,其中包含所有資源,Java類和本地位。根據AAR規範,本地庫應該放在AAR包內的jni文件夾內。由於當前的gradle插件不支持高級NDK用例,而且由於我們有一個已經發展了3年多的非常成熟的Android.mk文件,我們通過從gradle任務調用定製shell腳本來準備AAR。這個shell腳本使用ndk-build命令構建NDK,並且運行此腳本的任務將作爲javaCompile任務的依賴關係(我們的代碼有多種風格,每種風格都有自己的NDK規則,這些規則是從定義文件然後作爲命令行參數給予ndk-build)。Android gradle實驗性插件路線圖
最後,當一切都被編譯,我們有一個副本任務,副本的本地庫到構建/中間體/包內JNI文件夾(最終被壓縮到AAR的文件夾)。這工作正常,直到我們更新我們的項目使用gradle插件v1.5.0。
在v1.5.0中,一個名爲Transform API的東西被引入到插件中。雖然我們不使用這個,這個變換一步確實在任務transformNative_libsWithSyncJniLibsForFlavorNameBuildTypeName後,我們已經複製了我們的庫到JNI文件夾碰巧的地方,並導致所有數據的缺失JNI文件夾本地庫的一些轉換。這最終會導致AAR只要本地方法被要求就不會包含本機庫和崩潰。
我們通過使用project.tasks[taskName]
獲得該任務,並確保它發生之前我們我們的庫複製到文件夾JNI這個workarounded問題。
但是,有了這個問題,我們開始擔心,如果何時以及何時將gradle-experimental插件(唯一支持NDK的插件)放棄實驗階段,並且將成爲構建NDK代碼的標準。
我們試驗了一下這個實驗性的插件,除了不同的語法(爲什麼???)它不支持調試本地代碼作爲庫模塊的一部分(gdb文件沒有打包到AAR中並且jniDebuggable標誌不再存在) 。
有誰知道什麼時候這個插件會達到一個穩定的API,並準備用於生產構建?我們希望提前計劃從調用ndk-build從shellscript到具有相同功能奇偶校驗的僅gradle-only NDK的遷移(以及從Android Studio免費支持C++編輯,這對於當前配置是不可能的,所以我們依靠different editor獲取JNI膠水代碼)。
「有誰知道什麼時候這個插件會達到一個穩定的API,並準備用於生產構建?「 - 至多,Android工具團隊確實如此,他們不太可能對此發表評論,其他任何人都可以充其量提供意見。 – CommonsWare
我在他們的網站上找不到任何此類信息,我們希望瞭解大致發佈日期計劃我們的遷移,我不會問,如果他們沒有打破定製的JNI構建與gradle插件v1.5.0。 – DoDo
這不會讓你的問題適合這個網站。請閱讀網站文檔是什麼[關於主題]( https://stackoverflow.com/help/on-topic)。 – CommonsWare