专栏首页Android进阶Android高频面试专题 - 架构篇(一)AS项目架构

Android高频面试专题 - 架构篇(一)AS项目架构

日常开发中AS与Gradle架构使用技巧的高频面试问题。更多其他完整面试专题,请关注公众号获取.

1、project和module的关系

一个project是指一个工作区间,所以一个project可以有多个module,module是模块的意思,每一个module都是可独立运行的程序,而一个project可以关联多个module。

2、Gradle是什么

  • Gradle是一个自动化构建工具
  • 兼容Maven等仓库
  • 基于Groovy的特定领域语言来声明名目设置

3、Gradle常用命令

  • gradlew clean: 清除app目录下的build文件夹
  • gradlew check: 执行lint检查
  • gradlew assemble:打release和debug包
  • gradlew build : 执行check和assemble
  • gradlew assembleRelease/gradlew assembleDebug:打全部渠道的Release或者debug包

4、几种依赖的区别

  • compile:我们最常用的依赖,编译时提供并打包进apk
  • provided:编译时提供但不打包进apk
  • 在gradlew 3.0 中complie过期了,用implementation和api替代,api = compile
  • implemention:将该依赖隐藏在内部,而不对外部公开

5、解决依赖冲突,排除依赖传递

  • exclude: 设置不编译指定的模块,排除指定模块的依赖
  • transitive:用于自动处理子依赖项,默认为true,gradle自动添加子依赖项。设置为false排除所有的传递依赖
  • force:强制设置某个模块的版本

6、Gradle打包时的混淆

  • 通过在buildTypes中配置minifyEnable来开启和关闭proguard
  • 通过proguardFiles 来配置混淆参数与keep的内容
  • 通过shrinkResources 去除没有用到的资源文件

7、Gradle依赖统一配置管理

  • 在根目录下创建自定义名字的.gradle文件,例如:config.gradle
  • 打开项目根目录下的build.gradle, 在最顶上依赖我们刚刚创建的配置文件apply from: "xxx.gradle"
  • 在app模块下的build.gradle中引用即可:compile rootProject.ext.dependencies["appcompat-v7"]

8、Jenkins+Git+Gradle实现CI自动打包

  • 安装Jenkins,安装需要的插件(比如说git插件、Gradle插件),配置JDK,Git,Gradle等编译环境
  • 创建新的Jenkins项目,配置Git代码仓库地址、配置构建时的Gradle版本,和需要执行的Gradle Task
  • 配置Jenkins项目的构建参数,比如Gradle Task的参数、渠道参数
  • 配置邮件通知
  • 开始构建

本文分享自微信公众号 - Android扫地僧(Android-Mas),作者:Android扫地僧

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-02-25

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

我来说两句

0 条评论
登录 后参与评论

相关文章

  • ThreadLocal与Java引用类型(文末含福利)

    今天以 “TheadLocal 为什么会导致内存泄漏” 为题与朋友们讨论了一波,引出了一些原理性的内容,本文就这个问题作答,并扩展相关的知识点

    Android扫地僧
  • 2020新鲜出炉的“面筋”,够刁钻

    https://www.cnblogs.com/iteacat/p/12569008.html

    Android扫地僧
  • Android高频面试专题,刷完这些题,我能去大厂了吗?

    最近关于【面试】资料的需求量比较大,虽然以前也分享过各类面试相关的资源,但是说实话,比较杂,不成系统,翻阅也不是很方便。所以应你们的要求,决定出这么一个专题,整...

    Android扫地僧
  • MAC上使用Android Studio 3.0的Gradle问题小解

    2017-06-11 by Liuqingwen | Tags: Android Gradle | Hits

    IT自学不成才
  • Gradle和Maven性能对比

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明...

    乐百川
  • Gradle 概述

    Gradle 是一个开源的构建自动化(build automation)工具。有关构建自动化的定义请参考:https://en.wikipedia.org/wi...

    HoneyMoose
  • 看似无用,实则重要的Gradle Wrapper

    在本系列的此前文章中,我们学习了为什么要用Gradle、Gradle的入门基础和Groovy的基础,这些文章为Gradle的入门打下了基础,这一篇我们接着学习G...

    用户1269200
  • Gradle 提速:每天为你省下一杯喝咖啡的时间

    作为一名 Android 开发同学,当你的工程和代码达到一定规模的时候,相信你一定遇到过编译速度过慢的问题。比如:

    我就是马云飞
  • 解决HttpServletRequest#getIntputStream只能读一次

    以前一直自己封装一个Wrapper来缓存Body的内容,今天发现在Spring中已经帮我们实现了。就是org.springframework.web.util....

    DH镔
  • 从 Ant 到 Gradle 的迁移之路

    前一段时间项目组打算将原来的 Ant 编译打包方式迁移到 Gradle 编译打包方式。现在迁移基本完成,我这里将迁移过程遇到的坑以及经验做一个总结,希望能给大家...

    腾讯移动品质中心TMQ

扫码关注云+社区

领取腾讯云代金券