簡體   English   中英

Android gradle實驗插件路線圖

[英]Android gradle experimental plugin roadmap

在我們公司,我們正在開發一個包含Java和本機部分的Android SDK。 我們以AAR格式打包SDK,其中包含所有資源,java類和本機位。 根據AAR規范,本機庫應放在AAR包內的jni文件夾中。 由於當前的gradle插件不支持高級NDK用例,並且由於我們有一個非常成熟的Android.mk文件已經發展了3年,我們通過從gradle任務調用自定義shell腳本來准備AAR。 這個shell腳本使用ndk-build命令構建NDK,運行此腳本的任務作為javaCompile任務的依賴項(我們的代碼有多種風格,每種風格都有自己的NDK規則,這些規則是從定義文件中預先加載的然后將ndk-build作為命令行參數提供)。

最后,當所有內容都被編譯時,我們有一個Copy任務,它將本機庫復制到build / intermediates / bundles(最終被壓縮到AAR中的文件夾)中的jni文件夾中。 這工作正常,直到我們更新我們的項目以使用gradle插件v1.5.0。

在v1.5.0中,插件中引入了一個名為Transform API的東西。 雖然我們不使用這個,這個變換一步確實在之后我們已經復制了我們的庫到JNI文件夾碰巧的地方,並導致所有數據的缺失JNI文件夾任務transformNative_libsWithSyncJniLibsForFlavorNameBuildTypeName本地庫的一些轉換。 這最終導致AAR在需要本機方法時不包含本機庫和崩潰。

我們通過使用project.tasks[taskName]來獲取該任務並確保在我們將libs復制到jni文件夾之前確實發生了這個問題。

然而,有了這個問題,我們開始擔心我們是否以及何時將gradle實驗插件(目前僅支持NDK的插件)推出實驗階段,並將成為構建NDK代碼的標准。

我們嘗試了一下實驗插件,除了不同的語法(為什么???),它不支持調試本機代碼作為庫模塊的一部分(gdb文件未打包到AAR中,jniDebuggable標志不再存在)。

有誰知道這個插件何時會達到一個穩定的API,並准備好在生產版本中使用? 我們希望提前計划從調用ndk-build從shellscript到僅使用gradle的NDK構建具有相同的功能奇偶校驗(以及從Android Studio免費支持C ++編輯,這對於當前配置是不可能的,因此我們依賴於不同的編輯器 JNI膠水代碼)。

我沒有路線圖,但是如果你遵循依賴關系,你會發現Android實驗插件仍然是實驗性的,因為新的Gradle對象模型仍然是實驗性的。 我希望Android Studio插件在基礎Gradle代碼穩定之前不會穩定。

這就是說:雖然語法差異令人沮喪,但它們通常很容易應用。 更重要的是,實驗插件確實提供了相當好的調試支持。 它不使用gdb(它默認使用lldb)並且它不依賴於jniDebuggable標志。 您正在尋找這些這一事實讓我覺得您對ndk-gdb的工作原理了解很多,並且可能構建了自己的系統,依賴於這些知識。 您是否嘗試過按Android Studio中的“調試”按鈕? 如果您的C ++代碼在主項目中,它應該可以正常工作。 (不幸的是,似乎在庫項目中設置斷點有一些問題。)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM