Unverified Commit d4db7480 authored by Mikkel Nygaard Ravn's avatar Mikkel Nygaard Ravn Committed by GitHub

Add2app devicelab test (#18795)

parent 75b737ff
// Copyright (c) 2018 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
import 'dart:async';
import 'dart:io';
import 'package:flutter_devicelab/framework/framework.dart';
import 'package:flutter_devicelab/framework/utils.dart';
import 'package:path/path.dart' as path;
/// Tests that the Flutter module project template works and supports
/// adding Flutter to an existing Android app.
Future<Null> main() async {
await task(() async {
section('Create Flutter module project');
final Directory directory = await Directory.systemTemp.createTemp('module');
try {
await inDirectory(directory, () async {
await flutter(
'create',
options: <String>['--org', 'io.flutter.devicelab', '-t', 'module', 'hello'],
);
});
section('Build Android .aar');
await inDirectory(new Directory(path.join(directory.path, 'hello', '.android')), () async {
await exec('./gradlew', <String>['flutter:assembleDebug']);
});
final bool aarBuilt = exists(new File(path.join(
directory.path,
'hello',
'build',
'android_gen',
'outputs',
'aar',
'flutter-debug.aar',
)));
if (!aarBuilt) {
return new TaskResult.failure('Failed to build .aar');
}
section('Add to Android app');
final Directory hostApp = new Directory(path.join(directory.path, 'hello_host_app'));
mkdir(hostApp);
recursiveCopy(
new Directory(path.join(flutterDirectory.path, 'dev', 'integration_tests', 'android_host_app')),
hostApp,
);
copy(
new File(path.join(directory.path, 'hello', '.android', 'gradlew')),
hostApp,
);
copy(
new File(path.join(directory.path, 'hello', '.android', 'gradle', 'wrapper', 'gradle-wrapper.jar')),
new Directory(path.join(hostApp.path, 'gradle', 'wrapper')),
);
await inDirectory(hostApp, () async {
await exec('chmod', <String>['+x', 'gradlew']);
await exec('./gradlew', <String>['app:assembleDebug']);
});
final bool appBuilt = exists(new File(path.join(
hostApp.path,
'app',
'build',
'outputs',
'apk',
'debug',
'app-debug.apk',
)));
if (!appBuilt) {
return new TaskResult.failure('Failed to build .apk');
}
return new TaskResult.success(null);
} catch (e) {
return new TaskResult.failure(e.toString());
} finally {
rmTree(directory);
}
});
}
......@@ -261,6 +261,13 @@ tasks:
stage: devicelab
required_agent_capabilities: ["linux/android"]
module_test:
description: >
Checks that the module project template works and supports add2app on Android.
stage: devicelab
required_agent_capabilities: ["linux/android"]
flaky: true
flutter_gallery_instrumentation_test:
description: >
Same as flutter_gallery__transition_perf but uses Android instrumentation
......
# Android host app
Android host app for a Flutter module created using
```
$ flutter create -t module hello
```
and placed in a sibling folder to (a clone of) the host app.
Used by the `module_test.dart` device lab test.
apply plugin: 'com.android.application'
android {
compileSdkVersion 27
defaultConfig {
applicationId "io.flutter.add2app"
minSdkVersion 16
targetSdkVersion 27
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
}
dependencies {
implementation project(':flutter')
implementation 'com.android.support:appcompat-v7:27.1.1'
}
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="io.flutter.add2app">
<application android:allowBackup="false"
tools:ignore="GoogleAppIndexingWarning,MissingApplicationIcon">
<activity android:name=".MainActivity" />
</application>
</manifest>
package io.flutter.add2app;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import io.flutter.facade.Flutter;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(Flutter.createView(this, getLifecycle(), "route1"));
}
}
buildscript {
repositories {
google()
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.1.3'
}
}
allprojects {
repositories {
google()
jcenter()
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
#Mon Jun 25 14:13:36 CEST 2018
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-4.4-all.zip
include ':app'
setBinding(new Binding([gradle: this]))
evaluate(new File(settingsDir.parentFile, 'hello/.android/include_flutter.groovy'))
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