android gradle配置详解

aaptOptions——安卓gradle 一、前言 今天进行分享 aaptOptions 配置。aapt 全称为 Android Asset Packaging Tool,即为Android资源打包工具。可以通过其来进行配置打包的细节。 二、aaptOptions 结构简析 1、存在形式 会映射为 com.android.build.gradle.internal.dsl.aaptOptions 类。该类比较简单,没有继承任何类 2、所属... 阅读详情

AppExtension类及其属性

可能大部分人看到AppExtension类会感觉到非常的陌生,其实我们在app中的build.gradle中填写配置信息的时候,经常看到它,它是什么呢?

如果你按ctrl+鼠标左键对着Android{},点击进去就知道了,其实android{…}表示的就是AppExtension这个类。

如图:

image

我们再来看看AppExtension继承关系:

image

除了AppExtension之外还有2个类与之相似,LibraryExtension和TestExtension

如果是module项目作为lib使用,那么lib下的build.gradle中的android对应的是LibraryExtension


AppExtension的属性

  • aaptOptions:aapt是一个可以将资源文件编译成二进制文件的工具。aaptOptions表示aapt工具设置的可选项参数。
  • adbExecutable:adb从编译sdk时执行
  • adbOptions:adb的可选项参数
  • applicationVariants:应用变体列表
  • ==buildToolsVersion==:构建工具版本(必要的)
  • buildTypes:构建类型(一般是release和debug,还可以自定义)
  • compileOptions:编译可选项参数
  • ==compileSdkVersion==:编译sdk版本(必要的)
  • dataBinding:Data Binding可选项参数(关于DataBinding的使用)
  • defualtConfig:默认配置,对于所有的打包项目
  • defualtPublishConfig:默认是release。使用参考
  • dexOptions:Dex可选项参数。
  • externalNativeBuild:native编译支持。参考
  • flavorDimensionList:
  • generatePureSplits:是否拆成多个APK
  • jacoco:JaCoCo可选项参数
  • lintOptions:Lint工具可选项参数
  • ndkDirectory:ndk目录(一般在local.properties中)
  • packagingOptions:packaging的可选参数
  • productFlavors:项目所有flavor
  • publishNonDefualt:不仅仅使用默认的publish artifacts。可参考defualtPublishConfig。
  • resourcePrefix:创建新资源时使用的前缀。
  • sdkDirectory:sdk目录(一般在local.properties中)
  • signingConfigs:签名文件的可选项参数
  • sourceSets:资源文件目录指定(Android中有自己的AndroidSourceSets,这个一般用于assets,jin等目录)
  • splits:splits类型。
  • testBuildType:测试构建类型
  • testOptions:测试可选项参数
  • testVariants:测试变体
  • unitTestVariants:单元测试变体
  • variantFilter:变体过滤器

加粗的表示DSL语言的闭包

如:

buildTypes { }
 
  • 1
  • 1

AppExtension的方法: 
- flavorDimensions(dimension):指定flavor名称 
- useLibraray(name):请求使用一个lib库 
- useLibrary(name,required):与上面解释一样。


AppExtension的配置闭包(Configration blocks)

与app中build.gradle中android{}一样,代码中由AppExtension类表示。其他的配置闭包也一样。

  • aaptOptions{}
aaptOptions{}代码由AaptOptions类表示。

AaptOptions的属性:
1.additionalParameters:额外参数,List类型。
2.cruncherEnabled:如果PNG图片是否可以大量快速的处理,boolean类型。 true表示可以。
3.cruncherProcesses:快速处理,可能需要更多的内存和CPU。int类型。默认0,值越大处理越快,需要的内存和CPU也越大。
4.failOnMissingConfigEntry:如果没有找到一个配置,就返回一个错误。Boolean值,默认false。
5.ignoreAssetsPattern:忽略Assets模块。
6.moCompress:拓展文件不会打包进apk中。


用法(详细用法可能需要去看看文档了):

aaptOptions{
    cruncherEnabled true//快速处理PNG图片
}
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

AaptOptions官方文档


  • adbOption{}
adbOptions{}对应的是AdbOptions

AdbOptions的属性:
1.installOptions:apk安装的可选参数。
2.timeOutInMs:使用adb的超时时间。

不常用

 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

  • buildTypes{}
buildTypes{}对应的是BuildType类

buildTypes的属性:

1.applicationIdSuffix:应用id后缀(给Applica)
2.consumerProguardFiles:混淆文件包含在arr包中。
3.debuggable:是否生成一个debug的apk
4.embedMicroApp:可穿戴设备app是否可以使用这个编译类型
5.javaCompileOption:Java编译配置参数
6.jniDebuggable:这个编译类型的配置是否可以与debuggable的native代码生成一个apk
7.manifestPlaceholders:清单占位符
8.minifyEnabled:是否缩小
9.multiDexEnabled:是否拆成多个Dex
10.multiDexKeepFile:指定文本文件编译进主Dex文件中
11.multiDexKeepProguard:指定混淆文件编译进主Dex文件中
12.name:build type的名字
13.proguardFiles:混淆文件
14.pseudoLocalesEnabled:是否生成伪现场apk(如果没有提供混淆规则文件,则设置默认的混淆规则文件(SDK/tools/proguard/proguard-android.txt))
15.renderscriptDebuggable:使用RenderScript编译器的优化级别。
16.shrinkResources:是否去除未利用的资源,默认false,表示不去除。
17.signingConfig:签名配置
18.testCoverageEnabled:测试覆盖率是否被激活。
19.useJack:过时
20.versionNameSuffix:版本名称后缀
21.zipAlignEnable:是否使用zipalign工具压缩。

------------------------------------------------------

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):设置一个混淆配置文件。


------------------------------------------------------------


buildType用法:

  buildTypes {
        release {
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            shrinkResources true
            zipAlignEnabled true
            debuggable false
            //...
        }

        debug{
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            shrinkResources true
            zipAlignEnabled true
            debuggable true
            //...
        }
    }


 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67

BuildType官方文档


  • compileOptions{}
compileOptions{}对应的是CompileOptions


CompileOptions的属性:
1.encoding:Java源文件的编码格式
2.incremental:是否应该使用Java编写的Gradle新的增量模型
3.sourceCompatibility:指定编译编译.java文件的jdk版本
4.targetCompatibility:确保class文件与targetCompatibility指定版本,或者更新的java虚拟机兼容


不太常用

 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

  • dataBinding{}
dataBinding{}对应的是DataBindingOptions


DataBindingOptions的属性:

1.addDefualtAdapters:是否添加一个默认的data binding适配器。默认true。
2.enabled:是否使用data binding
3.version:data binding使用版本


dataBinding的使用:

dataBinding{
    enabled true
}
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

关于DataBinding的详细用法


  • defualtConfig{}
defaultConfig{}是所有flavor都共有的配置。

英文解释:The default configuration, inherited by all product flavors (if any are defined).


defaultConfig的使用:

 defaultConfig {
        applicationId "com.example.zhang.demo"
        minSdkVersion 15
        targetSdkVersion 25
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}

 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

如果项目中包含多个Module,可以将共有的minSdkVersion和targetSdkVersion抽取到Project中的build.gradle文件中。具体细节下一章节。


  • dexOptions{}
dexOptions{}对应的是DexOptions

DexOptions属性:

1.additionalParameters:给dx添加一系列附加的参数
2.javaMaxHeapSize:当调用dx时指定-Xmx值。
3.jumboMode:使用jumbo(庞大的)模式
4.keepRuntimeAnnotatedClasses:保持所有类中的运行时的注解在主Dex中。
5.maxProcessCount:可以使用Dex的最大并发进程数。默认为4。
6.optimize:运行在dx编译器是否有optimize标记。
7.preDexLibraries:是否预先dex库,它可以改善增量的生成,但是在clear build可能会变慢
8.threadCount:当dx运行时使用的线程的数量。默认4个。


dexOptions{}的用法:

dexOptions {
    preDexLibraries  false
    javaMaxHeapSize "4g"
}

 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21

  • externalNativeBuild{}
externalNativeBuild{}对应的是ExternalNativeBuild

ExternalNativeBuild的属性:

1.cmake:CMake工具编译选项。
2.ndkBuild:ndk-build选项。


在externalNativeBuild{}中有2个模块,cmake{}和ndkBuild{}模块

------------------------------------------------
cmake{}对应的是CmakeOptions

CmakeOption的属性:
1.path:你的CmakeLists.txt编译脚本的相对路径。

--------------------------------------------------
ndkBuild{}对应的是NdkBuildOptions

NdkBuildOptions的属性:
1.path:你的Android.mk文件的相对路径。

--------------------------------------------------


externalNativeBuild{}的用法:

externalNativeBuild{
    ndkBuild{
        path file("src\\main\\jni\\Android.mk")
    }

    cmake {
        path "src/main/cpp/CMakeLists.txt"
    }
}

 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37

Android Studio2.2 配置NDK

Android studio 2.2 使用cmake编译NDK


  • jacoco{}
jacoco{}对应于JacocoOptions

JacocoOptions的属性:
1.version:过时

英文原文:
note: this property is deprecated and will be removed in a future version of the plugin.

 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

  • lintOptions{}
lintOptions{}对应于LintOptions


LintOptions的属性:
1.abortOnError:如果发现错误,lint工具是否应该退出这个程序。true表示退出。
2.absolutePaths:是否在输出错误的时候,lint应该展示出全路径。默认是相对路径,也就是默认false。
3.check:精确的检查(搜集)问题的集合,默认情况下,任何问题都可以通过LintOptions.getEnable()启用,没有问题可以通过LintOptions.getDisable()使之无效。
4.checkAllWarnings:是否检查所有警告,包括那些默认关闭。
5.disable:通过id's来压制这个问题,允许修改
6.enable:通过id's来处理这个问题,循序修改,他会将添加id,并返回一个集合。
7.explainIssues:返回lint是否包含错误问题的解释(注意:HTML和XML报告会无条件的去做,忽略这个设置)。
8.htmlOutput:html输出方式。
9.htmlReport:我们应该是否写一个HTML报告,默认true, 这个使用场景由LintOptions.getHtmlOutput()控制。
10.ignoreWarings:lint仅仅检查错误,忽略警告。
11.lintConfig:默认配置文件作为备份。
12.noLines:lint在输出错误日志的时候,是否包含行数。默认true。
13.quiet:lint是否应该quiet(安静)。如:报告文件写入路径,不写消息。
14.severityOverrides:An optional map of severity overrides. The map maps from issue id's to the corresponding severity to use, which must be "fatal", "error", "warning", or "ignore".
15.showAll:lint是否包含所有的输出。
16.textOutput:文本输出方式。
17.textReport:是否是文本报告写入,默认false。
18.warningAsErrors:lint是否把警告当做错误来处理。
19.xmlOutput:XML输出方式。
20.xmlReport:XML格式写入报告,默认true。

------------------------------------------------

LintOptions的方法:

1.check(id):检查这个id的问题的集合
2.check(ids):
3.disable(id):将id添加到不用启动的问题集
4.disable(ids):
5.enable(id):将id添加到启动的问题集
6.enable(ids)
7.error(id):将id添加到错误的问题集
8.error(ids)
9.fatal(id):将id添加到fatal级别的问题集
10.fatal(ids)
11.ignore(id):将id添加到ignore级别的问题集
12.ignore(ids)
13.waring(id):将id添加到waring级别的问题集
14.waring(ids)

------------------------------------------------

lintOptions{}的一般用法:

lintOptions {
    abortOnError false
}

 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52

