Android--Android studio 的编译系统 Gradle(二)

要执行命令行,首先,在环境变量里面进行配置。

1、手动安装Gradle,bin-->gradle.bat,这个目录配置到环境变量path里面,这样才能在变量里面进行运行。

2、Android studio 里面有Gradle。这里也有Gradle

每个工程下面都有一个Gradlew.bat这个批处理。有如下命令:

gradle tasks   列出所有命令。如果build.gradle是比较复杂的、我们可以对比一下

gradle build  编译所有的任务

gradle assembleRelease  只编译Release

gradle clean 命令清楚了APP下的这个包。

Android 在Terminal  里面也提供了个shell环境。也可以在这里进行编译

理论上,只有 apply plugin 和android{}就可以进行编译了,如果工程比较复杂,可以用dependencies{}引进依赖包,进行编译

尽管已经在一个文件夹里面了,但是这里,我们的APP并没有引入library里面的包

写一些配置,知道在哪些模块下

在Eclipse 里面也可以进行,我们可以指定某一个类型的文件存在某一个目录下面,可以用gradle脚本来编译

android {      //这是一个Android模块
    compileSdkVersion 19
    buildToolsVersion "20.0.0"

    sourceSets {          //这里是区别。
        main {
            manifest.srcFile ‘AndroidManifest.xml‘
            java.srcDirs = [‘src‘]
            resources.srcDirs = [‘src‘]
            aidl.srcDirs = [‘src‘]
            renderscript.srcDirs = [‘src‘]
            res.srcDirs = [‘res‘]
            assets.srcDirs = [‘assets‘]
        }

        instrumentTest.setRoot(‘tests‘)

        debug.setRoot(‘build-types/debug‘)
        release.setRoot(‘build-types/release‘)
    }

依赖项目设置

1、引入架包

右键属性,Open Module Settings  F4 ,点击+号,第二项。引入gson.jar和gcm.jar 之后,脚本里面的文件多了两行

dependencies {
    compile fileTree(dir: ‘libs‘, include: [‘*.jar‘])
    compile ‘com.android.support:appcompat-v7:22.2.1‘
    compile files(‘libs/gcm.jar‘)
    compile files(‘libs/gson-2.3.1.jar‘)  当然,在我们修改了gson的版本之后,还是要来改这里的名称的,麻痹,不会自动改。用下面的一行代码解决。以后只要有新的架包扔到libs里面去,我们就直接引用了,不需要再写代码了  compile fileTree(include:‘*.jar‘,dir:‘libs‘)
}

2、引入本地项目,引入的刚才新建的moudle (library,)

右键属性,Open Module Settings  F4 ,点击+号,第三项。

dependencies {
    compile fileTree(dir: ‘libs‘, include: [‘*.jar‘])
    compile ‘com.android.support:appcompat-v7:22.2.1‘

    compile project(‘:library:mylibrary‘)
}

表示引用的是个模块。

引用 v4包,v7包。

右键属性,Open Module Settings  F4 ,点击+号,第一项。

  compile ‘com.android.support:appcompat-v7:22.2.1‘
    defaultConfig {
        applicationId "com.example.administrator.turnplatemenu"
        minSdkVersion 16
        targetSdkVersion 22
        versionCode 1
        versionName "1.0"
    }

这个,如果不写,manifast里面会覆盖它

3、引入远程库

右键属性,Open Module Settings  F4 ,点击+号,第一项。搜索gson库,导入之后,在APP下面的lib里面是没有的。只是会通过脚本去远程下载这个库。

编译时候修改包信息

真正强大的地方在于编译时还能修改定义,包名,versionCode  versionName,

签名文件的设置

    signingConfigs{//下面两个名字可以自定义
        releasekey{
            storeFile file(‘MYKEY‘) 
            storePassword ‘123456‘
            keyAlias ‘androidrelease‘   修改为--->andoridkey
            keyPassword(‘123456‘)
        }
        debugkey{
            storeFile file(‘MYKEY.debug‘)
            storePassword ‘android‘
            keyAlias ‘androidbugkey‘
            keyPassword android
        }
    }

有了这个结点,如何使用?

    defaultConfig {
        applicationId "com.example.administrator.turnplatemenu"
        minSdkVersion 16
        targetSdkVersion 22
        versionCode 1
        versionName "1.0"
        signingConfig signingConfigs.releasekey
    }

在defaultConfig里面加上最后一个结点,指定的签名文档。但是defaultConfig 必须定义在signingConfigs的下方。 这是脚本语言,和类不一样。

Failed to read key from keystore

这里说我们的密码有问题,这里修改为Androidkey

编译类型:buildType

用于编译出来的包是用于做什么的。一般系统默认就两种,一种release 一种debug,但是下面自己定义了两个。

buildTypes{
        forrelease{
            debuggable false
        }

        fordebug{
            applicationIdSuffix ‘.debug‘
        }
        fordailybuild{              //然后还有一个扩展,可持续继承,
            applicationIdSuffix ‘.db‘
        }
        formonkeytest{            //用monkey跑用的
            applicationIdSuffix ‘.monkey‘
        }}
    productFlavors {

     phone{      applicationID ‘com.win16.nyapplicaiton‘      signingConfig signingConfigs.releasekey     }         pad{      applicationId ‘con.win16.myapplication.hd‘      signingConfig singingConfigs.debugkey     }

      
        default_channel{}
        wandoujia{}
        _360{}
        yingyongbao{}
        xiaomi{}
        baidu{}
        huawei{}
        jifeng{}
    }

所谓ProductFlavors其实就是可定义的产品特性,配合 manifest merger 使用的时候就可以达成在一次编译过程中产生多个具有自己特性配置的版本。

上面这个配置的作用就是,为每个渠道包产生不同的 UMENG_CHANNEL_VALUE 的值。

时间: 2024-08-09 22:03:11

Android--Android studio 的编译系统 Gradle(二)的相关文章

拥抱 Android Studio 之五:Gradle 插件开发

实践出真知 笔者有位朋友,每次新学一门语言,都会用来写一个贪吃蛇游戏,以此来检验自己学习的成果.笔者也有类似体会.所谓纸上得来终觉浅,绝知此事要躬行.这一章,笔者将以开发和发布一个 Gradle 插件作为目标,加深学习成果. 官方文档给出了比较详细的实现步骤,本文的脉络会跟官方文档差不了太多,额外增补实际例子和一些实践经验.文中的代码已经托管到了 github 项目中. 需求 默认的 Android 打包插件会把 apk 命名成 module-productFlavor-buildType.ap

[翻译]Android高效开发环境(Genymotion,Gradle,Andriod Studio)

临近十一,项目接近上线,终于有些碎片时间可以查看一些博客. 这篇博客是Android开发大牛Cyril Mottier在去年写的博客,我把它翻译一下共享给国内志同道合的朋友,同时也是对自己一个很好的锻炼机会. 原博客的地址是:http://cyrilmottier.com/2013/06/27/a-productive-android-development-environment/,在国内是可以打得开.看得到的. 原文的翻译,全文如下: 在过去的6个月,我的Android开发环境改变了很多.如

[Android Studio] Android Studio使用教程(二)

以下是本次Google I/O大会发布的IDE Android Studio使用教程第二篇: 在Android Studio使用教程(一)中简要介绍了Android Studio的基本使用,包括安装.新建工程.工程结构以及主题设置.今天接着讲第二篇,主要包括如下内容: 从Eclipse导入工程到Android Studio Eclipse工程与Android Studio的区别 真机运行以及常用快捷键 需要重申一下,我所有的操作与版本是基于Mac系统,在Windows上的同学基本类似(作为一个技

Android Studio 中build.gradle文件的详细解析

困惑的build.gradle 在由Eclipse转到Android Studio之后,第一个让我感到困惑的是build.gradle这个文件了,实在话,当时我并不知道这么写是几个意思. apply plugin: 'com.android.application' android { compileSdkVersion 21 buildToolsVersion "21.1.2" defaultConfig { applicationId "com.example.test&

如何用Android Studio查看build.gradle源码

上一篇博客里讲过 build.gradle 里的每一行代码基本都是在调用一个方法,既然是这样,我们就可以用 android studio(下面简称as) 去查看它源码的方法注释说明,这样就可以理解每个方法是做什么的了,就算是在大神的 build.gradle 遇见一些没看懂的代码,也可以点进去看方法介绍来理解.就像我们在查看 SDK 里的各种方法一样. 但是有个问题,应该也有小伙伴跟我一样吧,每次在大神的 build.gradle 看到一堆不懂的代码时,按住 Ctrl 键后,鼠标移到代码上时有个

Android Studio中解决Gradle DSL method not found: 'android()'

最近导入as的项目出了这样的问题 这个问题困扰了我很长时间,好吧,搜了半天全都是runProguard的,最后在stackoverflow上搜到解决办法了: http://stackoverflow.com/questions/27735646/android-studio-gradle-dsl-method-not-found-android-error17-0 解决方法: 删掉最外层的build.gradle中的 android { compileSdkVersion 19 buildToo

解决Android Studio卡在Gradle:Resolve dependecies 'app:_debugCompile'问题

转载: http://blog.csdn.net/callzjy/article/details/53662073 关键代码 maven { url 'http://maven.oschina.net/content/groups/public/' } 完整代码 // Top-level build file where you can add configuration options common to all sub-projects/modules. buildscript { repo

android studio中使用gradle多渠道打包

尝试了用android studio中使用gradle打多渠道的程序包,果然如传说中那样神奇.本文中部分是参考Google上的内容,权当学习记录在这里吧 1.配置好AndroidManifest.xml中的渠道信息,这里以友盟统计为例吧 在<application>  ...  </application>节点中增加: <meta-data android:name="UMENG_CHANNEL" android:value="${UMENG_C

关于Android Studio里的Gradle,你所需要知道的都在这里了

Gradle介绍 Gradle是一个先进的build toolkit,可以方便的管理依赖包和定义自己的build逻辑.到底有多先进,Android Studio官方集成Gradle,Google还专门写了Android Plugin for Gradle,你们感受一下. 基础配置 Android Studio中有一个顶级的build.gradle文件,每一个module还有一个自己的build.gradle.这个文件是使用Groovy语法和Android Plugin for Gradle元素的