BUILD.gn 6.0 KB
Newer Older
1 2 3 4
# Copyright 2016 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.

5 6
import("$flutter_root/common/config.gni")
import("$flutter_root/shell/config.gni")
7 8
import("//build/config/android/config.gni")
import("//build/config/android/rules.gni")
9 10 11 12 13 14 15
import("$flutter_root/shell/gpu/gpu.gni")

shell_gpu_configuration("android_gpu_configuration") {
  enable_software = true
  enable_vulkan = shell_enable_vulkan
  enable_gl = true
}
16

17
shared_library("flutter_shell_native") {
18 19
  visibility = [ ":*" ]

20
  output_name = "flutter"
21

22
  sources = [
23 24 25 26
    "android_context_gl.cc",
    "android_context_gl.h",
    "android_environment_gl.cc",
    "android_environment_gl.h",
27
    "android_external_texture_gl.cc",
28
    "android_external_texture_gl.h",
29 30
    "android_native_window.cc",
    "android_native_window.h",
31 32
    "android_shell_holder.cc",
    "android_shell_holder.h",
33 34
    "android_surface.cc",
    "android_surface.h",
35 36
    "android_surface_gl.cc",
    "android_surface_gl.h",
37
    "android_surface_software.cc",
38
    "android_surface_software.h",
39
    "apk_asset_provider.cc",
40
    "apk_asset_provider.h",
41 42 43
    "flutter_main.cc",
    "flutter_main.h",
    "library_loader.cc",
44 45
    "platform_message_response_android.cc",
    "platform_message_response_android.h",
46 47
    "platform_view_android.cc",
    "platform_view_android.h",
48 49
    "platform_view_android_jni.cc",
    "platform_view_android_jni.h",
50 51
    "vsync_waiter_android.cc",
    "vsync_waiter_android.h",
52 53 54
  ]

  deps = [
55
    ":android_gpu_configuration",
56
    "$flutter_root/assets",
57 58 59 60 61 62
    "$flutter_root/common",
    "$flutter_root/flow",
    "$flutter_root/fml",
    "$flutter_root/lib/ui",
    "$flutter_root/runtime",
    "$flutter_root/shell/common",
63
    "//third_party/skia",
64
    "//third_party/skia:gpu",
65
  ]
66 67 68
  if (flutter_runtime_mode == "debug" ||
      flutter_runtime_mode == "dynamic_profile" ||
      flutter_runtime_mode == "dynamic_release") {
69
    deps += [ "//third_party/dart/runtime:libdart_jit" ]
70
  } else {
71
    deps += [ "//third_party/dart/runtime:libdart_precompiled_runtime" ]
72
  }
73

74
  public_configs = [ "$flutter_root:config" ]
75

76 77 78 79 80 81 82 83
  defines = []

  if (shell_enable_vulkan) {
    sources += [
      "android_surface_vulkan.cc",
      "android_surface_vulkan.h",
    ]

84
    deps += [ "$flutter_root/vulkan" ]
85 86 87 88

    defines += [ "SHELL_ENABLE_VULKAN" ]
  }

89 90 91 92
  libs = [
    "android",
    "EGL",
    "GLESv2",
93 94 95
  ]
}

