はじめに
ちょっとしたテスト用のプロジェクトを作るのに毎回AndroidStudio立ち上げるのが手間だったので、
CUIでさっくり作れる環境を準備しようと考えてました。
同じところで躓かないように備忘録がてらこちらにまとめていこうと思います。
開発環境
・OS : Windows 10
・Android SDK Tools 25.2.5
・JDK 1.8.0 Update 77
※NVIDIA CodeWorks for Android (Version 1R7)を使用して環境を構築しました。
検証内容
@echo off
rem gradleプラグインバージョン
set GradleVer=2.3.0
rem androidSDKバージョンID(id4=OS 8.0.0)
set SdkVerId=4
rem プロジェクト名
set ProjName=GradleTest
rem 出力パス
set Output="%~dp0%ProjName%"
rem パッケージ名
set Package=jp.domain.%ProjName%
rem アクティビティ名
set Activity=MainActivity
rem 同名のフォルダを削除
rd /s %ProjName%
rem プロジェクト作成
android create project -k %Package% -a %Activity% -t %SdkVerId% -n %ProjName% -p %Output% -g -v %GradleVer%
pause
こちらのバッチでプロジェクトはすんなり作れました。
続いてビルドできるか確認します。
プロジェクト直下でコマンドプロンプトからビルドバッチを実行してみたところエラーが出ました。
調べたところgradle-wrapper.properties内のgradleバージョンが1.12になっており、
build.gradleの設定と噛み合わなくてエラーになっているようです。
下記修正を加えて再度ビルドを試みます。
# 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-3.3-all.zip
# 修正前
# distributionUrl=http\://services.gradle.org/distributions/gradle-1.12-all.zip
まだエラーが出ます。
今度はbuild.gradleの書き方が古いらしい。
下記のように修正します。
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:2.3.0'
}
}
apply plugin: 'android'
android {
compileSdkVersion 'android-26'
buildToolsVersion '26.0.1'
buildTypes {
release {
// 修正後
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
// 修正前
//runProguard false
//proguardFile getDefaultProguardFile('proguard-android.txt')
}
}
// lintでもエラーが出るのでlintOptionsを追記
lintOptions {
abortOnError false
}
}
最後に
もしかしたらもっと簡単にできる方法があるかもしれませんが、
基本的にはこちらの方法でほぼまかなえると思います(思いたい)。
ここから自分なりにブラッシュアップしていこうと思います。
参考リンク
・虹とトルネード | AndroidコマンドでGradleプロジェクトを作る
・Android Gradle plugin release notes | Android Developers
・stack overflow | Gradle build: Execution failed for task ':app:lint'
・stack overflow | Android Studio Could not find method runProguard() for arguments?