设为首页 加入收藏

TOP

Android Gradle使用总结(三)
2017-10-13 10:36:55 】 浏览:5359
Tags:Android Gradle 使用 总结
guardFile('proguard-android.txt'), 'proguard-rules.pro' signingConfig signingConfigs.config } } }

依赖管理

1、依赖 jcenter 包

每个库名称包含三个元素:组名:库名称:版本号

 compile 'com.android.support:appcompat-v7:25.0.0'

2、依赖本地 module

 compile project(':YibaAnalytics')
 

3、依赖 jar 包

  • 1、把 jar 包放在 libs 目录下
  • 2、在 build.gradle 中添加依赖
dependencies {
   compile files('libs/YibaAnalytics5.jar')
}

这里写图片描述

4、依赖 aar 包

  • 1、把 aar 包放到 libs 目录下
  • 2、在 build.gradle 中添加依赖

repositories {
    flatDir {
        dirs 'libs'
    }
}

dependencies {
    compile(name:'YibaAnalytics-release', ext:'aar')
}

如图所示:

这里写图片描述

5、自定义依赖包目录

当我们的 aar 包需要被多个 module 依赖时,我们就不能把 aar 包放在单一的 module 中,我们可以在项目的根目录创建一个目录,比如叫 aar 目录,然后把我们的 aar 包放进去,如图所示:

这里写图片描述

在项目的根目录的 build.gradle 的 allprojects 标签下的 repositories 添加 :


 flatDir {
     dirs '../aar'
}

../aar 表示根目录下的 aar 文件夹。

如图所示:

这里写图片描述

然后就可以添加依赖了,如下所示:


 compile(name:'YibaAnalytics-release', ext:'aar')

6、依赖配置

有些时候,你可能需要和sdk协调工作。为了能顺利编译你的代码,你需要添加SDK到你的编译环境。你不需要将sdk包含在你的APK中,因为它早已经存在于设备中,所以配置来啦,我们会有5个不同的配置:

  • compile
  • apk
  • provided
  • testCompile
  • androidTestCompile

compile是默认的那个,其含义是包含所有的依赖包,即在APK里,compile的依赖会存在。

apk的意思是apk中存在,但是不会加入编译中,这个貌似用的比较少。

provided的意思是提供编译支持,但是不会写入apk。

native包(so包)

用c或者c++写的library会被叫做so包,Android插件默认情况下支持native包,你需要把.so文件放在对应的文件夹中:

这里写图片描述

注意

jniLibs 目录应该和 Java 目录在同一级

defaultConfig 详解

defaultConfig 对应的是 ProductFlavor 类。

resConfigs : 过滤语言

如果你的app中仅支持1,2种语言,但是可能引用的lib库包含多种其他语言的strings资源,这个时候我们可以通过resConfig指定我们需要的strings资源。

android {

    defaultConfig {
        applicationId "com.yiba.sharewe.lite.activity"
        minSdkVersion 14
        targetSdkVersion 24
        versionCode 46
        versionName "1.74"
        resConfigs 'en', 'zh-rCN' ,'es'  //本次打包,只把 en(英文)、zh-rCN(中文简体)、es(西班牙语)打进保内,其他语言忽略
    }
}

resConfigs : 过滤 drawable文件夹的资源

一般情况下,我们打完包,res 下面的资源如图所示:

这里写图片描述

现在加上资源过滤规则:

android {
  
    defaultConfig {
        applicationId "com.wifi.analytics"
        minSdkVersion 9
        targetSdkVersion 25
        versionCode 1
        versionName "1.0"
        resConfigs "hdpi"  //打包的时候只保留 drawable-xhdpi 文件夹里面的资源
    }

}

这次我们打包效果如下:

这里写图片描述

buildTypes 详解

官方文档

buildTypes{}对应的是 BuildType 类

继承关系

BuildType 继承 DefaultBuildType ; DefaultBuildType 继承 BaseConfigImpl ;

BaseConfigImpl
    --- DefaultBuildType 
          --- BuildType

buildTypes的属性:

name:build type的名字

applicationIdSuffix:应用id后缀

versionNameSuffix:版本名称后缀

debuggable:是否生成一个debug的apk

minifyEnabled:是否混淆

proguardFiles:混淆文件

signingConfig:签名配置

manifestPlaceholders:清单占位符

shrinkResources:是否去除未利用的资源,默认false,表示不去除。

zipAlignEnable:是否使用zipalign工具压缩。

multiDexEnabled:是否拆成多个Dex

multiDexKeepFile:指定文本文件编译进主Dex文件中

multiDexKeepProguard:指定混淆文件编译进主Dex文件中

buildType的方法:

1.buildConfigField(type,name,value):添加一个变量生成BuildConfig类。

2.consumeProguardFile(proguardFile):添加一个混淆文件进arr包。

3.consumeProguardFile(proguardFiles):添加混淆文件进arr包。

4.externalNativeBuild(action):配置本地的build选项。

5.initWith:复制这个build类型的所有属性。

6.proguardFile(proguardFile):添加一个新的混淆配置文件。

7.proguradFiles(files):添加新的混淆文件

8.resValue(type,name,value):添加一个新的生成资源

9.setProguardFiles(proguardFileIterable):设置一个混淆配置文件。

initWith :复制属性

android {
    compileSdkVersion 25
    buildToolsVersion "25.0.2"
    defaultConfig {
        applicationId "com.wifi.analytics"
        minSdkVersion 9
        targetSdkVersion 25
        versionCode 1
        versionName &qu
首页 上一页 1 2 3 4 5 6 下一页 尾页 3/6/6
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇两个可能会经常用到的简便方法 下一篇Android下获取FPS的几种方法

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目