AndroidStudio gradle配置

(1)

bing    android studio 本地 gradle plugin 目录

(2)

AndroidStudio gradle配置

https://www.cnblogs.com/wxishang1991/p/5457878.html

 

刚刚从eclipse转androd studio遇到了很多坑,今天就帮大家来填填坑

自2013年5月16日,在I/O大会上,谷歌推出新的Android开发环境——Android Studio,并对开发者控制台进行了改进,增加了五个新的功能, google就已经彻底放弃eclipse 转as了!

我们知道as选择了最优秀的构建工具gradle

Gradle:Gradle是一个基于Apache Ant和Apache Maven概念的项目自动化建构工具。它使用一种基于Groovy的特定领域语言(DSL)来声明项目设置,抛弃了基于XML的各种繁琐配置。

面向Java应用为主。当前其支持的语言限于Java、Groovy和Scala,计划未来将支持更多的语言。前途宽广啊

下面进入主题在as中主要是配置gradle和android gradle插件,注意了gradle和(android gradle插件)一定不能混为一谈,2者是有区别的。

android gradle插件依赖于gradle.目前最新的gradle版本是2.1.3

1.gradle的配置

当我们在setting下gradle下设置gradle选择“use defalut gradle wrapper(recommended)”时,as就会根据{project.dir}\gradle\wrapper\gradle-wrapper.properties文件中的配置去gradle

 

我们用as构建android项目时,配置gradle时我们必须在{project.dir}\gradle\wrapper\gradle-wrapper.properties文件中配置gradle包,  配置的gradle必须在缓存目录( “用户主目录/.gradle/wrapper/dists/gradle-*.*.*”)或者在as安装目录下的gradle目录下存在对应的版本。

例如我的电脑:C:\Users\dsfg\.gradle\wrapper\dists\gradle-2.4-all

1

2

3

4

5

6

#Wed Apr 10 15:27:10 PDT 2013

distributionBase=GRADLE_USER_HOME

distributionPath=wrapper/dists

zipStoreBase=GRADLE_USER_HOME

zipStorePath=wrapper/dists

distributionUrl=https\://services.gradle.org/distributions/gradle-2.2.1-all.zip

这个配置的gradle如果在目录“用户主目录/.gradle/wrapper/dists/..”存在的话,as就不会去https\://services.gradle.org/distributions/gradle-2.2.1-all.zip去下载了,as就会利用该目录下的缓存,如果该目录下不存在gradle的话as就会去站点根据gradle的版本去下载到“用户主目录/.gradle/wrapper/dists/gradle-2.2.1-all”目录下.

如果选择的是“use local gradle distribution”的话表示用的是本地的gradle,本地的gradle是在as的主目录下的gradle目录下,比如我的电脑D:\android开发环境\android-studio-ide-143.2739321-windows\android-studio\gradle\gradle-2.10,而不会去缓存目录 “用户主目录/.gradle/wrapper/dists/gradle-*.*.*”中去找。

“global gradle setting”我们暂时不考虑

2.android gradle 插件的配置

上面我讨论的是gradle的配置,下面我们来说说android gradle 插件的配置,我们通过主工程项目的build.gradle(不是module的build.gradle)来设置android gradle 插件

在build.gradle中

1

2

dependencies {

    classpath 'com.android.tools.build:gradle:2.0.0'}

  这里配置的android gradle插件的版本是2.0.0,再一次强调我们一定要记住gradle版本和android gradle插件的版本根本不是一回事,不能混为一谈,

下面是android studio版本, gradle版本,android gralde 插件的版本关系对应表

 下面附上官方的文档:http://tools.android.com/tech-docs/new-build-system/version-compatibility

  所有android gradle 插件版本以及特征见 http://tools.android.com/tech-docs/new-build-system

  想深入了解Gradle核心语言Groovy的朋友可以点击下面链接,里面详细介绍了groovy特定领域语言

  Gradle build Android application groovy—DSL特定领域语言


(2)

https://qiita.com/chikurin/items/0a37c77679422023198d

AndroidStudioでGradleを使う際のメモ

追記 2014-12-24

これを書いた時のAndroid Studioのバージョンを書いていなかったので追記
Android Studio 0.8.9
Gradle Plugin 0.12.2

また、Android Studioが1.0が公開され、それに伴っていくつかGradleのビルドプロパティが変更になっています。
runProguardがminifyEnabledになったりしているので注意。
詳細は以下のリンクを参照