96 97
java_library("flutter_shell_java") {
  supports_android = true
98 99

  java_files = [
100
    "io/flutter/app/FlutterActivity.java",
101 102
    "io/flutter/app/FlutterActivityDelegate.java",
    "io/flutter/app/FlutterActivityEvents.java",
103
    "io/flutter/app/FlutterApplication.java",
104
    "io/flutter/app/FlutterFragmentActivity.java",
105
    "io/flutter/app/FlutterPluginRegistry.java",
A
Adam Barth 已提交
106
    "io/flutter/plugin/common/ActivityLifecycleListener.java",
107
    "io/flutter/plugin/common/BasicMessageChannel.java",
108
    "io/flutter/plugin/common/BinaryCodec.java",
109 110
    "io/flutter/plugin/common/BinaryMessenger.java",
    "io/flutter/plugin/common/EventChannel.java",
111
    "io/flutter/plugin/common/FlutterException.java",
112 113
    "io/flutter/plugin/common/JSONMessageCodec.java",
    "io/flutter/plugin/common/JSONMethodCodec.java",
114
    "io/flutter/plugin/common/JSONUtil.java",
115 116
    "io/flutter/plugin/common/MessageCodec.java",
    "io/flutter/plugin/common/MethodCall.java",
117
    "io/flutter/plugin/common/MethodChannel.java",
118
    "io/flutter/plugin/common/MethodCodec.java",
119
    "io/flutter/plugin/common/PluginRegistry.java",
120 121
    "io/flutter/plugin/common/StandardMessageCodec.java",
    "io/flutter/plugin/common/StandardMethodCodec.java",
122
    "io/flutter/plugin/common/StringCodec.java",
123 124
    "io/flutter/plugin/editing/InputConnectionAdaptor.java",
    "io/flutter/plugin/editing/TextInputPlugin.java",
A
Adam Barth 已提交
125
    "io/flutter/plugin/platform/PlatformPlugin.java",
126 127 128 129 130
    "io/flutter/plugin/platform/PlatformView.java",
    "io/flutter/plugin/platform/PlatformViewFactory.java",
    "io/flutter/plugin/platform/PlatformViewRegistry.java",
    "io/flutter/plugin/platform/PlatformViewRegistryImpl.java",
    "io/flutter/plugin/platform/PlatformViewsController.java",
131 132
    "io/flutter/plugin/platform/SingleViewPresentation.java",
    "io/flutter/plugin/platform/VirtualDisplayController.java",
133
    "io/flutter/util/PathUtils.java",
134
    "io/flutter/util/Preconditions.java",
135 136
    "io/flutter/view/AccessibilityBridge.java",
    "io/flutter/view/FlutterMain.java",
137
    "io/flutter/view/FlutterNativeView.java",
138 139 140
    "io/flutter/view/FlutterView.java",
    "io/flutter/view/ResourceCleaner.java",
    "io/flutter/view/ResourceExtractor.java",
A
Adam Barth 已提交
141
    "io/flutter/view/ResourcePaths.java",
142
    "io/flutter/view/TextureRegistry.java",
143
    "io/flutter/view/VsyncWaiter.java",
144
  ]
145

146 147 148 149
  deps = [
    ":android_support_v4",
  ]

150
  jar_path = "$root_out_dir/flutter_java.jar"
151 152
}

153 154 155 156 157 158
java_prebuilt("android_support_v4") {
  supports_android = true

  jar_path = "//third_party/android_tools/sdk/extras/android/support/v4/android-support-v4.jar"
}

159
copy("flutter_shell_assets") {
160 161 162
  visibility = [ ":*" ]

  sources = [
163
    "//third_party/icu/android/icudtl.dat",
164
  ]
165 166 167 168 169

  outputs = [
    "$root_build_dir/flutter_shell_assets/{{source_file_part}}",
  ]

170 171 172 173 174
  deps = [
    "//third_party/icu:icudata",
  ]
}

175 176
action("android") {
  script = "//build/android/gyp/create_flutter_jar.py"
177

178 179
  inputs = [
    "$root_build_dir/flutter_java.jar",
180
    "$root_build_dir/lib.stripped/libflutter.so",
181 182
    "$root_build_dir/flutter_shell_assets/icudtl.dat",
  ]
183

184 185 186
  outputs = [
    "$root_build_dir/flutter.jar",
  ]
187

188 189 190 191 192 193 194 195
  args = [
    "--output",
    rebase_path("flutter.jar", root_build_dir, root_build_dir),
    "--dist_jar",
    rebase_path("flutter_java.jar", root_build_dir, root_build_dir),
    "--asset_dir",
    rebase_path("flutter_shell_assets", root_build_dir, root_build_dir),
    "--native_lib",
196
    rebase_path("lib.stripped/libflutter.so", root_build_dir, root_build_dir),
197 198 199
    "--android_abi",
    "$android_app_abi",
  ]
200 201

  deps = [
202 203 204
    ":flutter_shell_assets",
    ":flutter_shell_java",
    ":flutter_shell_native",
205 206
  ]
}