Commit 1731a16d authored by Mikkel Nygaard Ravn's avatar Mikkel Nygaard Ravn Committed by GitHub

Make consistent use of gradle wrapper (#10993)

parent 52795630
......@@ -8,6 +8,6 @@
/captures
GeneratedPluginRegistrant.java
/gradle
gradle-wrapper.jar
/gradlew
/gradlew.bat
......@@ -23,6 +23,10 @@ android {
}
defaultConfig {
minSdkVersion 16
targetSdkVersion 25
versionCode 1
versionName "0.0.1"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
......
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.yourcompany.complexLayout"
android:versionCode="1"
android:versionName="0.0.1">
package="com.yourcompany.complexLayout">
<uses-sdk android:minSdkVersion="16" android:targetSdkVersion="21" />
<uses-permission android:name="android.permission.INTERNET"/>
<application android:name="io.flutter.app.FlutterApplication" android:label="complex_layout" android:icon="@mipmap/ic_launcher">
......
buildscript {
repositories {
jcenter()
maven {
url "https://maven.google.com"
}
}
dependencies {
classpath 'com.android.tools.build:gradle:2.2.3'
classpath 'com.android.tools.build:gradle:2.3.3'
}
}
......@@ -20,12 +23,9 @@ allprojects {
rootProject.buildDir = '../build'
subprojects {
project.buildDir = "${rootProject.buildDir}/${project.name}"
project.evaluationDependsOn(':app')
}
task clean(type: Delete) {
delete rootProject.buildDir
}
task wrapper(type: Wrapper) {
gradleVersion = '2.14.1'
}
#Fri Jun 23 08:50:38 CEST 2017
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-3.3-all.zip
......@@ -8,6 +8,6 @@
/captures
GeneratedPluginRegistrant.java
/gradle
gradle-wrapper.jar
/gradlew
/gradlew.bat
......@@ -23,6 +23,10 @@ android {
}
defaultConfig {
minSdkVersion 16
targetSdkVersion 25
versionCode 1
versionName "0.0.1"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
......
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.yourcompany.microbenchmarks"
android:versionCode="1"
android:versionName="0.0.1">
package="com.yourcompany.microbenchmarks">
<uses-sdk android:minSdkVersion="16" android:targetSdkVersion="21" />
<uses-permission android:name="android.permission.INTERNET"/>
<application android:name="io.flutter.app.FlutterApplication" android:label="microbenchmarks" android:icon="@mipmap/ic_launcher">
......
buildscript {
repositories {
jcenter()
maven {
url "https://maven.google.com"
}
}
dependencies {
classpath 'com.android.tools.build:gradle:2.2.3'
classpath 'com.android.tools.build:gradle:2.3.3'
}
}
......@@ -20,12 +23,9 @@ allprojects {
rootProject.buildDir = '../build'
subprojects {
project.buildDir = "${rootProject.buildDir}/${project.name}"
project.evaluationDependsOn(':app')
}
task clean(type: Delete) {
delete rootProject.buildDir
}
task wrapper(type: Wrapper) {
gradleVersion = '2.14.1'
}
#Fri Jun 23 08:50:38 CEST 2017
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-3.3-all.zip
......@@ -8,6 +8,6 @@
/captures
GeneratedPluginRegistrant.java
/gradle
gradle-wrapper.jar
/gradlew
/gradlew.bat
......@@ -23,6 +23,10 @@ android {
}
defaultConfig {
minSdkVersion 16
targetSdkVersion 25
versionCode 1
versionName "0.0.1"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
......
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.yourcompany.channels"
android:versionCode="1"
android:versionName="0.0.1">
<uses-sdk android:minSdkVersion="16" android:targetSdkVersion="21" />
package="com.yourcompany.channels">
<!-- The INTERNET permission is required for development. Specifically,
flutter needs it to communicate with the running application
......
buildscript {
repositories {
jcenter()
maven {
url "https://maven.google.com"
}
}
dependencies {
classpath 'com.android.tools.build:gradle:2.2.3'
classpath 'com.android.tools.build:gradle:2.3.3'
}
}
......@@ -26,7 +29,3 @@ subprojects {
task clean(type: Delete) {
delete rootProject.buildDir
}
task wrapper(type: Wrapper) {
gradleVersion = '2.14.1'
}
#Fri Jun 23 08:50:38 CEST 2017
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-3.3-all.zip
......@@ -8,6 +8,6 @@
/captures
GeneratedPluginRegistrant.java
/gradle
gradle-wrapper.jar
/gradlew
/gradlew.bat
......@@ -23,6 +23,10 @@ android {
}
defaultConfig {
minSdkVersion 16
targetSdkVersion 25
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
......
......@@ -3,11 +3,7 @@
found in the LICENSE file.
-->
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.yourcompany.integration_ui"
android:versionCode="1"
android:versionName="0.0.1">
<uses-sdk android:minSdkVersion="16" android:targetSdkVersion="21" />
package="com.yourcompany.integration_ui">
<!-- The INTERNET permission is required for development. Specifically,
flutter needs it to communicate with the running application
......
buildscript {
repositories {
jcenter()
maven {
url "https://maven.google.com"
}
}
dependencies {
classpath 'com.android.tools.build:gradle:2.2.3'
classpath 'com.android.tools.build:gradle:2.3.3'
}
}
......@@ -26,7 +29,3 @@ subprojects {
task clean(type: Delete) {
delete rootProject.buildDir
}
task wrapper(type: Wrapper) {
gradleVersion = '2.14.1'
}
#Fri Jun 23 08:50:38 CEST 2017
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-3.3-all.zip
......@@ -8,6 +8,6 @@
/captures
GeneratedPluginRegistrant.java
/gradle
gradle-wrapper.jar
/gradlew
/gradlew.bat
......@@ -4,11 +4,7 @@
found in the LICENSE file.
-->
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="io.flutter.examples.manual_tests"
android:versionCode="1"
android:versionName="0.0.1">
<uses-sdk android:minSdkVersion="16" android:targetSdkVersion="21" />
package="io.flutter.examples.manual_tests">
<!-- The INTERNET permission is required for development. Specifically,
flutter needs it to communicate with the running application
......
buildscript {
repositories {
jcenter()
maven {
url "https://maven.google.com"
}
}
dependencies {
classpath 'com.android.tools.build:gradle:2.2.3'
classpath 'com.android.tools.build:gradle:2.3.3'
}
}
......@@ -26,7 +29,3 @@ subprojects {
task clean(type: Delete) {
delete rootProject.buildDir
}
task wrapper(type: Wrapper) {
gradleVersion = '2.14.1'
}
#Fri Jun 23 08:50:38 CEST 2017
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-3.3-all.zip
......@@ -44,3 +44,12 @@ Available examples include:
- **Stocks** The [stocks](stocks) demo shows how one might structure
an application with several screens.
Note on Gradle wrapper files in `.gitignore`:
Gradle wrapper files should normally be checked into source control.
The example projects don't do that to avoid having several copies of the
wrapper binary in the Flutter repo. Instead, the Gradle wrapper is
injected by Flutter tooling, and the wrapper files are .gitignore'd to
avoid making the Flutter repository dirty as a side effect of running
the examples.
......@@ -8,6 +8,8 @@
/captures
GeneratedPluginRegistrant.java
/gradle
# Gradle wrapper files should normally be checked into source control.
# See ../../README.md
gradle-wrapper.jar
/gradlew
/gradlew.bat
......@@ -23,6 +23,11 @@ android {
}
defaultConfig {
applicationId "io.flutter.examples.catalog"
minSdkVersion 16
targetSdkVersion 25
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
......
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.yourcompany.animated_list"
android:versionCode="1"
android:versionName="0.0.1">
<uses-sdk android:minSdkVersion="16" android:targetSdkVersion="21" />
package="com.yourcompany.animated_list">
<!-- The INTERNET permission is required for development. Specifically,
flutter needs it to communicate with the running application
......
buildscript {
repositories {
jcenter()
maven {
url "https://maven.google.com"
}
}
dependencies {
classpath 'com.android.tools.build:gradle:2.2.3'
classpath 'com.android.tools.build:gradle:2.3.3'
}
}
......@@ -26,7 +29,3 @@ subprojects {
task clean(type: Delete) {
delete rootProject.buildDir
}
task wrapper(type: Wrapper) {
gradleVersion = '2.14.1'
}
#Fri Jun 23 08:50:38 CEST 2017
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-3.3-all.zip
......@@ -8,6 +8,8 @@
/captures
GeneratedPluginRegistrant.java
/gradle
# Gradle wrapper files should normally be checked into source control.
# See ../../README.md
gradle-wrapper.jar
/gradlew
/gradlew.bat
......@@ -23,10 +23,12 @@ android {
}
defaultConfig {
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
// TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
applicationId "io.flutter.examples.gallery"
minSdkVersion 16
targetSdkVersion 25
versionCode 1
versionName "0.0.1"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
......
......@@ -4,11 +4,7 @@
found in the LICENSE file.
-->
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="io.flutter.examples.gallery"
android:versionCode="1"
android:versionName="0.0.1">
<uses-sdk android:minSdkVersion="16" android:targetSdkVersion="21" />
package="io.flutter.examples.gallery">
<!-- The INTERNET permission is required for development. Specifically,
flutter needs it to communicate with the running application
......
buildscript {
repositories {
jcenter()
maven {
url "https://maven.google.com"
}
}
dependencies {
classpath 'com.android.tools.build:gradle:2.2.3'
classpath 'com.android.tools.build:gradle:2.3.3'
}
}
......@@ -26,7 +29,3 @@ subprojects {
task clean(type: Delete) {
delete rootProject.buildDir
}
task wrapper(type: Wrapper) {
gradleVersion = '2.14.1'
}
#Fri Jun 23 08:50:38 CEST 2017
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-3.3-all.zip
......@@ -8,6 +8,8 @@
/captures
GeneratedPluginRegistrant.java
/gradle
# Gradle wrapper files should normally be checked into source control.
# See ../../README.md
gradle-wrapper.jar
/gradlew
/gradlew.bat
......@@ -23,6 +23,11 @@ android {
}
defaultConfig {
applicationId "io.flutter.examples.flutter_view"
minSdkVersion 16
targetSdkVersion 25
versionCode 1
versionName "0.0.1"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
......
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.view"
android:versionCode="1"
android:versionName="0.0.1">
<uses-sdk android:minSdkVersion="16" android:targetSdkVersion="21" />
package="com.example.view">
<!-- The INTERNET permission is required for development. Specifically, flutter needs it to communicate with the running application
to allow setting breakpoints, to provide hot reload, etc.
......
buildscript {
repositories {
jcenter()
maven {
url "https://maven.google.com"
}
}
dependencies {
classpath 'com.android.tools.build:gradle:2.2.3'
classpath 'com.android.tools.build:gradle:2.3.3'
}
}
......@@ -26,7 +29,3 @@ subprojects {
task clean(type: Delete) {
delete rootProject.buildDir
}
task wrapper(type: Wrapper) {
gradleVersion = '2.14.1'
}
#Fri Jun 23 08:50:38 CEST 2017
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-3.3-all.zip
......@@ -8,6 +8,8 @@
/captures
GeneratedPluginRegistrant.java
/gradle
# Gradle wrapper files should normally be checked into source control.
# See ../../README.md
gradle-wrapper.jar
/gradlew
/gradlew.bat
......@@ -23,10 +23,12 @@ android {
}
defaultConfig {
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
// TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
applicationId "io.flutter.examples.hello_world"
minSdkVersion 16
targetSdkVersion 25
versionCode 1
versionName "0.0.1"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
......
......@@ -4,11 +4,7 @@
found in the LICENSE file.
-->
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="io.flutter.examples.hello_world"
android:versionCode="1"
android:versionName="0.0.1">
<uses-sdk android:minSdkVersion="16" android:targetSdkVersion="21" />
package="io.flutter.examples.hello_world">
<!-- The INTERNET permission is required for development. Specifically,
flutter needs it to communicate with the running application
......
buildscript {
repositories {
jcenter()
maven {
url "https://maven.google.com"
}
}
dependencies {
classpath 'com.android.tools.build:gradle:2.2.3'
classpath 'com.android.tools.build:gradle:2.3.3'
}
}
......@@ -26,7 +29,3 @@ subprojects {
task clean(type: Delete) {
delete rootProject.buildDir
}
task wrapper(type: Wrapper) {
gradleVersion = '2.14.1'
}
#Fri Jun 23 08:50:38 CEST 2017
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-3.3-all.zip
......@@ -8,6 +8,8 @@
/captures
GeneratedPluginRegistrant.java
/gradle
# Gradle wrapper files should normally be checked into source control.
# See ../../README.md
gradle-wrapper.jar
/gradlew
/gradlew.bat
......@@ -23,6 +23,11 @@ android {
}
defaultConfig {
applicationId "io.flutter.examples.layers"
minSdkVersion 16
targetSdkVersion 25
versionCode 1
versionName "0.0.1"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
......
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="io.flutter.examples.Layers"
android:versionCode="1"
android:versionName="0.0.1">
<uses-sdk android:minSdkVersion="16" android:targetSdkVersion="21" />
package="io.flutter.examples.Layers">
<!-- The INTERNET permission is required for development. Specifically,
flutter needs it to communicate with the running application
......
buildscript {
repositories {
jcenter()
maven {
url "https://maven.google.com"
}
}
dependencies {
classpath 'com.android.tools.build:gradle:2.2.3'
classpath 'com.android.tools.build:gradle:2.3.3'
}
}
......@@ -20,12 +23,9 @@ allprojects {
rootProject.buildDir = '../build'
subprojects {
project.buildDir = "${rootProject.buildDir}/${project.name}"
project.evaluationDependsOn(':app')
}
task clean(type: Delete) {
delete rootProject.buildDir
}
task wrapper(type: Wrapper) {
gradleVersion = '2.14.1'
}
#Fri Jun 23 08:50:38 CEST 2017
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-3.3-all.zip
......@@ -8,6 +8,8 @@
/captures
GeneratedPluginRegistrant.java
/gradle
# Gradle wrapper files should normally be checked into source control.
# See ../../README.md
gradle-wrapper.jar
/gradlew
/gradlew.bat
......@@ -23,8 +23,12 @@ android {
}
defaultConfig {
applicationId "io.flutter.examples.platform_channel"
minSdkVersion 16
targetSdkVersion 25
versionCode 1
versionName "0.0.1"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
applicationId "com.example.platformchannel"
}
buildTypes {
......
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.platformchannel"
android:versionCode="1"
android:versionName="0.0.1">
<uses-sdk android:minSdkVersion="16" android:targetSdkVersion="21" />
package="com.example.platformchannel">
<!-- The INTERNET permission is required for development. Specifically,
flutter needs it to communicate with the running application
......
buildscript {
repositories {
jcenter()
maven {
url "https://maven.google.com"
}
}
dependencies {
classpath 'com.android.tools.build:gradle:2.2.3'
classpath 'com.android.tools.build:gradle:2.3.3'
}
}
......@@ -26,7 +29,3 @@ subprojects {
task clean(type: Delete) {
delete rootProject.buildDir
}
task wrapper(type: Wrapper) {
gradleVersion = '2.14.1'
}
#Fri Jun 23 08:50:38 CEST 2017
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-3.3-all.zip
......@@ -8,6 +8,8 @@
/captures
GeneratedPluginRegistrant.java
/gradle
# Gradle wrapper files should normally be checked into source control.
# See ../../README.md
gradle-wrapper.jar
/gradlew
/gradlew.bat
......@@ -23,10 +23,12 @@ android {
}
defaultConfig {
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
// TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
applicationId "io.flutter.examples.platform_view"
minSdkVersion 16
targetSdkVersion 25
versionCode 1
versionName "0.0.1"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
......
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="io.flutter.examples.platform_view"
android:versionCode="1"
android:versionName="0.0.1">
<uses-sdk
android:minSdkVersion="16"
android:targetSdkVersion="21" />
package="io.flutter.examples.platform_view">
<!-- The INTERNET permission is required for development. Specifically,
flutter needs it to communicate with the running application
......
buildscript {
repositories {
jcenter()
maven {
url "https://maven.google.com"
}
}
dependencies {
classpath 'com.android.tools.build:gradle:2.2.3'
classpath 'com.android.tools.build:gradle:2.3.3'
}
}
......@@ -26,7 +29,3 @@ subprojects {
task clean(type: Delete) {
delete rootProject.buildDir
}
task wrapper(type: Wrapper) {
gradleVersion = '2.14.1'
}
#Fri Jun 23 08:50:38 CEST 2017
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-3.3-all.zip
......@@ -8,6 +8,8 @@
/captures
GeneratedPluginRegistrant.java
/gradle
# Gradle wrapper files should normally be checked into source control.
# See ../../README.md
gradle-wrapper.jar
/gradlew
/gradlew.bat
......@@ -23,8 +23,12 @@ android {
}
defaultConfig {
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
applicationId "io.flutter.examples.stocks"
minSdkVersion 16
targetSdkVersion 25
versionCode 1
versionName "0.0.1"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
......
......@@ -4,11 +4,7 @@
found in the LICENSE file.
-->
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="io.flutter.examples.stocks"
android:versionCode="1"
android:versionName="0.0.1">
<uses-sdk android:minSdkVersion="16" android:targetSdkVersion="21" />
package="io.flutter.examples.stocks">
<!-- The INTERNET permission is required for development. Specifically,
flutter needs it to communicate with the running application
......
buildscript {
repositories {
jcenter()
maven {
url "https://maven.google.com"
}
}
dependencies {
classpath 'com.android.tools.build:gradle:2.2.3'
classpath 'com.android.tools.build:gradle:2.3.3'
}
}
......@@ -26,7 +29,3 @@ subprojects {
task clean(type: Delete) {
delete rootProject.buildDir
}
task wrapper(type: Wrapper) {
gradleVersion = '2.14.1'
}
#Fri Jun 23 08:50:38 CEST 2017
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-3.3-all.zip
......@@ -6,7 +6,6 @@ import '../base/common.dart';
import '../base/context.dart';
import '../base/file_system.dart';
import '../base/io.dart';
import '../base/os.dart';
import '../base/platform.dart';
import '../base/process_manager.dart';
import '../base/version.dart';
......@@ -25,27 +24,9 @@ AndroidStudio get androidStudio =>
// /Applications/Android Studio.app/Contents/
// $HOME/Applications/Android Studio.app/Contents/
// $STUDIO_HOME/gradle/gradle-X.Y.Z/bin/gradle
final Version minGradleVersion = new Version(2, 14, 1);
final RegExp _dotHomeStudioVersionMatcher =
new RegExp(r'^\.AndroidStudio([^\d]*)([\d.]+)');
/// Locate Gradle.
String get gradleExecutable {
// See if the user has explicitly configured gradle-dir.
final String gradleDir = config.getValue('gradle-dir');
if (gradleDir != null) {
if (fs.isFileSync(gradleDir))
return gradleDir;
return fs.path.join(
gradleDir, 'bin', platform.isWindows ? 'gradle.bat' : 'gradle'
);
}
return androidStudio?.gradleExecutable ?? os.which('gradle')?.path;
}
String get javaPath => androidStudio?.javaPath;
class AndroidStudio implements Comparable<AndroidStudio> {
......@@ -58,7 +39,6 @@ class AndroidStudio implements Comparable<AndroidStudio> {
final Version version;
final String configured;
String _gradlePath;
String _javaPath;
bool _isValid = false;
final List<String> _validationMessages = <String>[];
......@@ -98,11 +78,6 @@ class AndroidStudio implements Comparable<AndroidStudio> {
return null;
}
String get gradlePath => _gradlePath;
String get gradleExecutable => fs.path
.join(_gradlePath, 'bin', platform.isWindows ? 'gradle.bat' : 'gradle');
String get javaPath => _javaPath;
bool get isValid => _isValid;
......@@ -246,40 +221,6 @@ class AndroidStudio implements Comparable<AndroidStudio> {
return;
}
Version latestGradleVersion;
List<FileSystemEntity> gradlePaths;
try {
gradlePaths = fs.directory(fs.path.join(directory, 'gradle')).listSync();
for (FileSystemEntity entry in gradlePaths.where((FileSystemEntity e) =>
e.basename.startsWith('gradle-') && e is Directory)) {
final Version version =
new Version.parse(entry.basename.substring('gradle-'.length)) ??
Version.unknown;
if (latestGradleVersion == null || version > latestGradleVersion) {
latestGradleVersion = version;
if (version >= minGradleVersion) {
_gradlePath = entry.path;
}
}
}
} catch (e) {
printTrace('Unable to determine Gradle version: $e');
}
if (latestGradleVersion == null) {
_validationMessages.add('Gradle not found.');
} else if (_gradlePath == null) {
_validationMessages.add('Gradle version $minGradleVersion required. '
'Found version $latestGradleVersion.');
} else if (processManager.canRun(gradleExecutable)) {
_isValid = true;
_validationMessages.add('Gradle version $latestGradleVersion');
} else {
_validationMessages.add(
'Gradle version $latestGradleVersion at $_gradlePath is not executable.');
}
final String javaPath = platform.isMacOS ?
fs.path.join(directory, 'jre', 'jdk', 'Contents', 'Home') :
fs.path.join(directory, 'jre');
......@@ -293,6 +234,7 @@ class AndroidStudio implements Comparable<AndroidStudio> {
final String javaVersion = versionLines.length >= 2 ? versionLines[1] : versionLines[0];
_validationMessages.add('Java version $javaVersion');
_javaPath = javaPath;
_isValid = true;
} else {
_validationMessages.add('Unable to determine bundled Java version.');
}
......
......@@ -4,10 +4,6 @@
import 'dart:async';
import '../base/file_system.dart';
import '../base/io.dart';
import '../base/platform.dart';
import '../base/process_manager.dart';
import '../base/version.dart';
import '../doctor.dart';
import '../globals.dart';
......@@ -27,10 +23,6 @@ class AndroidStudioValidator extends DoctorValidator {
validators.addAll(studios
.map((AndroidStudio studio) => new AndroidStudioValidator(studio)));
}
final String cfgGradleDir = config.getValue('gradle-dir');
if (cfgGradleDir != null) {
validators.add(new ConfiguredGradleValidator(cfgGradleDir));
}
return validators;
}
......@@ -84,54 +76,3 @@ class NoAndroidStudioValidator extends DoctorValidator {
statusInfo: 'not installed');
}
}
class ConfiguredGradleValidator extends DoctorValidator {
final String cfgGradleDir;
ConfiguredGradleValidator(this.cfgGradleDir) : super('Gradle');
@override
Future<ValidationResult> validate() async {
ValidationType type = ValidationType.missing;
final List<ValidationMessage> messages = <ValidationMessage>[];
messages.add(new ValidationMessage('gradle-dir = $cfgGradleDir'));
String gradleExecutable = cfgGradleDir;
if (!fs.isFileSync(cfgGradleDir)) {
gradleExecutable = fs.path.join(
cfgGradleDir, 'bin', platform.isWindows ? 'gradle.bat' : 'gradle');
}
String versionString;
if (processManager.canRun(gradleExecutable)) {
type = ValidationType.partial;
final ProcessResult result =
processManager.runSync(<String>[gradleExecutable, '--version']);
if (result.exitCode == 0) {
versionString = result.stdout
.toString()
.split('\n')
.firstWhere((String s) => s.startsWith('Gradle '))
.substring('Gradle '.length);
final Version version = new Version.parse(versionString) ?? Version.unknown;
if (version >= minGradleVersion) {
type = ValidationType.installed;
} else {
messages.add(new ValidationMessage.error(
'Gradle version $minGradleVersion required. Found version $versionString.'));
}
} else {
messages
.add(new ValidationMessage('Unable to determine Gradle version.'));
}
} else {
messages
.add(new ValidationMessage('Gradle not found at $gradleExecutable'));
}
messages.add(new ValidationMessage(
'Flutter supports building with Gradle from Android Studio.\n'
'Consider removing your gradle-dir setting by running:\nflutter config --gradle-dir='));
return new ValidationResult(type, messages, statusInfo: versionString);
}
}
......@@ -22,6 +22,7 @@ import 'android_studio.dart';
const String gradleManifestPath = 'android/app/src/main/AndroidManifest.xml';
const String gradleAppOutV1 = 'android/app/build/outputs/apk/app-debug.apk';
const String gradleAppOutDirV1 = 'android/app/build/outputs/apk';
const String gradleVersion = '3.3';
String _cachedGradleAppOutDirV2;
......@@ -104,16 +105,6 @@ String _calculateGradleAppOutDirV2() {
return gradleAppOutDirV1;
}
String locateSystemGradle({ bool ensureExecutable: true }) {
final String gradle = gradleExecutable;
if (ensureExecutable && gradle != null) {
final File file = fs.file(gradle);
if (file.existsSync())
os.makeExecutable(file);
}
return gradle;
}
String locateProjectGradlew({ bool ensureExecutable: true }) {
final String path = fs.path.join(
'android', platform.isWindows ? 'gradlew.bat' : 'gradlew'
......@@ -132,14 +123,27 @@ String locateProjectGradlew({ bool ensureExecutable: true }) {
String ensureGradle() {
String gradle = locateProjectGradlew();
if (gradle == null) {
gradle = locateSystemGradle();
if (gradle == null)
throwToolExit('Unable to locate gradle. Please install Android Studio.');
_injectGradleWrapper();
gradle = locateProjectGradlew();
}
printTrace('Using gradle from $gradle.');
return gradle;
}
void _injectGradleWrapper() {
copyDirectorySync(cache.getArtifactDirectory('gradle_wrapper'), fs.directory('android'));
final String propertiesPath = fs.path.join('android', 'gradle', 'wrapper', 'gradle-wrapper.properties');
if (!fs.file(propertiesPath).existsSync()) {
fs.file(propertiesPath).writeAsStringSync('''
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\\://services.gradle.org/distributions/gradle-$gradleVersion-all.zip
''', flush: true,
);
}
}
/// Create android/local.properties if needed, and update Flutter settings.
void updateLocalProperties({String projectPath, String buildMode}) {
final File localProperties = (projectPath == null)
......@@ -226,7 +230,7 @@ Future<Null> buildGradleProjectV2(String gradle, String buildModeName, String ta
final String assembleTask = "assemble${toTitleCase(buildModeName)}";
// Run 'gradle assemble<BuildMode>'.
final Status status = logger.startProgress('Running \'gradle $assembleTask\'...', expectSlowOperation: true);
final Status status = logger.startProgress('Running \'gradlew $assembleTask\'...', expectSlowOperation: true);
final String gradlePath = fs.file(gradle).absolute.path;
final List<String> command = <String>[gradlePath];
if (!logger.isVerbose) {
......
......@@ -23,10 +23,13 @@ android {
}
defaultConfig {
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
// TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
applicationId "{{androidIdentifier}}"
minSdkVersion 16
targetSdkVersion 25
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
......
buildscript {
repositories {
jcenter()
maven {
url "https://maven.google.com"
}
}
dependencies {
......
......@@ -28,10 +28,13 @@ android {
}
defaultConfig {
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
// TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
applicationId "{{androidIdentifier}}"
minSdkVersion 16
targetSdkVersion 25
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
......
buildscript {
repositories {
jcenter()
maven {
url "https://maven.google.com"
}
}
dependencies {
......
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="{{androidIdentifier}}"
android:versionCode="1"
android:versionName="0.0.1">
<uses-sdk android:minSdkVersion="{{androidMinApiLevel}}" android:targetSdkVersion="21" />
package="{{androidIdentifier}}">
<!-- The INTERNET permission is required for development. Specifically,
flutter needs it to communicate with the running application
......
......@@ -4,6 +4,9 @@ version '1.0-SNAPSHOT'
buildscript {
repositories {
jcenter()
maven {
url "https://maven.google.com"
}
}
dependencies {
......@@ -27,6 +30,10 @@ android {
buildToolsVersion '25.0.3'
defaultConfig {
minSdkVersion 16
targetSdkVersion 25
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
lintOptions {
......
......@@ -4,6 +4,9 @@ version '1.0-SNAPSHOT'
buildscript {
repositories {
jcenter()
maven {
url "https://maven.google.com"
}
}
dependencies {
......@@ -31,6 +34,10 @@ android {
main.java.srcDirs += 'src/main/kotlin'
}
defaultConfig {
minSdkVersion 16
targetSdkVersion 25
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
lintOptions {
......
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="{{androidIdentifier}}"
android:versionCode="1"
android:versionName="0.0.1">
<uses-sdk android:minSdkVersion="16" android:targetSdkVersion="21" />
package="{{androidIdentifier}}">
</manifest>
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment