多语言展示
当前在线:139今日阅读:19今日分享:20

android Gradle使用指南

Android Studio是采用Gradle来构建项目的。Gradle是一个非常先进的项目构建工具,它试用了一种基于Groovy的领域特定语言(DSL)来声明项目设置,摒弃了XML(如Ant和Maven)的各种繁琐配置,熟练的使用gradle可以节省很多开发时间
工具/原料
1

androidstudio

2

jdk/sdk

1.Gradle Files简单介绍
最方便的module(app)的 build.gradle的配置内容和注释

group = 'com.example.test'apply plugin: 'com.android.application'apply plugin: 'com.neenbedankt.android-apt'android {   //1.签名配置,这样打包可以直接在terminal里使用命令打包    signingConfigs {       TestConfig {            keyAlias 'test'            keyPassword 'test'           storeFile file('../jks/'test'.jks')            storePassword 'test'       }    }    compileSdkVersion rootProject.ext.android.compileSdkVersion    buildToolsVersion rootProject.ext.android.buildToolsVersion   //2.为了让项目目录出现jniLibs文件夹   sourceSets {        main {            jniLibs.srcDir 'libs'        }    }   //3.基础配置,例如版本信息,适配最小和目标版本号等信息    defaultConfig {        multiDexEnabled true        minSdkVersion rootProject.ext.android.minSdkVersion        targetSdkVersion rootProject.ext.android.targetSdkVersion        versionCode 1        versionName '1'    }  //4.定义了编译类型,默认release和debug类型   buildTypes {        release {            minifyEnabled false            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'            signingConfig signingConfigs.TestConfig;            ndk {                abiFilters 'x86', 'armeabi'            }        }        debug {            debuggable true            minifyEnabled false            signingConfig signingConfigs.TestConfig;            ndk {                abiFilters 'x86', 'armeabi'            }        }       //5.多渠道打包,让你打包一次得到多个apk        productFlavors {            apk_release                 applicationId 'com.example.test'                // app名字,在 string.xml 不能有这个字段,会重名!!!改这个,名字就改了                resValue 'string', 'app_name', '测试项目'                // 修改 AndroidManifest.xml 里友盟的渠道变量,百度地图                manifestPlaceholders = [UMENG_APPKEY: '5abc74f8f29d98278f00023e', UMENG_MESSAGE_SECRET: '05ce4d1d9b15991405f30310427af672', BAIDU_API_KEY: 'miwLNN7vDAHxzANaFpqta6vGxbNcDG2u']              //网络请求的地址,根据实际需求,可以将一些服务常量全部配置在这里,修改时只需到这里修改就可以了                buildConfigField('String', 'API_HOST', '\'http://baidu.com\'')             }            }            // 批量打包            applicationVariants.all { variant ->                variant.outputs.each { output ->                    def outputFile = output.outputFile                    if (outputFile != null && outputFile.name.endsWith('.apk')) {                        //输出apk名称为:渠道名_版本名_时间.apk                        def fileName = '${variant.productFlavors[0].name}_v${defaultConfig.versionName}.apk'                        output.outputFile = new File(outputFile.parent, fileName)                    }                }            }        }        //解决rxjava冲突的        packagingOptions {            exclude 'META-INF/rxjava.properties'        }    }   //6.依赖    dependencies {        compile fileTree(include: ['*.jar'], dir: 'libs')        compile rootProject.ext.supportAppcompatV7        compile rootProject.ext.sqlbrite        compile rootProject.ext.rxJava        compile rootProject.ext.rxAndroid        compile rootProject.ext.rxPermissions        compile rootProject.ext.rxBinding        compile rootProject.ext.dagger2        compile rootProject.ext.retrofit        compile rootProject.ext.eventBus        compile rootProject.ext.retrofitConverterGson        compile rootProject.ext.retrofitAdapterRxJava        compile rootProject.ext.materialDialog        apt dagger2Compiler        compile project(':library'        compile project(':push')    }}

补充

若有需要,还可以自行建一个Config.gradle文件,对所有module进行管理,一般配置如下,具体需要用那些库,自行删减:def supportVersion = '25.3.1'def rxBindingVersion = '0.4.0'def rxLifecyleVersion = '0.3.1'def retrofitVersion = '2.1.0'def leakCanaryVersion = '1.3'def dagger2Version = '2.6'ext {    android = [            compileSdkVersion: 25,            buildToolsVersion: '25.0.3',            minSdkVersion    : 15,            targetSdkVersion : 25    ]    //官方库    supportV4 = 'com.android.support:support-v4:${supportVersion}'    supportAppcompatV7 = 'com.android.support:appcompat-v7:${supportVersion}'    supportDesign = 'com.android.support:design:${supportVersion}'    supportCardView = 'com.android.support:cardview-v7:${supportVersion}'    supportRecyclerView = 'com.android.support:recyclerview-v7:${supportVersion}    //Rx家族,响应式编程    rxJava = 'io.reactivex:rxjava:1.1.9'    rxAndroid = 'io.reactivex:rxandroid:1.2.1'    rxPermissions = 'com.tbruyelle.rxpermissions:rxpermissions:0.9.4@aar'    rxBinding = 'com.jakewharton.rxbinding:rxbinding:${rxBindingVersion}'    rxBindingSupportV4 = 'com.jakewharton.rxbinding:rxbinding-support-v4:${rxBindingVersion}'    rxBindingSupportAppcompatV7 = 'com.jakewharton.rxbinding:rxbinding-appcompat-v7:${rxBindingVersion}'    rxBindingSupportDesign = 'com.jakewharton.rxbinding:rxbinding-design:${rxBindingVersion}'    rxBindingSupportRecyclerView = 'com.jakewharton.rxbinding:rxbinding-recyclerview-v7:${rxBindingVersion}'    rxBindingLeanbackV17 = 'com.jakewharton.rxbinding:rxbinding-leanback-v17:${rxBindingVersion}'    rxLifecycle = 'com.trello:rxlifecycle:${rxLifecyleVersion}'    rxLifecycleComponents = 'com.trello:rxlifecycle-components:${rxLifecyleVersion}'    // retrofit    retrofit = 'com.squareup.retrofit2:retrofit:${retrofitVersion}'    retrofitConverterGson = 'com.squareup.retrofit2:converter-gson:${retrofitVersion}'    retrofitAdapterRxJava = 'com.squareup.retrofit2:adapter-rxjava:2.0.1    sqlbrite = 'com.squareup.sqlbrite:sqlbrite:1.1.2'   }'}

推荐信息