簡體   English   中英

Android Studio:將復雜的build.xml遷移到build.gradle

[英]Android Studio: Migrate complex build.xml to build.gradle

我已成功將我的項目從eclipse遷移到android studio,並生成了一個默認的build.gradle文件。 項目構建正確,我可以部署到調試等。

真正的問題是構建發布APK文件(從命令行)我曾經有一個自定義的ant-build(通過命令行調用,而不是eclipse)。

我的自定義build.xml通過以下方式從SDK文件夾導入標准sdk build.xml文件:

<import file="${sdk.dir}/tools/ant/build.xml" />

所以我在build.xml中所做的就是覆蓋目標或通過“depends”掛鈎它們。

覆蓋的示例:

<target name="-set-release-mode" depends="-set-mode-check">
    <!--Here I rename my output apk files to something like: myapp-versionFromAndroidManifest.apk -->
</target

以及添加依賴項的示例:

<target name="-pre-build" depends="clean">
    <!-- my custom code where I copy resource files, process command line arguments   
     use xpath to extract things like the version from the AndroidManifest.xml and 
     write them into custom xml files etc... -->
</target

總的來說整個事件使用螞蟻非常簡單。 但是現在談到遷移到gradle我完全失去了,如何完成我之前在ant中所做的那樣,具體來說:

  1. 對於build.xml,我在我的ant構建中導入了一個默認的build.xml - 標准的build.gradle文件是否存在於某處,以便我可以查看已定義的任務?
  2. 是否可以覆蓋gradle任務,如果是,如何?
  3. 我非常肯定來自螞蟻的depends =“......”可以在gradle中模仿,但我不知道怎么樣,這也需要回答問題1。

我搜索了一堆教程,還有遷移教程(很遺憾沒有解決我的問題):

http://keepsafe-engineering.tumblr.com/post/87818767721/migrating-android-app-from-ant-to-gradle

http://ryanharter.com/blog/2013/07/17/migrating-android-projects-to-gradle/

我還從gradle文檔中讀到了本章,這些文檔根本沒有幫助,因為它沒有回答問題1或2或3:

http://www.gradle.org/docs/current/userguide/ant.html

以下給出了一些有趣的指示:

http://toastdroid.com/2014/03/28/customizing-your-build-with-gradle/

我還嘗試簡單地將sdk文件夾中的默認build.xml復制到我自己的build.xml中,然后簡單地在gradle中導入該ant構建文件並執行構建踢的ant任務:

<target name="release"
            depends="-set-release-mode, -release-obfuscation-check, -package, -post-package, -release-prompt-for-password, -release-nosign, -release-sign, -post-build"
            description="Builds the application in release mode.">
</target>

但是我開始遇到問題,這表明這不再是一個選項,因為默認的build.xml開始拋出錯誤,這似乎與SDK版本有關。 由於新的android工作室項目結構,我不得不使用原始的sdk build.xml亂用很多東西,所以文件不是他們期望的地方等等......

  • 首先,我建議你將遺留項目導入android studio。 它將為您創建適當的build.gradle腳本。
  • 然后,您可以通過在項目的根目錄執行gradlew tasks來列出任務列表。
  • 要依賴某些任務,可以使用init.dependsOn anotherTask等命令。

只是為了記錄:我拋棄了使用我之前的ant-build並完全遷移到gradle的想法。 我需要做的大部分工作都可以通過目錄結構來實現。 你可以在我的另一個問題中找到我如何做到這一點的細節:

Android Studio:Gradle Product Flavors:定義自定義屬性

現在第二部分是調用我的java代碼做了一些我真的不想遷移到groovy / gradle的東西。 因此,我想出了如何從gradle腳本執行我的java類(盡管我實際上必須從中創建一個jar文件):

Android Studio Gradle:執行靜態Java方法(從ANT遷移到Gradle)

如果有人有疑問,我會很樂意盡我所能並回答他們。

暫無
暫無

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

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