Migrating Gradle Projects to version 1.0.0 – Android Tools Project Site
http://tools.android.com/tech-docs/new-build-system/migrating-to-1-0-0

前置き

ちょいちょいAndroidアプリの開発を始めて、幾度と無くGradleでハマったのでアバウトなところをメモ。
Gradle自体よりもAndroid Studioよりなので注意。

Androidアプリプロジェクトとファイルの構成

Android Studioでプロジェクトを作成すると、以下の様なGradle関係のファイルが作成される。
この中の太文字のファイルについて、それらの役割と記述の意味について簡単に解説する。

project root
-app
--libs
--build.gradle
-gradle
--wrapper
-modules
--module
---build.gradle
-build.gradle
-settings.gradle

project root直下のbuild.gradle

プロジェクト名で表記されるbuild.gradle
プロジェクト全体での共通するビルド設定を記述する

ビルドスクリプトでの依存関係の記述

ビルドスクリプトで外部ライブラリを使いたい場合は、そのライブラリをスクリプトのクラスパスに追加する必要がある。
これはbuildscript中で依存関係を記述するdependenciesで行う。
ここに使用するライブラリやバージョンを記述する事で、ビルド時に必要なライブラリを自動的にDLする。

以下がそのサンプル

dependencies {
          classpath 'com.android.tools.build:gradle:0.12.+'
          classpath 'org.robolectric:robolectric-gradle-plugin:0.11.+'
    }

また、ここで記述した外部ライブラリはrepositoriesでDL先を指定できる。

repositories {
          mavenCentral()
    }

見ての通り、これはdependenciesで宣言した2つのライブラリを、Mavenのセントラルから拾ってくる。

以下はサンプルのスクリプト全体

buildscript { 
    repositories {
    //Mavenセントラルから拾ってくる
          mavenCentral()
    }
    dependencies {
          classpath 'com.android.tools.build:gradle:0.12.+'
          classpath 'org.robolectric:robolectric-gradle-plugin:0.11.+'
    }
}
allprojects {
    repositories {
          mavenCentral()
    }
 } 

また、Gradleではライブラリのバージョンを記述する際に、

classpath 'com.android.tools.build:gradle:0.12.+'

のように「+」を用いて使用するバージョンを固定しない事が出来る。
だが、Android GradleプラグインとAndroid SDK、Gradleのバージョンの関係がシビアで、何もしていないのにビルドに失敗するといった現象が起きるらしい。
その原因がこの曖昧なバージョン指定によるものらしいので、むしろ固定的に宣言したほうが無難との意見もある。

allprojectについて

このサンプルでは設定していないが、各種プロジェクトで分けたい場合は、project(':<project name>')を付けて設定することも可能。
本来ならプロジェクト毎のbuild.gradleに書くべき。
なのだけど、Gitのサブモジュールとしてプロジェクトを追加していて、そちらの編集を行いたくない場合になどに使う。

settings.gradle

ビルド対象となるプロジェクトの基本設定を行う。
Androidでは主にプロジェクト全体で必要なサブプロジェクトを記述。

外部ライブラリを使用する場合に、適当なディレクトリに配置したあと、そのディレクトリをincludeすることで使えるようになる。
たとえばvolleyをmodules/volleyみたいな感じで引っ張ってきたとすれば、

include ':app',':modules:volley'

とする。

アプリケーション内のbuild.gradle

appと表記される
アプリケーション固有の設定を行う

幾つかのブロックに分かれているので、それぞれにどういった内容を記述するかを簡単に書く。
基本的にこれらのブロックに記述の順序は無いが、signingConfigブロックとbuildTypesブロックだけは例外で、signingConfigブロックを先に記述する必要がある。

  • androidブロック(Android DSLとも)
    • defaultConfigブロック
    • signingConfigブロック
    • buildTypeブロック
    • productFlavorsブロック
  • dependenciesブロック

androidブロック(Android DSL)

compileSdkVersionやbuildToolsVsersionの記述
この中に他のブロックが含まれる

defaultConfigブロック

マニュフェストエントリなどを記述
プロダクトフレーバーの一種
ここで設定した項目は、Android StudioのProject Structureダイアログ(Flavorsタブ)に表示される
Project Structureからも直接ビルドスクリプトを編集できる

signingConfigブロック

