Gradle Android插件使用的中那些特别注意的点

Gradle 插件

这是截至目前在使用Gradle的过程中遇到的最大的坑。目前gradle的Android插件官方提供了两个版本:标准版本和实验性版本。而实验性版本对于Gradle的版本和NDK的版本都有特别说明,另外实验性版本中对于一些参数的定义和声明的方式与标准版并不一致。

对于gradle的两个版本的配置之间的区别,个人专门写了开源项目来介绍,详情可以查看:https://github.com/bihe0832/Android-gradle-jni-so

Gradle Plugin User Guide

下面是标准版本的官方用户使用指南:

Experimental Plugin User Guide

下面是实验性版本的官方用户使用指南:

其实对于编译中的大部分问题,以及上面说的参数定义的问题官方文档都已经有具体说明,可以参照文档来修改对应的gradle脚本。

对于实验性版本的一些特别说明

相关环境

  1. 必须使用特定的Gradle版本:使用gradle 2.5
    • 必须使用特定的NDK的版本:r10e
    • 必须使用19.0.0以上的Android build tools

相关配置

  1. JNI 不再需要Android.mk和Application.mk文件,相关配置都添加在build.gradle中
    • Native的so不是放在libs下面,而是放在代码目录中,与java和res同级,文件夹为jniLibs
    • 实验性版本里面的参数配置与标准版本很不一致,而且差距很大。例如对于key-value的参数,标准版是用空格分割,但是实验性版本中必须用“=”

Gradle 编译

使用Gradle的时候,当切换了配置的时候(例如修改了gradle版本、增加了新的依赖库)后再次编译的时候就需要重新去下载资源,然而由于墙的原因,这个过程会相当慢,反而会大大的影响开发的效率。因此推荐将一些常用的资源预下载到本地。

Gradle 本地配置

  1. 下载好Gradle的版本文件,建议下载gradle-2.5-all和最新的gradle的压缩包。一般这两个就可以满足需要。
    • 下载地址:https://services.gradle.org/distributions/ - 将下载好的zip文件,根据自己计算机的配置,放置到对应的文件夹,例如本地都是放在 /Users/zixie/lib/gradle/distribution/
  2. 修改对应项目根目录gradle下gradle-wrapper.properties中对于gradle版本的说明,改为使用本地文件,例如: #Wed Apr 10 15:27:10 PDT 2013 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists distributionUrl=file\:/Users/zixie/lib/gradle/distribution/gradle-2.5-all.zip

Maven库配置

由于墙的原因,很多资源更新很慢,正好nexus也推荐搭建私库,因此最好的办法就是自己搭建一套私服。自己也是在自己的Mac机器上部署一套私有仓库代理,即用于自己的开发,也可以提供给团队或者自己其余的机器使用。

具体部署的方法可以查看:Mac搭建私有maven仓库,提供Nexus Responsitory镜像

一些gradle相关的博客:

  1. Android Studio分模块自动化构建实战

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏云计算教程系列

如何在CentOS 7上设置Jenkins以进行持续开发集成

合并代码、协调发布、确定构建状态、维护更新。如果你足够了解这些过程的挫败感,这些话本身就会让人头疼,你可能想看看Jenkins CI。

27210
来自专栏瞎说开发那些事

[微服务系列] 服务治理--Eureka

22760
来自专栏SDNLAB

从一个 Neutron DHCP 补丁谈起

前言 前几个星期,社区通过了一个 Patch 来解决一个遗留很久的 DHCP 相关的问题,这个 Patch 并不复杂(review 地址是 https://re...

41470
来自专栏EAWorld

对没有监控的微服务Say No!

目录: 一、监控简介 二、监控策略 三、总结 一、监控简介 微服务的特点决定了功能模块的部署是分布式的,大部分功能模块都是运行在不同的机器上,彼此通过服务调用...

46250
来自专栏移动开发

关于友盟分享的小问题

1.目前碰到一个问题是这样的:将友盟分享作为一个工程依赖的方式引入项目中,而你的的工程项目中如果有同名的资源文件,就有可能如下问题(找不到引用id)

24330
来自专栏专注研发

MyBatis Generator的使用

对于自动生成这件事吧,我本人中立,一直没用过,主要是因为浅尝辄止,它生成的东西有些懒得看,用一下还是挺舒服的

1.1K20
来自专栏互联网技术栈

Jetty基本介绍 及 与tomcat对比

bin:可执行脚本文件 demo- base: etc:Jetty模块定义的XML配置文件的目录 lib:Jetty依赖的库文件 logs:Jetty的...

11340
来自专栏张善友的专栏

修改 Windows Host 文件工具

Hosts文件是一个用于储存计算机网络中各节点信息的计算机文件。这个文件负责将主机名映射到相应的IP地址。hosts文件通常用于补充或取代网络中DNS的功能。和...

50890
来自专栏阿杜的世界

Java Web技术经验总结(二)

20530
来自专栏实用工具入门教程

如何部署 Jenkins 服务

Jenkins是一个开源自动化服务器,可以自动执行持续集成和交付软件所涉及的重复技术任务。Jenkins是基于Java的,可以从Ubuntu软件包安装,也可以通...

31350

扫码关注云+社区

领取腾讯云代金券