Unverified Commit a34713fb authored by James Clarke's avatar James Clarke Committed by GitHub

Update Windows flutter create template (#82598)

parent dbcc656b
cmake_minimum_required(VERSION 3.8)
set(CMAKE_SYSTEM_NAME WindowsStore)
set(CMAKE_SYSTEM_VERSION 10.0)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED YES)
project(runner LANGUAGES CXX)
cmake_policy(SET CMP0079 NEW)
set(BINARY_NAME "app")
# Configure build options.
get_property(IS_MULTICONFIG GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG)
if(IS_MULTICONFIG)
set(CMAKE_CONFIGURATION_TYPES "Debug;Profile;Release"
CACHE STRING "" FORCE)
else()
if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES)
set(CMAKE_BUILD_TYPE "Debug" CACHE
STRING "Flutter build mode" FORCE)
set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS
"Debug" "Profile" "Release")
endif()
endif()
set(CMAKE_EXE_LINKER_FLAGS_PROFILE "${CMAKE_EXE_LINKER_FLAGS_RELEASE}")
set(CMAKE_SHARED_LINKER_FLAGS_PROFILE "${CMAKE_SHARED_LINKER_FLAGS_RELEASE}")
set(CMAKE_C_FLAGS_PROFILE "${CMAKE_C_FLAGS_RELEASE}")
set(CMAKE_CXX_FLAGS_PROFILE "${CMAKE_CXX_FLAGS_RELEASE}")
# Use Unicode for all projects.
add_definitions(-DUNICODE -D_UNICODE)
# Compilation settings that should be applied to most targets.
function(APPLY_STANDARD_SETTINGS TARGET)
target_compile_features(${TARGET} PUBLIC cxx_std_17)
target_compile_options(${TARGET} PRIVATE /W4 /WX /wd"4100" /await)
target_compile_options(${TARGET} PRIVATE /EHsc)
target_compile_definitions(${TARGET} PRIVATE "_HAS_EXCEPTIONS=0")
target_compile_definitions(${TARGET} PRIVATE "$<$<CONFIG:Debug>:_DEBUG>")
target_compile_definitions(${TARGET} PRIVATE WINUWP)
set_target_properties(${TARGET} PROPERTIES VS_WINDOWS_TARGET_PLATFORM_MIN_VERSION 10.0.18362.0)
endfunction()
set(FLUTTER_MANAGED_DIR "${CMAKE_CURRENT_SOURCE_DIR}/flutter")
# Flutter library and tool build rules.
add_subdirectory(${FLUTTER_MANAGED_DIR})
# Application build
add_subdirectory("runner_uwp")
# Generated plugin build rules, which manage building the plugins and adding
# them to the application.
include(flutter/generated_plugins.cmake)
cmake_minimum_required(VERSION 3.8)
set(CMAKE_SYSTEM_NAME WindowsStore)
set(CMAKE_SYSTEM_VERSION 10.0)
set(EPHEMERAL_DIR "${CMAKE_CURRENT_SOURCE_DIR}/ephemeral")
include(CMakePrintHelpers)
# Configuration provided via flutter tool.
include(${EPHEMERAL_DIR}/generated_config.cmake)
# TODO: Move the rest of this into files in ephemeral. See
# https://github.com/flutter/flutter/issues/57146.
set(WRAPPER_ROOT "${EPHEMERAL_DIR}/cpp_client_wrapper")
# === Flutter Library ===
set(FLUTTER_LIBRARY "${EPHEMERAL_DIR}/flutter_windows_winuwp.dll")
# === Assets ===
set(CMAKE_INSTALL_MANIFEST "${EPHEMERAL_DIR}/install_manifest")
file(STRINGS ${CMAKE_INSTALL_MANIFEST} INSTALL_MANIFEST_CONTENT)
# Published to parent scope for install step.
set(FLUTTER_LIBRARY ${FLUTTER_LIBRARY} PARENT_SCOPE)
set(INSTALL_MANIFEST_CONTENT ${INSTALL_MANIFEST_CONTENT} PARENT_SCOPE)
list(APPEND FLUTTER_LIBRARY_HEADERS
"flutter_export.h"
"flutter_windows.h"
"flutter_messenger.h"
"flutter_plugin_registrar.h"
"flutter_texture_registrar.h"
)
list(TRANSFORM FLUTTER_LIBRARY_HEADERS PREPEND "${EPHEMERAL_DIR}/")
add_library(flutter INTERFACE)
target_include_directories(flutter INTERFACE
"${EPHEMERAL_DIR}"
)
target_link_libraries(flutter INTERFACE "${FLUTTER_LIBRARY}.lib")
add_dependencies(flutter flutter_assemble)
# === Wrapper ===
list(APPEND CPP_WRAPPER_SOURCES_CORE
"core_implementations.cc"
"standard_codec.cc"
)
list(TRANSFORM CPP_WRAPPER_SOURCES_CORE PREPEND "${WRAPPER_ROOT}/")
list(APPEND CPP_WRAPPER_SOURCES_PLUGIN
"plugin_registrar.cc"
)
list(TRANSFORM CPP_WRAPPER_SOURCES_PLUGIN PREPEND "${WRAPPER_ROOT}/")
list(APPEND CPP_WRAPPER_SOURCES_APP
"flutter_engine.cc"
"flutter_view_controller.cc"
)
list(TRANSFORM CPP_WRAPPER_SOURCES_APP PREPEND "${WRAPPER_ROOT}/")
# Wrapper sources needed for a plugin.
add_library(flutter_wrapper_plugin STATIC
${CPP_WRAPPER_SOURCES_CORE}
${CPP_WRAPPER_SOURCES_PLUGIN}
)
apply_standard_settings(flutter_wrapper_plugin)
set_target_properties(flutter_wrapper_plugin PROPERTIES
POSITION_INDEPENDENT_CODE ON)
set_target_properties(flutter_wrapper_plugin PROPERTIES
CXX_VISIBILITY_PRESET hidden)
target_link_libraries(flutter_wrapper_plugin PUBLIC flutter)
target_include_directories(flutter_wrapper_plugin PUBLIC
"${WRAPPER_ROOT}/include"
)
add_dependencies(flutter_wrapper_plugin flutter_assemble)
# Wrapper sources needed for the runner.
add_library(flutter_wrapper_app STATIC
${CPP_WRAPPER_SOURCES_CORE}
${CPP_WRAPPER_SOURCES_APP}
)
apply_standard_settings(flutter_wrapper_app)
target_link_libraries(flutter_wrapper_app PUBLIC flutter)
target_include_directories(flutter_wrapper_app PUBLIC
"${WRAPPER_ROOT}/include"
)
add_dependencies(flutter_wrapper_app flutter_assemble)
add_custom_target(flutter_assemble DEPENDS
"${FLUTTER_LIBRARY}"
${FLUTTER_LIBRARY_HEADERS}
${CPP_WRAPPER_SOURCES_CORE}
${CPP_WRAPPER_SOURCES_PLUGIN}
${CPP_WRAPPER_SOURCES_APP}
)
cmake_minimum_required (VERSION 3.8)
set(CMAKE_SYSTEM_NAME WindowsStore)
set(CMAKE_SYSTEM_VERSION 10.0)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED YES)
include(CMakePrintHelpers)
project (runner LANGUAGES CXX)
# UWP tile and icon assets.
set(ASSET_FILES ${ASSET_FILES}
Assets/LargeTile.scale-100.png
Assets/LargeTile.scale-125.png
Assets/LargeTile.scale-150.png
Assets/LargeTile.scale-200.png
Assets/LargeTile.scale-400.png
Assets/LockScreenLogo.scale-200.png
Assets/SmallTile.scale-100.png
Assets/SmallTile.scale-125.png
Assets/SmallTile.scale-150.png
Assets/SmallTile.scale-200.png
Assets/SmallTile.scale-400.png
Assets/SplashScreen.scale-100.png
Assets/SplashScreen.scale-125.png
Assets/SplashScreen.scale-150.png
Assets/SplashScreen.scale-200.png
Assets/SplashScreen.scale-400.png
Assets/Square44x44Logo.altform-unplated_targetsize-16.png
Assets/Square44x44Logo.altform-unplated_targetsize-32.png
Assets/Square44x44Logo.altform-unplated_targetsize-48.png
Assets/Square44x44Logo.altform-unplated_targetsize-256.png
Assets/Square44x44Logo.scale-100.png
Assets/Square44x44Logo.scale-125.png
Assets/Square44x44Logo.scale-150.png
Assets/Square44x44Logo.scale-200.png
Assets/Square44x44Logo.scale-400.png
Assets/Square44x44Logo.targetsize-16.png
Assets/Square44x44Logo.targetsize-24.png
Assets/Square44x44Logo.targetsize-24_altform-unplated.png
Assets/Square44x44Logo.targetsize-32.png
Assets/Square44x44Logo.targetsize-48.png
Assets/Square44x44Logo.targetsize-256.png
Assets/Square150x150Logo.scale-100.png
Assets/Square150x150Logo.scale-125.png
Assets/Square150x150Logo.scale-150.png
Assets/Square150x150Logo.scale-200.png
Assets/Square150x150Logo.scale-400.png
Assets/StoreLogo.png
Assets/StoreLogo.scale-100.png
Assets/StoreLogo.scale-125.png
Assets/StoreLogo.scale-150.png
Assets/StoreLogo.scale-200.png
Assets/StoreLogo.scale-400.png
Assets/Wide310x150Logo.scale-200.png
Assets/WideTile.scale-100.png
Assets/WideTile.scale-125.png
Assets/WideTile.scale-150.png
Assets/WideTile.scale-200.png
Assets/WideTile.scale-400.png
)
# Configure package manifest file.
set(APP_MANIFEST_NAME Package.appxmanifest)
set(APP_MANIFEST_TARGET_LOCATION ${CMAKE_CURRENT_BINARY_DIR}/${APP_MANIFEST_NAME})
set(SHORT_NAME ${BINARY_NAME})
set(PACKAGE_GUID "{{windowsIdentifier}}")
configure_file(
appxmanifest.in
${APP_MANIFEST_TARGET_LOCATION}
@ONLY)
set(CONTENT_FILES ${APP_MANIFEST_TARGET_LOCATION})
# Configure package content files.
set_property(SOURCE ${CONTENT_FILES} PROPERTY VS_DEPLOYMENT_CONTENT 1)
set(RESOURCE_FILES ${ASSET_FILES} ${CONTENT_FILES} Windows_TemporaryKey.pfx)
set_property(SOURCE ${ASSET_FILES} PROPERTY VS_DEPLOYMENT_CONTENT 1)
set_property(SOURCE ${ASSET_FILES} PROPERTY VS_DEPLOYMENT_LOCATION "Assets")
set(STRING_FILES Resources.pri)
set_property(SOURCE ${STRING_FILES} PROPERTY VS_TOOL_OVERRIDE "PRIResource")
source_group("Resource Files" FILES ${RESOURCE_FILES} ${CONTENT_FILES} ${STRING_FILES})
# Configure Flutter assets using tool generated install manifest
foreach(ITEM ${INSTALL_MANIFEST_CONTENT})
get_filename_component(ITEM_REL ${CMAKE_BINARY_DIR} DIRECTORY)
file(RELATIVE_PATH RELPATH ${ITEM_REL} ${ITEM})
get_filename_component(RELPATH ${RELPATH} DIRECTORY)
get_filename_component(ITEMEXT ${ITEM} LAST_EXT)
if("${ITEMEXT}" STREQUAL ".dll" OR "${ITEMEXT}" STREQUAL ".pdb")
string(CONCAT RELPATH "")
elseif ("${ITEMEXT}" STREQUAL ".so")
file(RELATIVE_PATH RELPATH "${ITEM_REL}/winuwp" ${ITEM})
string(REGEX REPLACE "/" "\\\\" RELPATH ${RELPATH})
string(CONCAT RELPATH "Assets\\Data")
elseif("${ITEMEXT}" STREQUAL ".dat")
string(CONCAT RELPATH "Assets\\Data")
else()
string(REGEX REPLACE "/" "\\\\" RELPATH ${RELPATH})
string(CONCAT RELPATH "Assets\\Data\\" ${RELPATH})
endif()
cmake_print_variables(${RELPATH})
set_property(SOURCE ${ITEM} PROPERTY VS_DEPLOYMENT_CONTENT 1)
set_property(SOURCE ${ITEM} PROPERTY VS_DEPLOYMENT_LOCATION ${RELPATH})
endforeach()
add_executable (${BINARY_NAME} WIN32
main.cpp
flutter_frameworkview.cpp
"${FLUTTER_MANAGED_DIR}/generated_plugin_registrant.cc"
${RESOURCE_FILES}
${INSTALL_MANIFEST_CONTENT}
)
apply_standard_settings(${BINARY_NAME})
target_compile_definitions(${BINARY_NAME} PRIVATE "NOMINMAX")
target_link_libraries(${BINARY_NAME} PRIVATE WindowsApp flutter flutter_wrapper_app)
target_include_directories(${BINARY_NAME} PRIVATE "${CMAKE_SOURCE_DIR}")
add_dependencies(${BINARY_NAME} flutter_assemble)
{
// See https://go.microsoft.com//fwlink//?linkid=834763 for more information about this file.
"configurations": [
{
"name": "Debug",
"generator": "Visual Studio 15 2017 Win64",
"configurationType": "Debug",
"inheritEnvironments": [ "msvc_x64_x64" ],
"buildRoot": "${env.USERPROFILE}\\CMakeBuilds\\${workspaceHash}\\build\\${name}",
"installRoot": "${env.USERPROFILE}\\CMakeBuilds\\${workspaceHash}\\install\\${name}",
"cmakeCommandArgs": "",
"buildCommandArgs": "",
"ctestCommandArgs": ""
},
{
"name": "Release",
"generator": "Visual Studio 15 2017 Win64",
"configurationType": "Release",
"inheritEnvironments": [ "msvc_x64_x64" ],
"buildRoot": "${env.USERPROFILE}\\CMakeBuilds\\${workspaceHash}\\build\\${name}",
"installRoot": "${env.USERPROFILE}\\CMakeBuilds\\${workspaceHash}\\install\\${name}",
"cmakeCommandArgs": "",
"buildCommandArgs": "",
"ctestCommandArgs": ""
}
]
}
<?xml version="1.0" encoding="utf-8"?>
<Package
xmlns="http://schemas.microsoft.com/appx/manifest/foundation/windows10"
xmlns:mp="http://schemas.microsoft.com/appx/2014/phone/manifest"
xmlns:uap="http://schemas.microsoft.com/appx/manifest/uap/windows10"
IgnorableNamespaces="uap mp">
<Identity Name="@PACKAGE_GUID@" Publisher="CN=CMake Test Cert" Version="1.1.0.0" />
<mp:PhoneIdentity PhoneProductId="@PACKAGE_GUID@" PhonePublisherId="00000000-0000-0000-0000-000000000000"/>
<Properties>
<DisplayName>@SHORT_NAME@</DisplayName>
<PublisherDisplayName>CMake Test Cert</PublisherDisplayName>
<Logo>Assets/StoreLogo.png</Logo>
</Properties>
<Dependencies>
<TargetDeviceFamily Name="Windows.Universal" MinVersion="10.0.0.0" MaxVersionTested="10.0.65535.65535" />
</Dependencies>
<Resources>
<Resource Language="x-generate" />
</Resources>
<Applications>
<Application Id="App" Executable="$targetnametoken$.exe" EntryPoint="@SHORT_NAME@.App">
<uap:VisualElements
DisplayName="@SHORT_NAME@"
Description="@SHORT_NAME@"
BackgroundColor="#336699"
Square150x150Logo="Assets/Square150x150Logo.png"
Square44x44Logo="Assets/Square44x44Logo.png"
>
<uap:SplashScreen Image="Assets/SplashScreen.png" />
</uap:VisualElements>
</Application>
</Applications>
<Capabilities>
<Capability Name="internetClientServer"/>
<Capability Name="internetClient"/>
<Capability Name="privateNetworkClientServer"/>
<Capability Name="codeGeneration"/></Capabilities>
</Package>
#include "winrt/Windows.ApplicationModel.Core.h"
#include "winrt/Windows.Foundation.h"
#include "winrt/Windows.System.Profile.h"
#include "winrt/Windows.System.Threading.h"
#include "winrt/Windows.UI.Core.h"
#include <winrt/Windows.Foundation.Collections.h>
#include <winrt/Windows.Graphics.Display.h>
#include <winrt/Windows.Storage.h>
#include <winrt/Windows.UI.Popups.h>
#include <winrt/Windows.UI.ViewManagement.Core.h>
#include <winrt/Windows.UI.ViewManagement.h>
#include <chrono>
#include <memory>
#include <thread>
#include <flutter/flutter_view_controller.h>
#include <flutter/flutter_windows.h>
#include <flutter/generated_plugin_registrant.h>
#include <flutter/plugin_registry.h>
struct FlutterFrameworkView
: winrt::implements<
FlutterFrameworkView,
winrt::Windows::ApplicationModel::Core::IFrameworkView> {
// |winrt::Windows::ApplicationModel::Core::IFrameworkView|
void
Initialize(winrt::Windows::ApplicationModel::Core::CoreApplicationView const
&applicationView) {
// Layout scaling must be disabled in the appinitialization phase in order
// to take effect correctly.
if (winrt::Windows::System::Profile::AnalyticsInfo::VersionInfo()
.DeviceFamily() == L"Windows.Xbox") {
bool result = winrt::Windows::UI::ViewManagement::ApplicationViewScaling::
TrySetDisableLayoutScaling(true);
if (!result) {
OutputDebugString(L"Couldn't disable layout scaling");
}
}
main_view_ = applicationView;
main_view_.Activated({this, &FlutterFrameworkView::OnActivated});
}
// |winrt::Windows::ApplicationModel::Core::IFrameworkView|
void Uninitialize() {
main_view_.Activated(nullptr);
main_view_ = nullptr;
}
// |winrt::Windows::ApplicationModel::Core::IFrameworkView|
void Load(winrt::hstring const &) {}
// |winrt::Windows::ApplicationModel::Core::IFrameworkView|
void Run() {
winrt::Windows::UI::Core::CoreWindow window =
winrt::Windows::UI::Core::CoreWindow::GetForCurrentThread();
winrt::Windows::UI::Core::CoreDispatcher dispatcher = window.Dispatcher();
dispatcher.ProcessEvents(
winrt::Windows::UI::Core::CoreProcessEventsOption::ProcessUntilQuit);
}
// |winrt::Windows::ApplicationModel::Core::IFrameworkView|
winrt::Windows::Foundation::IAsyncAction
SetWindow(winrt::Windows::UI::Core::CoreWindow const &window) {
// Capture reference to window.
window_ = window;
// Lay out the window's content within the region occupied by the
// CoreWindow.
auto appView = winrt::Windows::UI::ViewManagement::ApplicationView::
GetForCurrentView();
appView.SetDesiredBoundsMode(winrt::Windows::UI::ViewManagement::
ApplicationViewBoundsMode::UseCoreWindow);
// Configure folder paths.
try {
winrt::Windows::Storage::StorageFolder folder =
winrt::Windows::ApplicationModel::Package::Current()
.InstalledLocation();
winrt::Windows::Storage::StorageFolder assets =
co_await folder.GetFolderAsync(L"Assets");
winrt::Windows::Storage::StorageFolder data =
co_await assets.GetFolderAsync(L"data");
winrt::Windows::Storage::StorageFolder flutter_assets =
co_await data.GetFolderAsync(L"flutter_assets");
winrt::Windows::Storage::StorageFile icu_data =
co_await data.GetFileAsync(L"icudtl.dat");
#if NDEBUG
winrt::Windows::Storage::StorageFile aot_data =
co_await data.GetFileAsync(L"app.so");
#endif
std::wstring flutter_assets_path{flutter_assets.Path()};
std::wstring icu_data_path{icu_data.Path()};
std::wstring aot_data_path {
#if NDEBUG
aot_data.Path()
#endif
};
flutter::DartProject project(flutter_assets_path, icu_data_path,
aot_data_path);
// Construct viewcontroller using the Window and project
flutter_view_controller_ = std::make_unique<flutter::FlutterViewController>(
static_cast<ABI::Windows::ApplicationModel::Core::CoreApplicationView*>(winrt::get_abi(main_view_)),
static_cast<ABI::Windows::ApplicationModel::Activation::IActivatedEventArgs*>(winrt::get_abi(launch_args_)),
project);
// If plugins present, register them.
RegisterPlugins(flutter_view_controller_.get()->engine());
} catch (winrt::hresult_error &err) {
winrt::Windows::UI::Popups::MessageDialog md =
winrt::Windows::UI::Popups::MessageDialog::MessageDialog(
L"There was a problem starting the engine: " + err.message());
md.ShowAsync();
}
}
void OnActivated(
winrt::Windows::ApplicationModel::Core::CoreApplicationView const
&applicationView,
winrt::Windows::ApplicationModel::Activation::IActivatedEventArgs const
&args) {
// Activate the application window, making it visible and enabling it to
// receive events.
applicationView.CoreWindow().Activate();
// Capture launch args to later pass to Flutter.
launch_args_ = args;
}
// Current CoreApplicationView.
winrt::Windows::ApplicationModel::Core::CoreApplicationView main_view_{
nullptr};
// Current CoreWindow.
winrt::Windows::UI::Core::CoreWindow window_{nullptr};
// Current FlutterViewController.
std::unique_ptr<flutter::FlutterViewController> flutter_view_controller_{
nullptr};
// Launch args that were passed in on activation.
winrt::Windows::ApplicationModel::Activation::IActivatedEventArgs
launch_args_;
};
#include <windows.h>
#include "winrt/Windows.ApplicationModel.Core.h"
#include "winrt/Windows.Foundation.h"
#include <winrt/Windows.Foundation.Collections.h>
#include <winrt/Windows.UI.ViewManagement.Core.h>
#include <winrt/Windows.UI.ViewManagement.h>
#include <memory>
#include "flutter_frameworkview.cpp"
struct App
: winrt::implements<
App, winrt::Windows::ApplicationModel::Core::IFrameworkViewSource> {
App() { view_ = winrt::make_self<FlutterFrameworkView>(); }
// |winrt::Windows::ApplicationModel::Core::IFrameworkViewSource|
winrt::Windows::ApplicationModel::Core::IFrameworkView CreateView() {
return view_.as<winrt::Windows::ApplicationModel::Core::IFrameworkView>();
}
winrt::com_ptr<FlutterFrameworkView> view_;
};
int __stdcall wWinMain(HINSTANCE, HINSTANCE, PWSTR, int) {
winrt::Windows::ApplicationModel::Core::CoreApplication::Run(
winrt::make<App>());
}
...@@ -138,7 +138,64 @@ ...@@ -138,7 +138,64 @@
"templates/app/windows.tmpl/runner/utils.h", "templates/app/windows.tmpl/runner/utils.h",
"templates/app/windows.tmpl/runner/win32_window.cpp", "templates/app/windows.tmpl/runner/win32_window.cpp",
"templates/app/windows.tmpl/runner/win32_window.h", "templates/app/windows.tmpl/runner/win32_window.h",
"templates/app/winuwp.tmpl/CMakeLists.txt",
"templates/app/winuwp.tmpl/flutter/CMakeLists.txt",
"templates/app/winuwp.tmpl/project_version", "templates/app/winuwp.tmpl/project_version",
"templates/app/winuwp.tmpl/runner_uwp/Assets/LargeTile.scale-100.png.img.tmpl",
"templates/app/winuwp.tmpl/runner_uwp/Assets/LargeTile.scale-125.png.img.tmpl",
"templates/app/winuwp.tmpl/runner_uwp/Assets/LargeTile.scale-150.png.img.tmpl",
"templates/app/winuwp.tmpl/runner_uwp/Assets/LargeTile.scale-200.png.img.tmpl",
"templates/app/winuwp.tmpl/runner_uwp/Assets/LargeTile.scale-400.png.img.tmpl",
"templates/app/winuwp.tmpl/runner_uwp/Assets/LockScreenLogo.scale-200.png.img.tmpl",
"templates/app/winuwp.tmpl/runner_uwp/Assets/SmallTile.scale-100.png.img.tmpl",
"templates/app/winuwp.tmpl/runner_uwp/Assets/SmallTile.scale-125.png.img.tmpl",
"templates/app/winuwp.tmpl/runner_uwp/Assets/SmallTile.scale-150.png.img.tmpl",
"templates/app/winuwp.tmpl/runner_uwp/Assets/SmallTile.scale-200.png.img.tmpl",
"templates/app/winuwp.tmpl/runner_uwp/Assets/SmallTile.scale-400.png.img.tmpl",
"templates/app/winuwp.tmpl/runner_uwp/Assets/SplashScreen.scale-100.png.img.tmpl",
"templates/app/winuwp.tmpl/runner_uwp/Assets/SplashScreen.scale-125.png.img.tmpl",
"templates/app/winuwp.tmpl/runner_uwp/Assets/SplashScreen.scale-150.png.img.tmpl",
"templates/app/winuwp.tmpl/runner_uwp/Assets/SplashScreen.scale-200.png.img.tmpl",
"templates/app/winuwp.tmpl/runner_uwp/Assets/SplashScreen.scale-400.png.img.tmpl",
"templates/app/winuwp.tmpl/runner_uwp/Assets/Square150x150Logo.scale-100.png.img.tmpl",
"templates/app/winuwp.tmpl/runner_uwp/Assets/Square150x150Logo.scale-125.png.img.tmpl",
"templates/app/winuwp.tmpl/runner_uwp/Assets/Square150x150Logo.scale-150.png.img.tmpl",
"templates/app/winuwp.tmpl/runner_uwp/Assets/Square150x150Logo.scale-200.png.img.tmpl",
"templates/app/winuwp.tmpl/runner_uwp/Assets/Square150x150Logo.scale-400.png.img.tmpl",
"templates/app/winuwp.tmpl/runner_uwp/Assets/Square44x44Logo.altform-unplated_targetsize-16.png.img.tmpl",
"templates/app/winuwp.tmpl/runner_uwp/Assets/Square44x44Logo.altform-unplated_targetsize-256.png.img.tmpl",
"templates/app/winuwp.tmpl/runner_uwp/Assets/Square44x44Logo.altform-unplated_targetsize-32.png.img.tmpl",
"templates/app/winuwp.tmpl/runner_uwp/Assets/Square44x44Logo.altform-unplated_targetsize-48.png.img.tmpl",
"templates/app/winuwp.tmpl/runner_uwp/Assets/Square44x44Logo.scale-100.png.img.tmpl",
"templates/app/winuwp.tmpl/runner_uwp/Assets/Square44x44Logo.scale-125.png.img.tmpl",
"templates/app/winuwp.tmpl/runner_uwp/Assets/Square44x44Logo.scale-150.png.img.tmpl",
"templates/app/winuwp.tmpl/runner_uwp/Assets/Square44x44Logo.scale-200.png.img.tmpl",
"templates/app/winuwp.tmpl/runner_uwp/Assets/Square44x44Logo.scale-400.png.img.tmpl",
"templates/app/winuwp.tmpl/runner_uwp/Assets/Square44x44Logo.targetsize-16.png.img.tmpl",
"templates/app/winuwp.tmpl/runner_uwp/Assets/Square44x44Logo.targetsize-24.png.img.tmpl",
"templates/app/winuwp.tmpl/runner_uwp/Assets/Square44x44Logo.targetsize-24_altform-unplated.png.img.tmpl",
"templates/app/winuwp.tmpl/runner_uwp/Assets/Square44x44Logo.targetsize-256.png.img.tmpl",
"templates/app/winuwp.tmpl/runner_uwp/Assets/Square44x44Logo.targetsize-32.png.img.tmpl",
"templates/app/winuwp.tmpl/runner_uwp/Assets/Square44x44Logo.targetsize-48.png.img.tmpl",
"templates/app/winuwp.tmpl/runner_uwp/Assets/StoreLogo.png.img.tmpl",
"templates/app/winuwp.tmpl/runner_uwp/Assets/StoreLogo.scale-100.png.img.tmpl",
"templates/app/winuwp.tmpl/runner_uwp/Assets/StoreLogo.scale-125.png.img.tmpl",
"templates/app/winuwp.tmpl/runner_uwp/Assets/StoreLogo.scale-150.png.img.tmpl",
"templates/app/winuwp.tmpl/runner_uwp/Assets/StoreLogo.scale-200.png.img.tmpl",
"templates/app/winuwp.tmpl/runner_uwp/Assets/StoreLogo.scale-400.png.img.tmpl",
"templates/app/winuwp.tmpl/runner_uwp/Assets/Wide310x150Logo.scale-200.png.img.tmpl",
"templates/app/winuwp.tmpl/runner_uwp/Assets/WideTile.scale-100.png.img.tmpl",
"templates/app/winuwp.tmpl/runner_uwp/Assets/WideTile.scale-125.png.img.tmpl",
"templates/app/winuwp.tmpl/runner_uwp/Assets/WideTile.scale-150.png.img.tmpl",
"templates/app/winuwp.tmpl/runner_uwp/Assets/WideTile.scale-200.png.img.tmpl",
"templates/app/winuwp.tmpl/runner_uwp/Assets/WideTile.scale-400.png.img.tmpl",
"templates/app/winuwp.tmpl/runner_uwp/CMakeLists.txt.tmpl",
"templates/app/winuwp.tmpl/runner_uwp/CMakeSettings.json",
"templates/app/winuwp.tmpl/runner_uwp/Windows_TemporaryKey.pfx.img.tmpl",
"templates/app/winuwp.tmpl/runner_uwp/appxmanifest.in",
"templates/app/winuwp.tmpl/runner_uwp/flutter_frameworkview.cpp",
"templates/app/winuwp.tmpl/runner_uwp/main.cpp",
"templates/app/winuwp.tmpl/runner_uwp/resources.pri.img.tmpl",
"templates/cocoapods/Podfile-ios-objc", "templates/cocoapods/Podfile-ios-objc",
"templates/cocoapods/Podfile-ios-swift", "templates/cocoapods/Podfile-ios-swift",
"templates/cocoapods/Podfile-macos", "templates/cocoapods/Podfile-macos",
......
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