署名付きAPKファイルを生成する際に使用する
このブロック内にreleaseConfigといったコンフィグを作成し、使用するキーストアや鍵の設定を行う
パスワードなどは直接記述しないこと
環境変数からキーストアの情報を参照する場合は次のようにする。

System.getenv("KEYS")

buildTypeブロック

Debug版やRelease版など、複数のバージョンをビルドする際に使用する
デフォルトでdebugとreleaseが用意されている
もちろん、任意のビルドタイプを追加することが可能

productFlavorsブロック

buildTypeと同じようでちょっと違う。
有料版と無料版や同じアプリの別デバイス対応など、同じプロジェクトから複数のアプリをビルドする際に使用する
また、buildType同様、使用するソースセットや依存関係の記述が可能
buildTypeとproductFlavorの組合せには、ビルドバリアント(build variant)と呼ばれる(Android Studioに表示されているアレ)

dependenciesブロック

依存関係の記述を行う

プラグインの宣言

apply plugin でAndroidプラグインの宣言を行う。

アプリケーションに対する設定

apply plugin: 'com.android.application'

Androidのライブラリプロジェクトに対しては

apply plugin: 'com.android.library'

になる。
注意点としては、AndroidプラグインとJavaプラグインは共存できない。
このため、Javaプラグインと依存関係にあるプラグインの利用もできないので注意されたし。

以下はスクリプト全体のサンプル抜粋

apply plugin: 'android'
//AndroidでGradleを使うときの記述。最近フルパスで書けって言われる
//com.android.application

//androidのビルド設定のメイン
android {
    //signingConfigsブロック
    signingConfigs {
        release_config {
            keyPassword System.getenv("KEYS")
        }
    }
    //アプリをビルドするSDKとかその辺りの設定
    compileSdkVersion 20
    buildToolsVersion '20'
    defaultConfig {
          minSdkVersion 10 //インスコ出来る最小
          targetSdkVersion 20 //インスコ対象端末
        //アプリのバージョン識別子
        //これを上げないとGoogle PlayでVerUP出来ない  
        versionCode 1 
        versionName '1.0'
    }

    //ビルドタイプブロック
    //ReleaseとDebugでそれぞれのタスクとか書ける
    buildTypes {
          release {
                //難読化のProGuard設定
                //ProGuardファイルは難読化の除外設定とかを記述する
                runProguard true
                proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
                signingConfig signingConfigs.release_config
          }
        debug{
                runProguard false
        }
    }
    //プロダクトフレーバーブロック
    productFlavors {
        //ステージングとリリースで切り替える
        staging {
            applicationId "sample.test.applicationname.staging"
        }
        product {
            applicationId "sample.test.applicationname"
        }
    }

}
//依存関係
dependencies {
    repositories {
          mavenCentral()
    }
    //外部ライブラリ関係
    //lib配下のjar郡
    compile fileTree(dir: 'libs', include: ['*.jar'])
    //サブモジュールとして追加した連中
    compile project(':modules:volley')

    androidTestCompile 'com.google.dexmaker:dexmaker:1.1'
    //external に追加するやつら
    compile 'com.google.code.gson:gson:2.2.4'
    compile 'com.android.support:appcompat-v7:20.0.0'
} 

それぞれの意味は中身に記載

あとがき

だいぶ長くなったのでこのへんで。
もっとGradleよりだとか、実用的な話は別に上げるかもしれません。

その他、参考になったサイト

など

(3)

Android Studio - gradle配置踩坑

https://www.jianshu.com/p/33089ca7c98e

1.问题

当我们从团队协作者或者开源Android项目网站上获取以Gradle构建的Android项目,并点击Open an existing Android Studio project将它导入Android Studio时,经常遇到如下Android Studio未响应的问题:

Building XXX Gradle project info

2.分析

查看idea.log,我们得知问题是由Started sync with Gradle时造成Connection Failed而引发的。

idea.log

 

原因之一可能是该Android项目所需的Gradle版本与本地存在的Gradle版本并不适配。因此,Android Studio会自动去下载该Android项目所需的Gradle版本。

然而,却跪倒在GFW面前。

3.解决

通过在Android Studio中依次点击File > Settings > Build, Execution, Deployment > Gradle,我们可以锁定当前项目使用的Gradle的位置。[2]



作者:芥丶未央
链接:https://www.jianshu.com/p/33089ca7c98e
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

 

 

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值