mirror of
https://github.com/flutter/packages.git
synced 2025-07-01 15:23:25 +08:00
[ci] Continue .cirrus.yml alignment with flutter/plugins (#2832)
* Enable more repo checks * Remove Android from Pigeon iOS test app * Add various mostly-no-op tasks * Remove unused Java generation in ObjC test
This commit is contained in:
61
.cirrus.yml
61
.cirrus.yml
@ -107,6 +107,7 @@ task:
|
||||
# has been fixed, this can be removed and there can just be a single
|
||||
# run with --require-excerpts and no exclusions.
|
||||
- ./script/tool_runner.sh readme-check --require-excerpts --exclude=script/configs/temp_exclude_excerpt.yaml
|
||||
dependabot_script: $PLUGIN_TOOL_COMMAND dependabot-check
|
||||
version_script:
|
||||
# For pre-submit, pass the PR labels to the script to allow for
|
||||
# check overrides.
|
||||
@ -119,6 +120,14 @@ task:
|
||||
- ./script/tool_runner.sh version-check --check-for-missing-changes --pr-labels="$CIRRUS_PR_LABELS"
|
||||
- fi
|
||||
publishable_script: ./script/tool_runner.sh publish-check --allow-pre-release
|
||||
federated_safety_script:
|
||||
# This check is only meaningful for PRs, as it validates changes
|
||||
# rather than state.
|
||||
- if [[ $CIRRUS_PR == "" ]]; then
|
||||
- ./script/tool_runner.sh federation-safety-check
|
||||
- else
|
||||
- echo "Only run in presubmit"
|
||||
- fi
|
||||
- name: dart_unit_tests
|
||||
env:
|
||||
matrix:
|
||||
@ -220,6 +229,19 @@ task:
|
||||
CHANNEL: "master"
|
||||
CHANNEL: "stable"
|
||||
<< : *BUILD_ALL_PACKAGES_APP_TEMPLATE
|
||||
- name: linux-platform_tests
|
||||
# Don't run full platform tests on both channels in pre-submit.
|
||||
skip: $CIRRUS_PR != '' && $CHANNEL == 'stable'
|
||||
env:
|
||||
matrix:
|
||||
CHANNEL: "master"
|
||||
CHANNEL: "stable"
|
||||
build_script:
|
||||
- ./script/tool_runner.sh build-examples --linux
|
||||
native_test_script:
|
||||
- xvfb-run ./script/tool_runner.sh native-test --linux --no-integration
|
||||
drive_script:
|
||||
- xvfb-run ./script/tool_runner.sh drive-examples --linux
|
||||
|
||||
# Heavy-workload Linux tasks.
|
||||
# These use machines with more CPUs and memory, so will reduce parallelization
|
||||
@ -251,8 +273,16 @@ task:
|
||||
# extension_google_sign_in_as_googleapis_auth is currently not building, see
|
||||
# https://github.com/flutter/flutter/issues/89301
|
||||
- ./script/tool_runner.sh build-examples --apk --exclude=extension_google_sign_in_as_googleapis_auth
|
||||
lint_script:
|
||||
- ./script/tool_runner.sh lint-android # must come after build-examples
|
||||
native_unit_test_scipt:
|
||||
- ./script/tool_runner.sh native-test --android --no-integration
|
||||
# Upload the full lint results to Cirrus to display in the results UI.
|
||||
always:
|
||||
android-lint_artifacts:
|
||||
path: "**/reports/lint-results-debug.xml"
|
||||
type: text/xml
|
||||
format: android-lint
|
||||
- name: android-build_all_packages
|
||||
env:
|
||||
BUILD_ALL_ARGS: "apk"
|
||||
@ -290,25 +320,13 @@ task:
|
||||
- cd ../..
|
||||
- flutter packages get
|
||||
- dart testing/web_benchmarks_test.dart
|
||||
### Linux desktop tasks ###
|
||||
- name: linux-platform_tests
|
||||
# Don't run full platform tests on both channels in pre-submit.
|
||||
skip: $CIRRUS_PR != '' && $CHANNEL == 'stable'
|
||||
env:
|
||||
matrix:
|
||||
CHANNEL: "master"
|
||||
CHANNEL: "stable"
|
||||
build_script:
|
||||
- ./script/tool_runner.sh build-examples --linux
|
||||
native_test_script:
|
||||
- ./script/tool_runner.sh native-test --linux --no-integration
|
||||
|
||||
# ARM macOS tasks.
|
||||
task:
|
||||
<< : *FLUTTER_UPGRADE_TEMPLATE
|
||||
<< : *MACOS_ARM_TEMPLATE
|
||||
matrix:
|
||||
- name: macos-custom_package_tests
|
||||
# Run on macOS x64 image with Java runtime installed.
|
||||
env:
|
||||
PATH: $PATH:/usr/local/bin
|
||||
matrix:
|
||||
@ -340,6 +358,16 @@ task:
|
||||
- ./script/tool_runner.sh build-examples --ios
|
||||
native_test_script:
|
||||
- ./script/tool_runner.sh native-test --ios --ios-destination "platform=iOS Simulator,name=iPhone 13,OS=latest"
|
||||
drive_script:
|
||||
# `drive-examples` contains integration tests, which changes the UI of the application.
|
||||
# This UI change sometimes affects `xctest`.
|
||||
# So we run `drive-examples` after `native-test`; changing the order will result ci failure.
|
||||
- ./script/tool_runner.sh drive-examples --ios
|
||||
xcode_analyze_script:
|
||||
- ./script/tool_runner.sh xcode-analyze --ios
|
||||
xcode_analyze_deprecation_script:
|
||||
# Ensure we don't accidentally introduce deprecated code.
|
||||
- ./script/tool_runner.sh xcode-analyze --ios --ios-min-version=13.0
|
||||
### iOS tasks ###
|
||||
- name: ios-build_all_packages
|
||||
env:
|
||||
@ -359,8 +387,15 @@ task:
|
||||
PATH: $PATH:/usr/local/bin
|
||||
build_script:
|
||||
- ./script/tool_runner.sh build-examples --macos
|
||||
xcode_analyze_script:
|
||||
- ./script/tool_runner.sh xcode-analyze --macos
|
||||
xcode_analyze_deprecation_script:
|
||||
# Ensure we don't accidentally introduce deprecated code.
|
||||
- ./script/tool_runner.sh xcode-analyze --macos --macos-min-version=12.3
|
||||
native_test_script:
|
||||
- ./script/tool_runner.sh native-test --macos
|
||||
drive_script:
|
||||
- ./script/tool_runner.sh drive-examples --macos
|
||||
|
||||
# Intel macOS tasks.
|
||||
task:
|
||||
|
167
.github/dependabot.yml
vendored
167
.github/dependabot.yml
vendored
@ -22,3 +22,170 @@ updates:
|
||||
labels:
|
||||
- "team"
|
||||
- "team: infra"
|
||||
|
||||
- package-ecosystem: "gradle"
|
||||
directory: "/packages/animations/example/android/app"
|
||||
commit-message:
|
||||
prefix: "[animations]"
|
||||
schedule:
|
||||
interval: "weekly"
|
||||
open-pull-requests-limit: 10
|
||||
ignore:
|
||||
- dependency-name: "*"
|
||||
update-types: ["version-update:semver-minor", "version-update:semver-patch"]
|
||||
- package-ecosystem: "gradle"
|
||||
directory: "/packages/dynamic_layouts/example/android/app"
|
||||
commit-message:
|
||||
prefix: "[dynamic_lyts]"
|
||||
schedule:
|
||||
interval: "weekly"
|
||||
open-pull-requests-limit: 10
|
||||
ignore:
|
||||
- dependency-name: "*"
|
||||
update-types: ["version-update:semver-minor", "version-update:semver-patch"]
|
||||
- package-ecosystem: "gradle"
|
||||
directory: "/packages/extension_google_sign_in_as_googleapis_auth/example/android/app"
|
||||
commit-message:
|
||||
prefix: "[ext_sign_in]"
|
||||
schedule:
|
||||
interval: "weekly"
|
||||
open-pull-requests-limit: 10
|
||||
ignore:
|
||||
- dependency-name: "*"
|
||||
update-types: ["version-update:semver-minor", "version-update:semver-patch"]
|
||||
- package-ecosystem: "gradle"
|
||||
directory: "/packages/flutter_adaptive_scaffold/example/android/app"
|
||||
commit-message:
|
||||
prefix: "[scaffold]"
|
||||
schedule:
|
||||
interval: "weekly"
|
||||
open-pull-requests-limit: 10
|
||||
ignore:
|
||||
- dependency-name: "*"
|
||||
update-types: ["version-update:semver-minor", "version-update:semver-patch"]
|
||||
- package-ecosystem: "gradle"
|
||||
directory: "/packages/flutter_markdown/example/android/app"
|
||||
commit-message:
|
||||
prefix: "[markdown]"
|
||||
schedule:
|
||||
interval: "weekly"
|
||||
open-pull-requests-limit: 10
|
||||
ignore:
|
||||
- dependency-name: "*"
|
||||
update-types: ["version-update:semver-minor", "version-update:semver-patch"]
|
||||
- package-ecosystem: "gradle"
|
||||
directory: "/packages/go_router/example/android/app"
|
||||
commit-message:
|
||||
prefix: "[go_router]"
|
||||
schedule:
|
||||
interval: "weekly"
|
||||
open-pull-requests-limit: 10
|
||||
ignore:
|
||||
- dependency-name: "*"
|
||||
update-types: ["version-update:semver-minor", "version-update:semver-patch"]
|
||||
- package-ecosystem: "gradle"
|
||||
directory: "/packages/imitation_game/imitation_tests/smiley/flutter/smiley/android/app"
|
||||
commit-message:
|
||||
prefix: "[imitation]"
|
||||
schedule:
|
||||
interval: "weekly"
|
||||
open-pull-requests-limit: 10
|
||||
ignore:
|
||||
- dependency-name: "*"
|
||||
update-types: ["version-update:semver-minor", "version-update:semver-patch"]
|
||||
- package-ecosystem: "gradle"
|
||||
directory: "/packages/palette_generator/example/android/app"
|
||||
commit-message:
|
||||
prefix: "[palette_gen]"
|
||||
schedule:
|
||||
interval: "weekly"
|
||||
open-pull-requests-limit: 10
|
||||
ignore:
|
||||
- dependency-name: "*"
|
||||
update-types: ["version-update:semver-minor", "version-update:semver-patch"]
|
||||
- package-ecosystem: "gradle"
|
||||
directory: "/packages/pigeon/platform_tests/test_plugin/android"
|
||||
commit-message:
|
||||
prefix: "[pigeon]"
|
||||
schedule:
|
||||
interval: "weekly"
|
||||
open-pull-requests-limit: 10
|
||||
ignore:
|
||||
- dependency-name: "com.android.tools.build:gradle"
|
||||
update-types: ["version-update:semver-minor", "version-update:semver-patch"]
|
||||
- dependency-name: "junit:junit"
|
||||
update-types: ["version-update:semver-minor", "version-update:semver-patch"]
|
||||
- dependency-name: "org.mockito:*"
|
||||
update-types: ["version-update:semver-minor", "version-update:semver-patch"]
|
||||
- dependency-name: "androidx.test:*"
|
||||
update-types: ["version-update:semver-minor", "version-update:semver-patch"]
|
||||
- dependency-name: "org.robolectric:*"
|
||||
update-types: ["version-update:semver-minor", "version-update:semver-patch"]
|
||||
- package-ecosystem: "gradle"
|
||||
directory: "/packages/pigeon/platform_tests/test_plugin/example/android/app"
|
||||
commit-message:
|
||||
prefix: "[pigeon]"
|
||||
schedule:
|
||||
interval: "weekly"
|
||||
open-pull-requests-limit: 10
|
||||
ignore:
|
||||
- dependency-name: "*"
|
||||
update-types: ["version-update:semver-minor", "version-update:semver-patch"]
|
||||
- package-ecosystem: "gradle"
|
||||
directory: "/packages/pigeon/platform_tests/alternate_language_test_plugin/android"
|
||||
commit-message:
|
||||
prefix: "[pigeon]"
|
||||
schedule:
|
||||
interval: "weekly"
|
||||
open-pull-requests-limit: 10
|
||||
ignore:
|
||||
- dependency-name: "com.android.tools.build:gradle"
|
||||
update-types: ["version-update:semver-minor", "version-update:semver-patch"]
|
||||
- dependency-name: "junit:junit"
|
||||
update-types: ["version-update:semver-minor", "version-update:semver-patch"]
|
||||
- dependency-name: "org.mockito:*"
|
||||
update-types: ["version-update:semver-minor", "version-update:semver-patch"]
|
||||
- dependency-name: "androidx.test:*"
|
||||
update-types: ["version-update:semver-minor", "version-update:semver-patch"]
|
||||
- dependency-name: "org.robolectric:*"
|
||||
update-types: ["version-update:semver-minor", "version-update:semver-patch"]
|
||||
- package-ecosystem: "gradle"
|
||||
directory: "/packages/pigeon/platform_tests/alternate_language_test_plugin/example/android/app"
|
||||
commit-message:
|
||||
prefix: "[pigeon]"
|
||||
schedule:
|
||||
interval: "weekly"
|
||||
open-pull-requests-limit: 10
|
||||
ignore:
|
||||
- dependency-name: "*"
|
||||
update-types: ["version-update:semver-minor", "version-update:semver-patch"]
|
||||
- package-ecosystem: "gradle"
|
||||
directory: "/packages/rfw/example/hello/android/app"
|
||||
commit-message:
|
||||
prefix: "[rfw]"
|
||||
schedule:
|
||||
interval: "weekly"
|
||||
open-pull-requests-limit: 10
|
||||
ignore:
|
||||
- dependency-name: "*"
|
||||
update-types: ["version-update:semver-minor", "version-update:semver-patch"]
|
||||
- package-ecosystem: "gradle"
|
||||
directory: "/packages/rfw/example/local/android/app"
|
||||
commit-message:
|
||||
prefix: "[rfw]"
|
||||
schedule:
|
||||
interval: "weekly"
|
||||
open-pull-requests-limit: 10
|
||||
ignore:
|
||||
- dependency-name: "*"
|
||||
update-types: ["version-update:semver-minor", "version-update:semver-patch"]
|
||||
- package-ecosystem: "gradle"
|
||||
directory: "/packages/rfw/example/remote/android/app"
|
||||
commit-message:
|
||||
prefix: "[rfw]"
|
||||
schedule:
|
||||
interval: "weekly"
|
||||
open-pull-requests-limit: 10
|
||||
ignore:
|
||||
- dependency-name: "*"
|
||||
update-types: ["version-update:semver-minor", "version-update:semver-patch"]
|
||||
|
@ -1,28 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<projectDescription>
|
||||
<name>android</name>
|
||||
<comment>Project android created by Buildship.</comment>
|
||||
<projects>
|
||||
</projects>
|
||||
<buildSpec>
|
||||
<buildCommand>
|
||||
<name>org.eclipse.buildship.core.gradleprojectbuilder</name>
|
||||
<arguments>
|
||||
</arguments>
|
||||
</buildCommand>
|
||||
</buildSpec>
|
||||
<natures>
|
||||
<nature>org.eclipse.buildship.core.gradleprojectnature</nature>
|
||||
</natures>
|
||||
<filteredResources>
|
||||
<filter>
|
||||
<id>1654625234632</id>
|
||||
<name></name>
|
||||
<type>30</type>
|
||||
<matcher>
|
||||
<id>org.eclipse.core.resources.regexFilterMatcher</id>
|
||||
<arguments>node_modules|.git|__CREATED_BY_JAVA_LANGUAGE_SERVER__</arguments>
|
||||
</matcher>
|
||||
</filter>
|
||||
</filteredResources>
|
||||
</projectDescription>
|
@ -1,13 +0,0 @@
|
||||
arguments=
|
||||
auto.sync=false
|
||||
build.scans.enabled=false
|
||||
connection.gradle.distribution=GRADLE_DISTRIBUTION(WRAPPER)
|
||||
connection.project.dir=
|
||||
eclipse.preferences.version=1
|
||||
gradle.user.home=
|
||||
java.home=/Library/Java/JavaVirtualMachines/jdk-11.0.4.jdk/Contents/Home
|
||||
jvm.arguments=
|
||||
offline.mode=false
|
||||
override.workspace.settings=true
|
||||
show.console.view=true
|
||||
show.executions.view=true
|
@ -1,6 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<classpath>
|
||||
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11/"/>
|
||||
<classpathentry kind="con" path="org.eclipse.buildship.core.gradleclasspathcontainer"/>
|
||||
<classpathentry kind="output" path="bin/default"/>
|
||||
</classpath>
|
@ -1,34 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<projectDescription>
|
||||
<name>app</name>
|
||||
<comment>Project app created by Buildship.</comment>
|
||||
<projects>
|
||||
</projects>
|
||||
<buildSpec>
|
||||
<buildCommand>
|
||||
<name>org.eclipse.jdt.core.javabuilder</name>
|
||||
<arguments>
|
||||
</arguments>
|
||||
</buildCommand>
|
||||
<buildCommand>
|
||||
<name>org.eclipse.buildship.core.gradleprojectbuilder</name>
|
||||
<arguments>
|
||||
</arguments>
|
||||
</buildCommand>
|
||||
</buildSpec>
|
||||
<natures>
|
||||
<nature>org.eclipse.jdt.core.javanature</nature>
|
||||
<nature>org.eclipse.buildship.core.gradleprojectnature</nature>
|
||||
</natures>
|
||||
<filteredResources>
|
||||
<filter>
|
||||
<id>1654625234643</id>
|
||||
<name></name>
|
||||
<type>30</type>
|
||||
<matcher>
|
||||
<id>org.eclipse.core.resources.regexFilterMatcher</id>
|
||||
<arguments>node_modules|.git|__CREATED_BY_JAVA_LANGUAGE_SERVER__</arguments>
|
||||
</matcher>
|
||||
</filter>
|
||||
</filteredResources>
|
||||
</projectDescription>
|
@ -1,2 +0,0 @@
|
||||
connection.project.dir=..
|
||||
eclipse.preferences.version=1
|
@ -1,67 +0,0 @@
|
||||
def localProperties = new Properties()
|
||||
def localPropertiesFile = rootProject.file('local.properties')
|
||||
if (localPropertiesFile.exists()) {
|
||||
localPropertiesFile.withReader('UTF-8') { reader ->
|
||||
localProperties.load(reader)
|
||||
}
|
||||
}
|
||||
|
||||
def flutterRoot = localProperties.getProperty('flutter.sdk')
|
||||
if (flutterRoot == null) {
|
||||
throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.")
|
||||
}
|
||||
|
||||
def flutterVersionCode = localProperties.getProperty('flutter.versionCode')
|
||||
if (flutterVersionCode == null) {
|
||||
flutterVersionCode = '1'
|
||||
}
|
||||
|
||||
def flutterVersionName = localProperties.getProperty('flutter.versionName')
|
||||
if (flutterVersionName == null) {
|
||||
flutterVersionName = '1.0'
|
||||
}
|
||||
|
||||
apply plugin: 'com.android.application'
|
||||
apply plugin: 'kotlin-android'
|
||||
apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
|
||||
|
||||
android {
|
||||
compileSdkVersion 31
|
||||
|
||||
sourceSets {
|
||||
main.java.srcDirs += 'src/main/kotlin'
|
||||
}
|
||||
|
||||
lintOptions {
|
||||
disable 'InvalidPackage'
|
||||
}
|
||||
|
||||
defaultConfig {
|
||||
// TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
|
||||
applicationId "com.example.test_objc"
|
||||
minSdkVersion 16
|
||||
targetSdkVersion 28
|
||||
versionCode flutterVersionCode.toInteger()
|
||||
versionName flutterVersionName
|
||||
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
|
||||
}
|
||||
|
||||
buildTypes {
|
||||
release {
|
||||
// TODO: Add your own signing config for the release build.
|
||||
// Signing with the debug keys for now, so `flutter run --release` works.
|
||||
signingConfig signingConfigs.debug
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
flutter {
|
||||
source '../..'
|
||||
}
|
||||
|
||||
dependencies {
|
||||
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
|
||||
testImplementation 'junit:junit:4.12'
|
||||
androidTestImplementation 'androidx.test:runner:1.1.1'
|
||||
androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.1'
|
||||
}
|
@ -1,7 +0,0 @@
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
package="com.example.test_objc">
|
||||
<!-- Flutter needs it to communicate with the running application
|
||||
to allow setting breakpoints, to provide hot reload, etc.
|
||||
-->
|
||||
<uses-permission android:name="android.permission.INTERNET"/>
|
||||
</manifest>
|
@ -1,25 +0,0 @@
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
package="com.example.test_objc">
|
||||
<application
|
||||
android:name="${applicationName}"
|
||||
android:label="test_objc"
|
||||
android:icon="@mipmap/ic_launcher">
|
||||
<activity
|
||||
android:name=".MainActivity"
|
||||
android:launchMode="singleTop"
|
||||
android:theme="@style/LaunchTheme"
|
||||
android:configChanges="orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode"
|
||||
android:hardwareAccelerated="true"
|
||||
android:windowSoftInputMode="adjustResize">
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.MAIN"/>
|
||||
<category android:name="android.intent.category.LAUNCHER"/>
|
||||
</intent-filter>
|
||||
</activity>
|
||||
<!-- Don't delete the meta-data below.
|
||||
This is used by the Flutter tool to generate GeneratedPluginRegistrant.java -->
|
||||
<meta-data
|
||||
android:name="flutterEmbedding"
|
||||
android:value="2" />
|
||||
</application>
|
||||
</manifest>
|
@ -1,501 +0,0 @@
|
||||
// Copyright 2013 The Flutter Authors. All rights reserved.
|
||||
// Use of this source code is governed by a BSD-style license that can be
|
||||
// found in the LICENSE file.
|
||||
//
|
||||
// Autogenerated from Pigeon (v4.0.2), do not edit directly.
|
||||
// See also: https://pub.dev/packages/pigeon
|
||||
|
||||
package dev.flutter.aaclarke.pigeon;
|
||||
|
||||
import android.util.Log;
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import io.flutter.plugin.common.BasicMessageChannel;
|
||||
import io.flutter.plugin.common.BinaryMessenger;
|
||||
import io.flutter.plugin.common.MessageCodec;
|
||||
import io.flutter.plugin.common.StandardMessageCodec;
|
||||
import java.io.ByteArrayOutputStream;
|
||||
import java.nio.ByteBuffer;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
/** Generated class from Pigeon. */
|
||||
@SuppressWarnings({"unused", "unchecked", "CodeBlock2Expr", "RedundantSuppression"})
|
||||
public class MessagePigeon {
|
||||
|
||||
public enum MessageRequestState {
|
||||
PENDING(0),
|
||||
SUCCESS(1),
|
||||
FAILURE(2);
|
||||
|
||||
private int index;
|
||||
|
||||
private MessageRequestState(final int index) {
|
||||
this.index = index;
|
||||
}
|
||||
}
|
||||
|
||||
/** Generated class from Pigeon that represents data sent in messages. */
|
||||
public static class MessageSearchRequest {
|
||||
private @Nullable String query;
|
||||
|
||||
public @Nullable String getQuery() {
|
||||
return query;
|
||||
}
|
||||
|
||||
public void setQuery(@Nullable String setterArg) {
|
||||
this.query = setterArg;
|
||||
}
|
||||
|
||||
private @Nullable Long anInt;
|
||||
|
||||
public @Nullable Long getAnInt() {
|
||||
return anInt;
|
||||
}
|
||||
|
||||
public void setAnInt(@Nullable Long setterArg) {
|
||||
this.anInt = setterArg;
|
||||
}
|
||||
|
||||
private @Nullable Boolean aBool;
|
||||
|
||||
public @Nullable Boolean getABool() {
|
||||
return aBool;
|
||||
}
|
||||
|
||||
public void setABool(@Nullable Boolean setterArg) {
|
||||
this.aBool = setterArg;
|
||||
}
|
||||
|
||||
public static final class Builder {
|
||||
private @Nullable String query;
|
||||
|
||||
public @NonNull Builder setQuery(@Nullable String setterArg) {
|
||||
this.query = setterArg;
|
||||
return this;
|
||||
}
|
||||
|
||||
private @Nullable Long anInt;
|
||||
|
||||
public @NonNull Builder setAnInt(@Nullable Long setterArg) {
|
||||
this.anInt = setterArg;
|
||||
return this;
|
||||
}
|
||||
|
||||
private @Nullable Boolean aBool;
|
||||
|
||||
public @NonNull Builder setABool(@Nullable Boolean setterArg) {
|
||||
this.aBool = setterArg;
|
||||
return this;
|
||||
}
|
||||
|
||||
public @NonNull MessageSearchRequest build() {
|
||||
MessageSearchRequest pigeonReturn = new MessageSearchRequest();
|
||||
pigeonReturn.setQuery(query);
|
||||
pigeonReturn.setAnInt(anInt);
|
||||
pigeonReturn.setABool(aBool);
|
||||
return pigeonReturn;
|
||||
}
|
||||
}
|
||||
|
||||
@NonNull
|
||||
Map<String, Object> toMap() {
|
||||
Map<String, Object> toMapResult = new HashMap<>();
|
||||
toMapResult.put("query", query);
|
||||
toMapResult.put("anInt", anInt);
|
||||
toMapResult.put("aBool", aBool);
|
||||
return toMapResult;
|
||||
}
|
||||
|
||||
static @NonNull MessageSearchRequest fromMap(@NonNull Map<String, Object> map) {
|
||||
MessageSearchRequest pigeonResult = new MessageSearchRequest();
|
||||
Object query = map.get("query");
|
||||
pigeonResult.setQuery((String) query);
|
||||
Object anInt = map.get("anInt");
|
||||
pigeonResult.setAnInt(
|
||||
(anInt == null) ? null : ((anInt instanceof Integer) ? (Integer) anInt : (Long) anInt));
|
||||
Object aBool = map.get("aBool");
|
||||
pigeonResult.setABool((Boolean) aBool);
|
||||
return pigeonResult;
|
||||
}
|
||||
}
|
||||
|
||||
/** Generated class from Pigeon that represents data sent in messages. */
|
||||
public static class MessageSearchReply {
|
||||
private @Nullable String result;
|
||||
|
||||
public @Nullable String getResult() {
|
||||
return result;
|
||||
}
|
||||
|
||||
public void setResult(@Nullable String setterArg) {
|
||||
this.result = setterArg;
|
||||
}
|
||||
|
||||
private @Nullable String error;
|
||||
|
||||
public @Nullable String getError() {
|
||||
return error;
|
||||
}
|
||||
|
||||
public void setError(@Nullable String setterArg) {
|
||||
this.error = setterArg;
|
||||
}
|
||||
|
||||
private @Nullable MessageRequestState state;
|
||||
|
||||
public @Nullable MessageRequestState getState() {
|
||||
return state;
|
||||
}
|
||||
|
||||
public void setState(@Nullable MessageRequestState setterArg) {
|
||||
this.state = setterArg;
|
||||
}
|
||||
|
||||
public static final class Builder {
|
||||
private @Nullable String result;
|
||||
|
||||
public @NonNull Builder setResult(@Nullable String setterArg) {
|
||||
this.result = setterArg;
|
||||
return this;
|
||||
}
|
||||
|
||||
private @Nullable String error;
|
||||
|
||||
public @NonNull Builder setError(@Nullable String setterArg) {
|
||||
this.error = setterArg;
|
||||
return this;
|
||||
}
|
||||
|
||||
private @Nullable MessageRequestState state;
|
||||
|
||||
public @NonNull Builder setState(@Nullable MessageRequestState setterArg) {
|
||||
this.state = setterArg;
|
||||
return this;
|
||||
}
|
||||
|
||||
public @NonNull MessageSearchReply build() {
|
||||
MessageSearchReply pigeonReturn = new MessageSearchReply();
|
||||
pigeonReturn.setResult(result);
|
||||
pigeonReturn.setError(error);
|
||||
pigeonReturn.setState(state);
|
||||
return pigeonReturn;
|
||||
}
|
||||
}
|
||||
|
||||
@NonNull
|
||||
Map<String, Object> toMap() {
|
||||
Map<String, Object> toMapResult = new HashMap<>();
|
||||
toMapResult.put("result", result);
|
||||
toMapResult.put("error", error);
|
||||
toMapResult.put("state", state == null ? null : state.index);
|
||||
return toMapResult;
|
||||
}
|
||||
|
||||
static @NonNull MessageSearchReply fromMap(@NonNull Map<String, Object> map) {
|
||||
MessageSearchReply pigeonResult = new MessageSearchReply();
|
||||
Object result = map.get("result");
|
||||
pigeonResult.setResult((String) result);
|
||||
Object error = map.get("error");
|
||||
pigeonResult.setError((String) error);
|
||||
Object state = map.get("state");
|
||||
pigeonResult.setState(state == null ? null : MessageRequestState.values()[(int) state]);
|
||||
return pigeonResult;
|
||||
}
|
||||
}
|
||||
|
||||
/** Generated class from Pigeon that represents data sent in messages. */
|
||||
public static class MessageNested {
|
||||
private @Nullable MessageSearchRequest request;
|
||||
|
||||
public @Nullable MessageSearchRequest getRequest() {
|
||||
return request;
|
||||
}
|
||||
|
||||
public void setRequest(@Nullable MessageSearchRequest setterArg) {
|
||||
this.request = setterArg;
|
||||
}
|
||||
|
||||
public static final class Builder {
|
||||
private @Nullable MessageSearchRequest request;
|
||||
|
||||
public @NonNull Builder setRequest(@Nullable MessageSearchRequest setterArg) {
|
||||
this.request = setterArg;
|
||||
return this;
|
||||
}
|
||||
|
||||
public @NonNull MessageNested build() {
|
||||
MessageNested pigeonReturn = new MessageNested();
|
||||
pigeonReturn.setRequest(request);
|
||||
return pigeonReturn;
|
||||
}
|
||||
}
|
||||
|
||||
@NonNull
|
||||
Map<String, Object> toMap() {
|
||||
Map<String, Object> toMapResult = new HashMap<>();
|
||||
toMapResult.put("request", (request == null) ? null : request.toMap());
|
||||
return toMapResult;
|
||||
}
|
||||
|
||||
static @NonNull MessageNested fromMap(@NonNull Map<String, Object> map) {
|
||||
MessageNested pigeonResult = new MessageNested();
|
||||
Object request = map.get("request");
|
||||
pigeonResult.setRequest(
|
||||
(request == null) ? null : MessageSearchRequest.fromMap((Map) request));
|
||||
return pigeonResult;
|
||||
}
|
||||
}
|
||||
|
||||
private static class MessageApiCodec extends StandardMessageCodec {
|
||||
public static final MessageApiCodec INSTANCE = new MessageApiCodec();
|
||||
|
||||
private MessageApiCodec() {}
|
||||
|
||||
@Override
|
||||
protected Object readValueOfType(byte type, ByteBuffer buffer) {
|
||||
switch (type) {
|
||||
case (byte) 128:
|
||||
return MessageSearchReply.fromMap((Map<String, Object>) readValue(buffer));
|
||||
|
||||
case (byte) 129:
|
||||
return MessageSearchRequest.fromMap((Map<String, Object>) readValue(buffer));
|
||||
|
||||
default:
|
||||
return super.readValueOfType(type, buffer);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void writeValue(ByteArrayOutputStream stream, Object value) {
|
||||
if (value instanceof MessageSearchReply) {
|
||||
stream.write(128);
|
||||
writeValue(stream, ((MessageSearchReply) value).toMap());
|
||||
} else if (value instanceof MessageSearchRequest) {
|
||||
stream.write(129);
|
||||
writeValue(stream, ((MessageSearchRequest) value).toMap());
|
||||
} else {
|
||||
super.writeValue(stream, value);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/** Generated interface from Pigeon that represents a handler of messages from Flutter. */
|
||||
public interface MessageApi {
|
||||
void initialize();
|
||||
|
||||
@NonNull
|
||||
MessageSearchReply search(@NonNull MessageSearchRequest request);
|
||||
|
||||
/** The codec used by MessageApi. */
|
||||
static MessageCodec<Object> getCodec() {
|
||||
return MessageApiCodec.INSTANCE;
|
||||
}
|
||||
|
||||
/** Sets up an instance of `MessageApi` to handle messages through the `binaryMessenger`. */
|
||||
static void setup(BinaryMessenger binaryMessenger, MessageApi api) {
|
||||
{
|
||||
BasicMessageChannel<Object> channel =
|
||||
new BasicMessageChannel<>(
|
||||
binaryMessenger, "dev.flutter.pigeon.MessageApi.initialize", getCodec());
|
||||
if (api != null) {
|
||||
channel.setMessageHandler(
|
||||
(message, reply) -> {
|
||||
Map<String, Object> wrapped = new HashMap<>();
|
||||
try {
|
||||
api.initialize();
|
||||
wrapped.put("result", null);
|
||||
} catch (Error | RuntimeException exception) {
|
||||
wrapped.put("error", wrapError(exception));
|
||||
}
|
||||
reply.reply(wrapped);
|
||||
});
|
||||
} else {
|
||||
channel.setMessageHandler(null);
|
||||
}
|
||||
}
|
||||
{
|
||||
BasicMessageChannel<Object> channel =
|
||||
new BasicMessageChannel<>(
|
||||
binaryMessenger, "dev.flutter.pigeon.MessageApi.search", getCodec());
|
||||
if (api != null) {
|
||||
channel.setMessageHandler(
|
||||
(message, reply) -> {
|
||||
Map<String, Object> wrapped = new HashMap<>();
|
||||
try {
|
||||
ArrayList<Object> args = (ArrayList<Object>) message;
|
||||
MessageSearchRequest requestArg = (MessageSearchRequest) args.get(0);
|
||||
if (requestArg == null) {
|
||||
throw new NullPointerException("requestArg unexpectedly null.");
|
||||
}
|
||||
MessageSearchReply output = api.search(requestArg);
|
||||
wrapped.put("result", output);
|
||||
} catch (Error | RuntimeException exception) {
|
||||
wrapped.put("error", wrapError(exception));
|
||||
}
|
||||
reply.reply(wrapped);
|
||||
});
|
||||
} else {
|
||||
channel.setMessageHandler(null);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private static class MessageNestedApiCodec extends StandardMessageCodec {
|
||||
public static final MessageNestedApiCodec INSTANCE = new MessageNestedApiCodec();
|
||||
|
||||
private MessageNestedApiCodec() {}
|
||||
|
||||
@Override
|
||||
protected Object readValueOfType(byte type, ByteBuffer buffer) {
|
||||
switch (type) {
|
||||
case (byte) 128:
|
||||
return MessageNested.fromMap((Map<String, Object>) readValue(buffer));
|
||||
|
||||
case (byte) 129:
|
||||
return MessageSearchReply.fromMap((Map<String, Object>) readValue(buffer));
|
||||
|
||||
case (byte) 130:
|
||||
return MessageSearchRequest.fromMap((Map<String, Object>) readValue(buffer));
|
||||
|
||||
default:
|
||||
return super.readValueOfType(type, buffer);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void writeValue(ByteArrayOutputStream stream, Object value) {
|
||||
if (value instanceof MessageNested) {
|
||||
stream.write(128);
|
||||
writeValue(stream, ((MessageNested) value).toMap());
|
||||
} else if (value instanceof MessageSearchReply) {
|
||||
stream.write(129);
|
||||
writeValue(stream, ((MessageSearchReply) value).toMap());
|
||||
} else if (value instanceof MessageSearchRequest) {
|
||||
stream.write(130);
|
||||
writeValue(stream, ((MessageSearchRequest) value).toMap());
|
||||
} else {
|
||||
super.writeValue(stream, value);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/** Generated interface from Pigeon that represents a handler of messages from Flutter. */
|
||||
public interface MessageNestedApi {
|
||||
@NonNull
|
||||
MessageSearchReply search(@NonNull MessageNested nested);
|
||||
|
||||
/** The codec used by MessageNestedApi. */
|
||||
static MessageCodec<Object> getCodec() {
|
||||
return MessageNestedApiCodec.INSTANCE;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets up an instance of `MessageNestedApi` to handle messages through the `binaryMessenger`.
|
||||
*/
|
||||
static void setup(BinaryMessenger binaryMessenger, MessageNestedApi api) {
|
||||
{
|
||||
BasicMessageChannel<Object> channel =
|
||||
new BasicMessageChannel<>(
|
||||
binaryMessenger, "dev.flutter.pigeon.MessageNestedApi.search", getCodec());
|
||||
if (api != null) {
|
||||
channel.setMessageHandler(
|
||||
(message, reply) -> {
|
||||
Map<String, Object> wrapped = new HashMap<>();
|
||||
try {
|
||||
ArrayList<Object> args = (ArrayList<Object>) message;
|
||||
MessageNested nestedArg = (MessageNested) args.get(0);
|
||||
if (nestedArg == null) {
|
||||
throw new NullPointerException("nestedArg unexpectedly null.");
|
||||
}
|
||||
MessageSearchReply output = api.search(nestedArg);
|
||||
wrapped.put("result", output);
|
||||
} catch (Error | RuntimeException exception) {
|
||||
wrapped.put("error", wrapError(exception));
|
||||
}
|
||||
reply.reply(wrapped);
|
||||
});
|
||||
} else {
|
||||
channel.setMessageHandler(null);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private static class MessageFlutterSearchApiCodec extends StandardMessageCodec {
|
||||
public static final MessageFlutterSearchApiCodec INSTANCE = new MessageFlutterSearchApiCodec();
|
||||
|
||||
private MessageFlutterSearchApiCodec() {}
|
||||
|
||||
@Override
|
||||
protected Object readValueOfType(byte type, ByteBuffer buffer) {
|
||||
switch (type) {
|
||||
case (byte) 128:
|
||||
return MessageSearchReply.fromMap((Map<String, Object>) readValue(buffer));
|
||||
|
||||
case (byte) 129:
|
||||
return MessageSearchRequest.fromMap((Map<String, Object>) readValue(buffer));
|
||||
|
||||
default:
|
||||
return super.readValueOfType(type, buffer);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void writeValue(ByteArrayOutputStream stream, Object value) {
|
||||
if (value instanceof MessageSearchReply) {
|
||||
stream.write(128);
|
||||
writeValue(stream, ((MessageSearchReply) value).toMap());
|
||||
} else if (value instanceof MessageSearchRequest) {
|
||||
stream.write(129);
|
||||
writeValue(stream, ((MessageSearchRequest) value).toMap());
|
||||
} else {
|
||||
super.writeValue(stream, value);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/** Generated class from Pigeon that represents Flutter messages that can be called from Java. */
|
||||
public static class MessageFlutterSearchApi {
|
||||
private final BinaryMessenger binaryMessenger;
|
||||
|
||||
public MessageFlutterSearchApi(BinaryMessenger argBinaryMessenger) {
|
||||
this.binaryMessenger = argBinaryMessenger;
|
||||
}
|
||||
|
||||
public interface Reply<T> {
|
||||
void reply(T reply);
|
||||
}
|
||||
|
||||
static MessageCodec<Object> getCodec() {
|
||||
return MessageFlutterSearchApiCodec.INSTANCE;
|
||||
}
|
||||
|
||||
public void search(
|
||||
@NonNull MessageSearchRequest requestArg, Reply<MessageSearchReply> callback) {
|
||||
BasicMessageChannel<Object> channel =
|
||||
new BasicMessageChannel<>(
|
||||
binaryMessenger, "dev.flutter.pigeon.MessageFlutterSearchApi.search", getCodec());
|
||||
channel.send(
|
||||
new ArrayList<Object>(Arrays.asList(requestArg)),
|
||||
channelReply -> {
|
||||
@SuppressWarnings("ConstantConditions")
|
||||
MessageSearchReply output = (MessageSearchReply) channelReply;
|
||||
callback.reply(output);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
private static Map<String, Object> wrapError(Throwable exception) {
|
||||
Map<String, Object> errorMap = new HashMap<>();
|
||||
errorMap.put("message", exception.toString());
|
||||
errorMap.put("code", exception.getClass().getSimpleName());
|
||||
errorMap.put(
|
||||
"details",
|
||||
"Cause: " + exception.getCause() + ", Stacktrace: " + Log.getStackTraceString(exception));
|
||||
return errorMap;
|
||||
}
|
||||
}
|
@ -1,15 +0,0 @@
|
||||
// Copyright 2013 The Flutter Authors. All rights reserved.
|
||||
// Use of this source code is governed by a BSD-style license that can be
|
||||
// found in the LICENSE file.
|
||||
package com.example.test_objc
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import io.flutter.embedding.android.FlutterActivity
|
||||
import io.flutter.embedding.engine.FlutterEngine
|
||||
import io.flutter.plugins.GeneratedPluginRegistrant
|
||||
|
||||
class MainActivity: FlutterActivity() {
|
||||
override fun configureFlutterEngine(@NonNull flutterEngine: FlutterEngine) {
|
||||
GeneratedPluginRegistrant.registerWith(flutterEngine);
|
||||
}
|
||||
}
|
@ -1,12 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Modify this file to customize your launch splash screen -->
|
||||
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<item android:drawable="@android:color/white" />
|
||||
|
||||
<!-- You can insert your own image assets here -->
|
||||
<!-- <item>
|
||||
<bitmap
|
||||
android:gravity="center"
|
||||
android:src="@mipmap/launch_image" />
|
||||
</item> -->
|
||||
</layer-list>
|
Binary file not shown.
Before Width: | Height: | Size: 544 B |
Binary file not shown.
Before Width: | Height: | Size: 442 B |
Binary file not shown.
Before Width: | Height: | Size: 721 B |
Binary file not shown.
Before Width: | Height: | Size: 1.0 KiB |
Binary file not shown.
Before Width: | Height: | Size: 1.4 KiB |
@ -1,8 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<style name="LaunchTheme" parent="@android:style/Theme.Black.NoTitleBar">
|
||||
<!-- Show a splash screen on the activity. Automatically removed when
|
||||
Flutter draws its first frame -->
|
||||
<item name="android:windowBackground">@drawable/launch_background</item>
|
||||
</style>
|
||||
</resources>
|
@ -1,7 +0,0 @@
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
package="com.example.test_objc">
|
||||
<!-- Flutter needs it to communicate with the running application
|
||||
to allow setting breakpoints, to provide hot reload, etc.
|
||||
-->
|
||||
<uses-permission android:name="android.permission.INTERNET"/>
|
||||
</manifest>
|
@ -1,31 +0,0 @@
|
||||
buildscript {
|
||||
ext.kotlin_version = '1.6.0'
|
||||
repositories {
|
||||
google()
|
||||
mavenCentral()
|
||||
}
|
||||
|
||||
dependencies {
|
||||
classpath 'com.android.tools.build:gradle:3.5.0'
|
||||
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
|
||||
}
|
||||
}
|
||||
|
||||
allprojects {
|
||||
repositories {
|
||||
google()
|
||||
mavenCentral()
|
||||
}
|
||||
}
|
||||
|
||||
rootProject.buildDir = '../build'
|
||||
subprojects {
|
||||
project.buildDir = "${rootProject.buildDir}/${project.name}"
|
||||
}
|
||||
subprojects {
|
||||
project.evaluationDependsOn(':app')
|
||||
}
|
||||
|
||||
task clean(type: Delete) {
|
||||
delete rootProject.buildDir
|
||||
}
|
@ -1,4 +0,0 @@
|
||||
org.gradle.jvmargs=-Xmx1536M
|
||||
android.enableR8=true
|
||||
android.useAndroidX=true
|
||||
android.enableJetifier=true
|
@ -1,6 +0,0 @@
|
||||
#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-5.6.2-all.zip
|
@ -1,15 +0,0 @@
|
||||
include ':app'
|
||||
|
||||
def flutterProjectRoot = rootProject.projectDir.parentFile.toPath()
|
||||
|
||||
def plugins = new Properties()
|
||||
def pluginsFile = new File(flutterProjectRoot.toFile(), '.flutter-plugins')
|
||||
if (pluginsFile.exists()) {
|
||||
pluginsFile.withReader('UTF-8') { reader -> plugins.load(reader) }
|
||||
}
|
||||
|
||||
plugins.each { name, path ->
|
||||
def pluginDirectory = flutterProjectRoot.resolve(path).resolve('android').toFile()
|
||||
include ":$name"
|
||||
project(":$name").projectDir = pluginDirectory
|
||||
}
|
@ -252,13 +252,11 @@ run_ios_e2e_tests() {
|
||||
DARTLE_H="e2e_tests/test_objc/ios/Runner/dartle.h"
|
||||
DARTLE_M="e2e_tests/test_objc/ios/Runner/dartle.m"
|
||||
DARTLE_DART="e2e_tests/test_objc/lib/dartle.dart"
|
||||
PIGEON_JAVA="e2e_tests/test_objc/android/app/src/main/java/io/flutter/plugins/Pigeon.java"
|
||||
$run_pigeon \
|
||||
--input pigeons/message.dart \
|
||||
--dart_out $DARTLE_DART \
|
||||
--objc_header_out $DARTLE_H \
|
||||
--objc_source_out $DARTLE_M \
|
||||
--java_out $PIGEON_JAVA
|
||||
dart format $DARTLE_DART
|
||||
|
||||
pushd $PWD
|
||||
|
Reference in New Issue
Block a user