LoginSignup
30
30

More than 5 years have passed since last update.

AndroidコマンドでGradleプロジェクトを作る

Posted at

はじめに

最近好きなのはGradle。AndroidツールはGradleをサポートしている。
サクッとプロジェクトを作ってテストアプリとか作れるのはいい。

IntelliJ IDEAAndroid Studioから作ったほうが楽だと思うのだが、コマンドからでも作れることをメモしておきたい。それにGradleを理解するのに役に立った。実験的な要素も含んだメモ。

ちなみに自分はIntelliJを使っているのだが、それでプロジェクト作るとマルチプロジェクトになるからIDEから作るのはちょっと好きではないのだ。

  • ubuntu 14.04

Gradleの導入

Wrapperがあるが、Gradleを使うなら自身のPCにインストールしておいて損はない。

GVMのインストール

様々な方法があるが、自分の場合はバージョン管理も楽だしGVMから。
サイトにあるインストールスクリプトをコピペで終わり。超簡単。

$ curl -s get.gvmtool.net | bash

Gradleのインストール

GradleインストールするならGroovyもインストールしておこうじゃないか。
GroovyってのはjavaライクなGradleで使われている言語。

$ gvm install groovy    # groovyをインストール
$ gvm install gradle    # gradleをインストール

Project作成

Android SDKのパスが通っているものとする。
で、Androidツールコマンドを使ってGradleのAndroidプロジェクトを作成する。

$ android create project
    -gradle -v 1.1.3    # gradleを使用する (バージョン番号指定する)
    --target 7          # ターゲット番号(`$ android list target`で確認)
    --name hoge         # project name
    --path hoge         # プロジェクトディレクトリ名
    -- package com.caad1229.hoge    # パッケージ名
    --activity MainActivity         # アクティビティ名

# Gitでローカルブランチにコミットしておく。後半にちょっと確認したい部分があるので。
$ cd ./hoge
$ git init; git add -A; git commit -a -m "init";

Gradle Android Pluginのバージョン指定はここから。2015年4月現在、ベータを抜かした最新バージョンは1.1.3
現在も頻繁にバージョンが変わっている模様。

wrapperでビルド

で、せっかく生成してWrapperによりGradleもはいっているのでgradlewでビルドしたところエラー orz

$ cd ./hoge
$ ./gradlew build
    FAILURE: Build failed with an exception.

    * Where:
    Build file '/home/hoge/temp/hoge/build.gradle' line: 9

    * What went wrong:
    A problem occurred evaluating root project 'hoge'.
    > Could not create plugin of type 'AppPlugin'.

    * Try:
    Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.

    BUILD FAILED

    Total time: 1.703 secs

WrapperされたGradleのバージョンを確認してみると、1.12のようだ。古い。

$ cat ./gradle/wrapper/gradle-wrapper.properties
    #Wed Apr 10 15:27:10 PDT 2013
    distributionBase=GRADLE_USER_HOME
    distributionPath=wrapper/dists
    zipStoreBase=GRADLE_USER_HOME
    zipStorePath=wrapper/dists
    distributionUrl=http\://services.gradle.org/distributions/gradle-1.12-all.zip

自分のGradleでビルド

Wrapperを使わずに自分のGradleでビルドする。がこれも失敗する。

$ gradle build
    FAILURE: Build failed with an exception.

    * Where:
    Build file '/home/sasaki/temp/hoge/build.gradle' line: 17

    * What went wrong:
    A problem occurred evaluating root project 'hoge'.
    > Could not find method runProguard() for arguments [false] on BuildType_Decorated{name=release, debuggable=false, testCoverageEnabled=false, jniDebuggable=false, pseudoLocalesEnabled=false, renderscriptDebuggable=false, renderscriptOptimLevel=3, applicationIdSuffix=null, versionNameSuffix=null, minifyEnabled=false, zipAlignEnabled=true, signingConfig=null, embedMicroApp=true, mBuildConfigFields={}, mResValues={}, mProguardFiles=[], mConsumerProguardFiles=[], mManifestPlaceholders={}}.

    * Try:
    Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.

    BUILD FAILED

    Total time: 2.536 secs

理由はrunProguardの名前が1.0.0以降変わっているのだ(参考)。
なので以下のように修正する。

$ vim ./build.gradle
-            runProguard true
+            minifyEnabled true

で、再度挑戦すると成功した。

$ gradle build
    : # 省略
    check
    :build

    BUILD SUCCESSFUL

    Total time: 3.928 secs

自分のGradleでWrapperしなおす

もし、このプロジェクトを他の人に渡す場合、他の人にもGraleインストールしてくださいという必要がある。が、そんなことしたらGradleのいいところを半分以上捨てているようなもの。環境が変わってもプロジェクト単位で開発環境を保持できるwrapperがあるのがGraldeのすごい魅力的なところだと思う。

Gralde Wrapper

早速wrapperをやってみる。

$ gradle wrapper
    :wrapper

    BUILD SUCCESSFUL

    Total time: 2.826 secs

Wrapperでビルド

今度はgradlewスクリプトでビルド実行すると成功する。

$ gradle build
    : # 省略
    check
    :build

    BUILD SUCCESSFUL

    Total time: 3.928 secs

なにがどうなったのか

gitで最初のソースをコミットしているので差分を確認してみる。

$ git status
    On branch master
    Changes not staged for commit:
      (use "git add <file>..." to update what will be committed)
      (use "git checkout -- <file>..." to discard changes in working directory)

        modified:   build.gradle
        modified:   gradle/wrapper/gradle-wrapper.jar
        modified:   gradle/wrapper/gradle-wrapper.properties

    Untracked files:
      (use "git add <file>..." to include in what will be committed)

        .gradle/
        build/

    no changes added to commit (use "git add" and/or "git commit -a")

注目したいのはwrapperの中身が変わっていること。diffで確認。

$ git diff gradle/wrapper/gradle-wrapper.properties
        :   # 省略
    -distributionUrl=http\://services.gradle.org/distributions/gradle-1.12-all.zip
    +distributionUrl=https\://services.gradle.org/distributions/gradle-2.3-bin.zip

gradleのバージョンが変わっている。これで他の人が他の環境でgradlewを実行したら自分と同じ2.3を使ってビルドしてくれるはず。

おしまい

すごい初歩的なことだけど、こういったこと確認して納得できると楽しい。

30
30
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
30
30