| # 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. |
| |
| import("$flutter_root/common/config.gni") |
| import("$flutter_root/shell/config.gni") |
| import("//build/config/android/config.gni") |
| import("//build/config/android/rules.gni") |
| import("$flutter_root/shell/gpu/gpu.gni") |
| |
| shell_gpu_configuration("android_gpu_configuration") { |
| enable_software = true |
| enable_vulkan = shell_enable_vulkan |
| enable_gl = true |
| } |
| |
| shared_library("flutter_shell_native") { |
| visibility = [ ":*" ] |
| |
| output_name = "flutter" |
| |
| sources = [ |
| "android_context_gl.cc", |
| "android_context_gl.h", |
| "android_environment_gl.cc", |
| "android_environment_gl.h", |
| "android_external_texture_gl.cc", |
| "android_external_texture_gl.h", |
| "android_native_window.cc", |
| "android_native_window.h", |
| "android_shell_holder.cc", |
| "android_shell_holder.h", |
| "android_surface.cc", |
| "android_surface.h", |
| "android_surface_gl.cc", |
| "android_surface_gl.h", |
| "android_surface_software.cc", |
| "android_surface_software.h", |
| "apk_asset_provider.cc", |
| "apk_asset_provider.h", |
| "flutter_main.cc", |
| "flutter_main.h", |
| "library_loader.cc", |
| "platform_message_response_android.cc", |
| "platform_message_response_android.h", |
| "platform_view_android.cc", |
| "platform_view_android.h", |
| "platform_view_android_jni.cc", |
| "platform_view_android_jni.h", |
| "vsync_waiter_android.cc", |
| "vsync_waiter_android.h", |
| "$root_build_dir/flutter_icu/icudtl.o", |
| ] |
| |
| deps = [ |
| ":android_gpu_configuration", |
| ":icudtl_object", |
| "$flutter_root/assets", |
| "$flutter_root/common", |
| "$flutter_root/flow", |
| "$flutter_root/fml", |
| "$flutter_root/lib/ui", |
| "$flutter_root/runtime", |
| "$flutter_root/shell/common", |
| "//third_party/skia", |
| ] |
| if (flutter_runtime_mode == "debug" || |
| flutter_runtime_mode == "dynamic_profile" || |
| flutter_runtime_mode == "dynamic_release") { |
| deps += [ "//third_party/dart/runtime:libdart_jit" ] |
| } else { |
| deps += [ "//third_party/dart/runtime:libdart_precompiled_runtime" ] |
| } |
| |
| public_configs = [ "$flutter_root:config" ] |
| |
| defines = [] |
| |
| if (shell_enable_vulkan) { |
| sources += [ |
| "android_surface_vulkan.cc", |
| "android_surface_vulkan.h", |
| ] |
| |
| deps += [ "$flutter_root/vulkan" ] |
| |
| defines += [ "SHELL_ENABLE_VULKAN" ] |
| } |
| |
| libs = [ |
| "android", |
| "EGL", |
| "GLESv2", |
| ] |
| |
| ldflags = ["-Wl,--version-script=" + rebase_path("android_exports.lst")] |
| } |
| |
| java_library("flutter_shell_java") { |
| supports_android = true |
| |
| java_files = [ |
| "io/flutter/app/FlutterActivity.java", |
| "io/flutter/app/FlutterActivityDelegate.java", |
| "io/flutter/app/FlutterActivityEvents.java", |
| "io/flutter/app/FlutterApplication.java", |
| "io/flutter/app/FlutterFragmentActivity.java", |
| "io/flutter/app/FlutterPluginRegistry.java", |
| "io/flutter/embedding/engine/FlutterEngine.java", |
| "io/flutter/embedding/engine/FlutterJNI.java", |
| "io/flutter/embedding/engine/android/AndroidKeyProcessor.java", |
| "io/flutter/embedding/engine/dart/DartExecutor.java", |
| "io/flutter/embedding/engine/dart/DartMessenger.java", |
| "io/flutter/embedding/engine/dart/PlatformMessageHandler.java", |
| "io/flutter/embedding/engine/renderer/FlutterRenderer.java", |
| "io/flutter/embedding/engine/renderer/OnFirstFrameRenderedListener.java", |
| "io/flutter/embedding/engine/systemchannels/AccessibilityChannel.java", |
| "io/flutter/embedding/engine/systemchannels/KeyEventChannel.java", |
| "io/flutter/embedding/engine/systemchannels/LifecycleChannel.java", |
| "io/flutter/embedding/engine/systemchannels/LocalizationChannel.java", |
| "io/flutter/embedding/engine/systemchannels/NavigationChannel.java", |
| "io/flutter/embedding/engine/systemchannels/PlatformChannel.java", |
| "io/flutter/embedding/engine/systemchannels/SettingsChannel.java", |
| "io/flutter/embedding/engine/systemchannels/SystemChannel.java", |
| "io/flutter/embedding/engine/systemchannels/TextInputChannel.java", |
| "io/flutter/plugin/common/ActivityLifecycleListener.java", |
| "io/flutter/plugin/common/BasicMessageChannel.java", |
| "io/flutter/plugin/common/BinaryCodec.java", |
| "io/flutter/plugin/common/BinaryMessenger.java", |
| "io/flutter/plugin/common/ErrorLogResult.java", |
| "io/flutter/plugin/common/EventChannel.java", |
| "io/flutter/plugin/common/FlutterException.java", |
| "io/flutter/plugin/common/JSONMessageCodec.java", |
| "io/flutter/plugin/common/JSONMethodCodec.java", |
| "io/flutter/plugin/common/JSONUtil.java", |
| "io/flutter/plugin/common/MessageCodec.java", |
| "io/flutter/plugin/common/MethodCall.java", |
| "io/flutter/plugin/common/MethodChannel.java", |
| "io/flutter/plugin/common/MethodCodec.java", |
| "io/flutter/plugin/common/PluginRegistry.java", |
| "io/flutter/plugin/common/StandardMessageCodec.java", |
| "io/flutter/plugin/common/StandardMethodCodec.java", |
| "io/flutter/plugin/common/StringCodec.java", |
| "io/flutter/plugin/editing/InputConnectionAdaptor.java", |
| "io/flutter/plugin/editing/TextInputPlugin.java", |
| "io/flutter/plugin/platform/PlatformPlugin.java", |
| "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", |
| "io/flutter/plugin/platform/SingleViewPresentation.java", |
| "io/flutter/plugin/platform/VirtualDisplayController.java", |
| "io/flutter/util/PathUtils.java", |
| "io/flutter/util/Preconditions.java", |
| "io/flutter/util/Predicate.java", |
| "io/flutter/view/AccessibilityBridge.java", |
| "io/flutter/view/FlutterCallbackInformation.java", |
| "io/flutter/view/FlutterMain.java", |
| "io/flutter/view/FlutterNativeView.java", |
| "io/flutter/view/FlutterRunArguments.java", |
| "io/flutter/view/FlutterView.java", |
| "io/flutter/view/ResourceCleaner.java", |
| "io/flutter/view/ResourceExtractor.java", |
| "io/flutter/view/ResourcePaths.java", |
| "io/flutter/view/ResourceUpdater.java", |
| "io/flutter/view/TextureRegistry.java", |
| "io/flutter/view/VsyncWaiter.java", |
| ] |
| |
| deps = [ |
| ":android_support_v13", |
| ":android_support_annotations", |
| ":android_support_compat", |
| ":android_support_fragment", |
| ":android_arch_lifecycle_common", |
| ":android_arch_lifecycle_viewmodel", |
| ] |
| |
| jar_path = "$root_out_dir/flutter_java.jar" |
| } |
| |
| java_prebuilt("android_support_v13") { |
| supports_android = true |
| |
| jar_path = "//third_party/android_support/android_support_v13.jar" |
| } |
| |
| java_prebuilt("android_support_compat") { |
| supports_android = true |
| |
| jar_path = "//third_party/android_support/android_support_compat.jar" |
| } |
| |
| java_prebuilt("android_support_annotations") { |
| supports_android = true |
| |
| jar_path = "//third_party/android_support/android_support_annotations.jar" |
| } |
| |
| java_prebuilt("android_support_fragment") { |
| supports_android = true |
| |
| jar_path = "//third_party/android_support/android_support_fragment.jar" |
| } |
| |
| java_prebuilt("android_arch_lifecycle_common") { |
| supports_android = true |
| |
| jar_path = "//third_party/android_support/android_arch_lifecycle_common.jar" |
| } |
| |
| java_prebuilt("android_arch_lifecycle_viewmodel") { |
| supports_android = true |
| |
| jar_path = "//third_party/android_support/android_arch_lifecycle_viewmodel.jar" |
| } |
| |
| action("icudtl_object") { |
| script = "$flutter_root/sky/tools/objcopy.py" |
| |
| icudtl_input = "//third_party/icu/flutter/icudtl.dat" |
| icudtl_output = "$root_build_dir/flutter_icu/icudtl.o" |
| |
| inputs = [ |
| "$icudtl_input", |
| ] |
| |
| outputs = [ |
| "$icudtl_output", |
| ] |
| |
| args = [ |
| "--objcopy", rebase_path(android_objcopy), |
| "--input", rebase_path(icudtl_input), |
| "--output", rebase_path(icudtl_output), |
| "--arch", current_cpu, |
| ] |
| } |
| |
| action("android") { |
| script = "//build/android/gyp/create_flutter_jar.py" |
| |
| inputs = [ |
| "$root_build_dir/flutter_java.jar", |
| "$root_build_dir/lib.stripped/libflutter.so", |
| ] |
| |
| outputs = [ |
| "$root_build_dir/flutter.jar", |
| ] |
| |
| 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), |
| "--native_lib", |
| rebase_path("lib.stripped/libflutter.so", root_build_dir, root_build_dir), |
| "--android_abi", |
| "$android_app_abi", |
| ] |
| |
| deps = [ |
| ":flutter_shell_java", |
| ":flutter_shell_native", |
| ] |
| } |