LintOptions官方文档


  • packagingOptions{}
packagingOptions{}对应的是PackagingOptions

Packaging options有三组路径:first-picks,merges和excludes:


packagingOptions{}的用法:

packagingOptions {
    pickFirsts = [] // Not really needed because the default is empty.
    merges = []     // Not really needed because the default is empty.
    excludes = []
}

 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

PackagingOptions官方文档


  • productFlavors{}
 manifestPlaceholders:设置打包渠道)productFlavors.all {    //平台id    flavor -> flavor.manifestPlaceholders = [UMENG_CHANNEL_VALUE: name]}12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849501234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950" data-snippet-id="ext.b1a48a92cb402df9f2399a3f023caa45" data-snippet-saved="false" data-codota-status="done" style="white-space: nowrap; word-wrap: break-word; box-sizing: border-box; position: relative; overflow-y: hidden; overflow-x: auto; margin-top: 0px; margin-bottom: 1.1em; font-family: "Source Code Pro", monospace; padding: 5px 5px 5px 60px; font-size: 14px; line-height: 1.45; word-break: break-all; color: rgb(51, 51, 51); background-color: rgba(128, 128, 128, 0.0470588); border: 0px solid rgb(136, 136, 136); border-radius: 0px;">productFlavors{}对应的是ProductFlavors

ProductFlavors的属性:

1.applicationId:应用程序ID。
2.applicationIdSuffix:应用程序ID后缀。
3.consumerProguardFiles:混淆规则文件被包含在aar包中。
4.dimension:flavor名称的尺寸。
5.externalNativeBuild:详情见externalNativeBuild{}
6.flavorDeminsion:过时
7.generatedDensities:过时
8.jackOption:jack配置可选项。
9.javaCompileOptions:Java编译配置参数
10.manifestPlaceholders:manifest占位符
11.multiDexEnabled:是否进行dex拆分
12.multiDexKeepFile:文本文件编译进主dex文件中。
13.multiDexKeepProgroud:文本文件作为混淆规则编译进主dex文件中
14.ndk:ndk配置
15.proguardFiles:混淆文件
16.signingConfig:这个flavor的签名配置信息
17.testApplicationId:测试应用ID
18.testFunctionalTest:
19.testHandleProfiling:
20.testInstrumentationRunner:
21.testInstrumentionRunnerArguments:
22.useJack:过时
23.verctorDrawables:生成矢量图支持
24.versionCode:版本号
25.versionName:版本名
26.versionNameSuffix:版本名后缀
27.wearAppUnbundled:是否对嵌入式穿戴app进行拆分模式。如果true,那么这个app将在应用市场被分发为穿戴设备的app。



productFlavor{}的用法:

productFlavors {

        googlePlay {
        }

        xiaomi {
        }
}
//所有打包配置(批量处理打包渠道--> manifestPlaceholders:设置打包渠道)
productFlavors.all {
    //平台id
    flavor -> flavor.manifestPlaceholders = [UMENG_CHANNEL_VALUE: name]
}

 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50

ProductFlavor官方文档


  • signingConfig{}
signingConfig{}对应的是SigningConfig

SigningConfig的属性:

1.keyAlias:签名使用key的别名
2.KeyPassword:签名使用的key的密码
3.storeFile:store签名文件
4.storePassword:store签名密码
5.storeType:store签名类型
6.v1SigningEnabled:是否使用jar签名(又名v1签名)。
7.v2SigningEnabled:是否使用apk签名(又名v2签名)。


signingConfig{}的用法:

signingConfigs {
    config {
        keyAlias '...'
        keyPassword '...'
        storeFile file('C:/../Key.jks')
        storePassword '...'
    }
}

 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24

  • sourceSets{}
sourceSets{}对应的AndroidSourceSet

AndroidSourceSet的属性:

1.aidl:aidl目录
2.assets:assets目录
3.compileConfiguraName:编译配置资源目录。
4.java:java代码目录(需要编译成.class文件)
5.jni:jni资源目录
6.jniLibs:jni库目录
7.manifest:AndroidManifest.xml资源文件
8.name:source set名称。
9.packageConfigurationName:运行时配置的资源集。
10.providedConfigurationName:仅仅编译时配置的资源集。
11.renderscript:RenderScript脚本资源目录
12.res:Android资源目录
13.resource:java资源被复制到输出到javaresource目录


AndroidSourceSet的方法:
1.setRoot(path):资源集的根目录,所有的资源都在这个跟目录下。


sourceSets{}的使用:

sourceSets {
    //在main目录中
    main {
        //assets目录设置
        assets.srcDirs = ['assets']
        //jni目录设置
        jni.srcDirs 'src/main/jni'
        //jni库设置
        jniLibs.srcDir 'src/main/jniLibs'
    }
}

 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37

  • splits{}
splits{}对应的是Splites

Splits的属性:

1.abi:ABI设置
2.abiFilters:用于多个apk的ABI筛选列表
3.density:密度设置
4.densityFilters:用于多个apk的密度筛选列表
5.language:语言设置。
6.languageFilters:用于多个apk的语言筛选列表

-----------------------------------------------------


Spiltes对应有三个模块,abi{},density{},language{}


abi{}对应的是AbiSplitOptions

AbiSplitsOptions的属性:
1.applicableFilters:返回此范围的所有适用筛选器的列表。
2.enable:是否在这个范围分裂
3.universalApk:是否创建所有可用的ABIs一个APK。


AbiSplitesOptions的方法:
1.exclude(excludes):排除一些值。
2.include(include):包含一些值。
3.reset():重新设置split配置。

----------------------------------------------------------

density{}对应的是DensitySplitOptions

DensitySplitOptions的属性:
1.applicableFilters:返回此范围的所有适用筛选器的列表。
2.auto:编译系统是否确定分割“language-*”文件夹中的资源。
3.compatibleScreen:兼容屏幕列表
4.enable:是否拆分


DensitySplitOptions的方法:
1.exclude(exclude):排除一些值
2.include(include):包含一些值
3.reset():重新设置split配置。


-------------------------------------------------------

language{}对应的是LanguageSplitOptions

LanguageSplitOptions的属性:
1.enable:如果true,就是拆分language


LanguageSplitOptions的方法:
1.include(include):包含一个模型。


---------------------------------------------------------

splits{}的用法:

splits {
    density {
        enable true
        exclude 'ldpi', 'mdpi'
        compatibleScreens 'normal', 'large', 'xlarge'
    }
} 

生成结果:
app-hdpi-release.apk
app-universal-release.apk
app-xhdpi-release.apk
app-xxhdpi-release.apk
app-xxxhdpi-release.apk

splits {
    abi {
      enable true
      reset()
      include 'x86', 'armeabi-v7a', 'mips'
      universalApk true
    }
}

这个就是生成不同手机架构的app

 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89

APK-splite官方文档

Splite官方文档

参考文章


  • testOptions{}
testOptions{}对应的是TestOptions

TestOptions的属性:
1.reportDir:报告目录
2.resultDir:结果目录
3.unitTests:单元测试配置参数

TestOptions包含unitTests{}

-------------------------------------------------------

unitTests{}对应的是UnitTestOptions

UnitTestOptions的属性:
1.returnDefaultValues:无论unmocked方法从android.jar中抛出异常或是默认值(0或null)。


UnitTestOtions的方法:
all(configClosure):配置所有单元测试任务。

-------------------------------------------------

testOptions{}的使用:

testOptions {
    resultsDir = "$project.buildDir/foo/results"
}


 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29

参考文档


AppExtension文档

Gradle翻译

使用Gradle构建Android项目 新项目中,使用了Google I/O 2013发布的新工具,使用Gradle构建android项目,并且在新版的Intellig IDEA以及google的Android Studio对其支持。本文就介绍一下怎么使用gradle构建android项目,进行多个版本编译。 Gradle是什么? Gradle是以Groovy为基础,面向java应用,基于DSL语法的自动化构建工具。是goo 阅读详情

相关推荐

Android Studio下载及安装和Gradle的配置

android studio 下载及安装和gradle的配置

adminstate的博客 6万+

Android Studio gradle配置详解

android gradle配置详解(一)AppExtension类及其属性可能大部分人看到AppExtension类会感觉到非常的陌生,其实我们在app中的build.gradle中填写配置信息的时候,经常看到它,它是什么呢?如果你按ctrl+鼠标左键对着android{},点击进去就知道了,其实android{…}表示的就是AppExtension这个类。如图:我们再来看看AppExtensio

Widsom的博客 3万+

[Android Studio系列(五)] Android Studio手动配置Gradle的方法

1 问题(1) android sutdio第一次打开一个工程巨慢怎么办? (2) 手动配置Gradle Home为什么总是无效? (3) 明明已经下载了Gradle,配置了gradle home,为什么打开工程还是去自动下载Gradle?2 简介(1) Android Studio怎么知道该用哪个Gradle呢? AS一个项目所用的Gradle是由我们的工程中下面这个文件决定的: {yo

梧桐那时雨 10万+

Android studio3.5.2配置OpenCV4.2.0 C++(OpenCV4版本都适用)及配置过程中产生的一些问题

前言 这篇文章的出现完全基于巧合,对于一个没有配置过环境的孩子,作者第一次感受到了配置环境的痛苦,OpenCV给了这个卑微的作者惨痛的教训,配置环境本身就是一件令人痛苦的事情,某些傻孩子却偏偏还要选择使用最新版本,对于本就不富裕的家庭来说更是雪上加霜,奉劝看到这篇文章的朋友们,千万不要在初学的时候选用最新版本,不然你会发现你非常无助,网上的攻略全部只能作为参考,所有的内容都需要自己进行尝试和改进,对于初学者来说十分痛苦。下面请各位一起见证一下这份痛苦。 准备工作 到此网址下载OpenCV4.2.0(4版本的

Sluonbby的博客 2110

Android Gradle进阶配置指南

minifyEnabled true proguardFiles getDefaultProguardFile(‘proguard-android.txt’), ‘proguard-rules.txt’ } }签名配置: storeFile : keystore文件 storePassword : 密码 keyAlias : 别名 keyPassword : 别名密码 v2SigningEnabled : 启用V2签名方案 minifyEnabled : 是否开启混淆 shrinkResources : 是

adsvfmhlih的博客 2134

Android gradle和gradle插件配置

在Android Studio(as)中选择File > Project Structure > Project菜单,配置gradle version(gradle版本),gradle plugin version(gradle插件版本) Gradle版本与对应的Gradle插件版本是有要求的,详见网址: https://developer.android.google.cn...

king_zh1的博客 2653

【Android Gradle 插件】AaptOptions 配置 ② ( additionalParameters 附加参数配置 | --rename-manifest-package 配置 )

一、--rename-manifest-package 重写 AndroidManifest 中的包名

让 学习 成为一种 习惯 ( 韩曙亮 の 技术博客 ) 1887

如何用SoulChat2.0快速克隆你的心理咨询师?手把手教你搭建AI数字孪生体

本文详细介绍了如何利用SoulChat2.0框架快速构建心理咨询师的AI数字孪生体。通过其核心PsyDT技术,仅需少量真实案例即可合成风格数据并微调大模型,从而低成本地创建能高度模仿特定咨询师语言风格和专业技术的AI分身,适用于预约访谈、心理教育等辅助场景,实现高效的人机协作。

julia4scientist的博客 978

关于Android Studio的Gradle各项配置

配置插件仓库和插件获取策略。配置项目的依赖解析方式,确保依赖从官方仓库获取,避免本地仓库问题。设置了项目名称。表示项目包含一个名为app的子模块,适用于多模块项目。在国内可能会遇到的问题,就是网络问题,导致我们没法正常下载到所需的插件和以来,因而我们通常会添加镜像源google() // Google仓库,主要用于 Android 相关的插件mavenCentral() // Maven 中央仓库gradlePluginPortal() // Gradle 官方插件仓库。

qq1342753906的博客 1万+

工业以太网通讯Profinet协议详解

Profinet是通过西门子控制系统被广泛使用的工业通信协议,是一种较新的,基于以太网的工业通讯协议。

mydatai的专栏 8853

Simscape Multiboby学习笔记1——跟着官网学Multibody

文章目录一. 引言二. Simscape Multibody自学之路三. 本教程的目录 一. 引言 最近在倒腾Matlab的动力学仿真,起因是看到有人推荐Matlab的multbody模块,一经了解之下简直惊为天人。作为一名Matlab的小粉,看到这么好用的模块简直不要太开心,之前用simulink搭飞行器的仿真模型,虽然能够仿真看到六自由度位移,毕竟不能可视化,还是很不够直观,而且simulink仿真(以及更费力的脚本文件仿真)需要精确建模,模型不精确计算也是天差地别。而Multibody在具备其他动力学

qq_30267617的博客 8241

android studio的gradle配置,Android Studio中Gradle基本配置详解

GradleAndroid Studio 使用 Gradle 构建工具,而 Gradle 继承了强大、灵活的 Ant 和 Maven 丰富的依赖管理,配置管理简单,脚本编写方便灵活,插件模块化。Gradle 构建工具是任务驱动型的构建工具,并且可以通过各种 Plugin 插件扩展功能以适应各种构建任务。对应 Android 项目的 Gradle 插件就是 Android Gradle Plugin...

weixin_32349577的博客 3860

机械臂的运动学分析-工业机器人

机械臂的运动学是研究机械臂各连杆坐标系之间的运动关系,是对机械臂进行运动控制的基础。本章分析了所设计的六自由度机械臂的运动学。理论上六自由度机械臂的工作空间是一个近似球形区域,能够覆盖机械臂所在的位置,但由于机械臂关节的运动范围受到限制,机械臂末端会存在一些不能到达的工作死区,使得机械臂的工作范围和灵活性受到限制。理论上六自由度机械臂的工作空间是一个近似球形区域,能够覆盖机械臂所在的位置,但由于机械臂关节的运动范围受到限制,机械臂末端会存在一些不能到达的工作死区,使得机械臂的工作范围和灵活性受到限制。

qq_59137727的博客 6648

Android Studio 配置Gradle总结

一, 问题:①换个新电脑安装完Android Sutdio第一次打开一个工程巨慢怎么办? ② 手动配置Gradle Home为什么总是无效? ③ 明明已经下载了Gradle,配置了gradle home,为什么打开工程还是去自动下载Gradle?二 简介(1) Android Studio怎么知道该用哪个Gradle呢? AS一个项目所用的Gradle是由我们的工程中下面这个文件决定的

iblade的博客 8万+

MQL5教程 01 MT5有关EA的操作、MetaEditor 工具栏主要功能

MQL5教程 01 MT5有关EA的操作、MetaEditor 工具栏主要功能

weixin_42830015的博客 3989

终于找到两个稳定好用的Docker镜像加速源,拉取速度提升几十倍!

国内使用Docker经常遇到镜像拉取慢、超时失败的问题🐳 本文分享两个亲测好用的免费镜像加速源⚡ 实测拉取速度从十几分钟缩短到几十秒,稳定性接近100%📊 支持一键配置脚本,支持多平台使用✨

XiaoqiangClub的博客 953

Android Studio下载及安装和Gradle的配置(全网最全)

修改:gradle-wrapper.properties文件,如果想要指定版本的gradle,修改distributionUrl中的版本,只改后面的版本就行,防止自动下载慢,可以把提前下载的好的zip包,放到(C:\Users\Administrator.gradle\wrapper\dists\gradle-7.x.x-bin\6a41zxkdtcxs8rphpq6y0069z目录下,注意不要解压)。方法1:直接把构建好的apk文件,拖入到虚拟设备里,会自动安装。.ini文件是存放我们avd的位置。

Button12138的博客 1932

RT-DETR算法优化改进:Backbone改进 | HGBlock完美结合PPHGNetV2 GhostConv

GhostConv助力RT-DETR ,HGBlock与PPHGNetV2 GhostConv完美结合

①答疑群聊服务;②YOLO大模型知识问答系统;③计算机视觉论文生成智能体; 2911

Android Gradle 常用配置,安卓开发内存优化

// sourceSets sourceSets { main { jniLibs.srcDirs ‘libs’ println “\nsourceSets 配置情况:” sourceSets.all { set -> println “[${set.name}]的文件是 ${set.java.srcDirs}” } } } } 自动签名 生成签名文件 Build -> Generate Signed Bundle / APK Next -> Create new… 填写路径,密码,别名

m0_66145060的博客 604

LLM制造业最佳实践:基于大语言模型处理最优化问题,制造业如何更优排产,提升资源利用率

随着制造业数字化转型加速,生产排产优化成为提升企业效率和竞争力的关键环节。大语言模型(LLM)凭借其强大的多模态数据处理、动态优化和智能推理能力,在复杂排产场景中展现出独特优势。谷歌、DeepSeek等机构的研究表明,LLM可通过自然语言交互和生成式决策,突破传统优化算法的局限性。本报告结合半导体行业实践案例与技术路径,系统分析LLM在排产优化中的应用潜力与挑战。

shiter编写程序的艺术 939

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

Android Studio gradle 配置

说明:AndroidStudio 安装时,gradle的默认安装路径在: C:\Users\{用户名}\.gradle\wrapper\dists 如下图所示: 一、window 10 系统: 直接在path变量下增加gradle环境变量的配置: C:\Users\{用户名}\.gradle\wrapper\dists\gradle-3.3-all\55gk2rcmfc6p2

lebsharing的专栏 2248

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

安卓开发-AndroidStudio-Gradle国内镜像配置

【代码】安卓开发-AndroidStudio-Gradle国内镜像配置。

无痕坚守本心的博客 3054

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

Android Gradle相关配置解析

Gradle是一个基于Apache Ant和Apache Maven概念的项目自动化建构工具。它使用一种基于Groovy的特定领域语言来声明项目设置,而不是传统的XML。当前其支持的语言限于Java、Groovy和Scala,计划未来将支持更多的语言。怎么看上面都是一段很官方的解释,对于入门的人来说简直是一个噩梦般的解释(包括以前的我)。那下面我就用通俗一点语言说说我的理解。Gradle就是工程的管理,帮我们做了依赖,打包,部署,发布,各种渠道的差异管理等工作。

qq_39431405的博客 1143

mac android studio gradle 本地,Mac OS环境变量配置(Android Studio之Gradle)

以gradle环境变量配置为例:Android Studio 自带的gradle路径为:/Applications/Android\ Studio.app/Contents/gradle/gradle-2.8/bin1.打开终端2.输入:vim ~/.bash_profile3.进入编辑模式4.在文本末尾添加如下信息export GRADLE_HOME=/Applications/Android\...

weixin_36059283的博客 523

android studio 环境配置(网络配置、Gradle配置)

安卓开发环境 Android Studio Ladybug | 2024.2.1 Patch 2。下载的zip文件不用解压目录下面,再重新build,会自动解压。网络配置过后,gradle不能下载的情况可以手动下载(官网"jdk版本 jdk 11。")存放到对应的目录下。

weixin_42115825的博客 2615
上一篇: Activity四种启动模式
下一篇: AndroidStudio上传自己的项目到Bintray jCenter远程仓库!
yh_coco
博客等级 码龄14年 3粉丝 11原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值