Android项目构建之构建流程与目录结构

一、构建流程

Android的构建流程

先把Java文件编译成.class文件,然后将.class文件和所依赖的第三方文件打包成classes.dex文件(),然后再打包资源文件,之后将dex文件和资源文件打包成未签名的包。最后通过签名打包成完整的包。

Jenkins持续集成构建

自动化构建apk,需要配置一些gradle文件

二、目录结构

使用Android Studio创建的项目的工程Test目录如下:

Test   
  .gradle 
  .idea    
  app  
  gradle   
  .gitignore   
  build.gradle   
  gradle.properties    
  gradlew   
  gradlew.bat 
  local.properties 
  setting.gradle 
  Test.iml

1、.gradle目录
运行时自动生成的目录,一般情况不做修改,不需要纳入项目源代码管理中。

2、.idea目录
Intellij IDEA 运行时候生成的文件目录,一般情况不做修改,不需要纳入项目源代码管理中。

3、 app (module模块)
每一个module可看成在Eclipse中的一个Project,里面的文件结构与父类差不多。里面也能包含build.gradle、gradle.properties、setting.gradle 等相关gradle文件,若没有定义,则在项目中使用父类的设置。

4、 gradle 目录
里面wrapper目录下有两个文件。里面有一些项目对gradle的配置信息,其中gradle-wrapper.properties里面声明了gradle的目录与下载路径以及当前项目使用的gradle版本。

5、 .gitignore文件

git对项目文件管理,可以在里面添加你不希望纳入git管理的文件。比如:

*.iml
.gradle
/local.properties
/.idea/workspace.xml
/.idea/libraries
.DS_Store
/build
/captures
.externalNativeBuild

6、 build.gradle文件
项目的编译环境配置,是整个project的配置文件。是最顶层的配置。在module中同样有一个build.gradle文件,是对module的配置,如果module里没有进行配置,将使用这里的配置信息。
默认有一个是声明仓库的源jcenter(), jcenter是一个新的中央远程仓库,兼容maven中心仓库,而且性能更优。另一个是声明了android gradle plugin的版本

7、 gradle.properties文件
配置gradle运行环境的文件,比如配置gradle运行模式,运行时jvm虚拟机的大小。

8、 gradlew & gradlew.bat 文件
分别是linux下的shell脚本和windows下的批处理文件,它们的作用是根据gradle-wrapper.properties文件中的distributionUrl下载对应的gradle版本。这样就可以保证在不同的环境下构建时都是使用的统一版本的gradle

9、 local.properties文件
配置android NDK,SDK的路径

10、setting.gradle文件
声明当前项目中含有什么module。如果有多个module会以‘,’分开,如:include ‘:app’, ‘:app2’

11、Test.iml文件
编译项目时生成的文件,其名为‘项目名.iml’,iml文件是Android Studio识别项目的配置文件

三、app(module模块)

build module: 编译时所生成文件的目录 
      
lib: 第三方依赖库所在目录 

src: module源码所在目录 

src\andrroidTest: android Studio生成的测试模块,可删除 

src\main: module代码目录,结构和Eclipse中的差不多了 

src\test: 单元测试模块,可删除 

.gitignore: module中的git管理文件 

app.iml: module中的IDEA 项目文件 

build.gradle: module自动编译的配置文件 

proguard-rules.pro: module代码混淆配置文件 

在Android Studio工程目录结构可以看到,Test项目中有两个build.gradle文件,一个是在最外层目录下的,一个是在app目录下的。

四、project下的build.gradle

该文件下的代码都是自动生成的,主要有两部分。第一是声明了jcenter()。第二Gradle插件版本的声明

五、app下的的build.gradle

默认配置:

apply plugin: 'com.android.application'

android {
     compileSdkVersion 26
	 buildToolsVersion "26.0.2"
     defaultConfig {
          applicationId "com.test.demo.test"
          minSdkVersion 21
          targetSdkVersion 21
          versionCode 1
          versionName "1.0"
          testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
          flavorDimensions "versionCode"
      }
      buildTypes {
             release {
                minifyEnabled false
                proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
             }
       }
}

dependencies {
     implementation fileTree(include: ['*.jar'], dir: 'libs')
     implementation 'com.android.support:appcompat-v7:26.1.0'
     implementation 'com.android.support.constraint:constraint-layout:1.0.2'
     implementation 'com.android.support:design:26.1.0'
     testImplementation 'junit:junit:4.12'
}

apply plugin: 声明是Android应用程序还是库模块

android 闭包,配置项目构建的各种属性,compileSdkVersion用于指定项目的编译SDK版本,buildToolsVersion用于指定项目构建工具的版本。

defaultConfig闭包:默认配置,应用程序包名,最小 sdk 版本,目标 sdk 版本,版本号,版本名

buildTypes闭包:指定生成安装文件的配置,是否对代码进行混淆

dependencies 闭包,指定当前项目的所有依赖关系,本地依赖,库依赖以及远程依赖

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值