繁体   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