Android Studio:将复杂的build.xml迁移到build.gradle

Age*_*opf 7 ant android gradle android-studio android-gradle-plugin

我已成功将我的项目从eclipse迁移到android studio,并生成了一个默认的build.gradle文件.项目构建正确,我可以部署到调试等.

真正的问题是构建发布APK文件(从命令行)我曾经有一个自定义的ant-build(通过命令行调用,而不是eclipse).

我的自定义build.xml通过以下方式从SDK文件夹导入标准sdk build.xml文件:

<import file="${sdk.dir}/tools/ant/build.xml" />
Run Code Online (Sandbox Code Playgroud)

因此,我在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
Run Code Online (Sandbox Code Playgroud)

以及添加依赖项的示例:

<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
Run Code Online (Sandbox Code Playgroud)

总的来说整个事件使用蚂蚁非常简单.但是现在谈到迁移到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>
Run Code Online (Sandbox Code Playgroud)

但是我开始遇到问题,这表明这不再是一个选项,因为默认的build.xml开始抛出错误,这似乎与SDK版本有关.由于新的android工作室项目结构,我不得不使用原始的sdk build.xml乱用很多,所以文件不是他们预期的地方等等......

Bet*_*hao 2

  • 首先,我建议您将旧项目导入到 android studio。它将为您创建适当的 build.gradle 脚本。
  • 然后,您可以通过gradlew tasks在项目的根目录执行来列出任务列表。
  • 要依赖某些任务,您可以使用诸如 之类的命令init.dependsOn anotherTask