使用 Kanzi Android framework (droidfw) 项目进行工作¶
在 Kanzi Studio 中创建一个 Android 应用程序。¶
在 Kanzi Studio New Project 窗口中:
将 Template 设置为您要用于 Android 应用程序的模板:
Android application 模板创建一个包含 Kanzi Android 框架应用程序的 Kanzi Studio 项目。
Android application with Java plugin 模板创建一个包含 Kanzi Engine Java 插件的基于 Kanzi Android 框架的 Kanzi Studio 项目。
(可选) 将 Android Package Name 设置为项目的 Android 包名称。
单击 Create。
Kanzi Studio 在您在 Location 中的 New Project 窗口中设置的项目目录中创建一个项目,并在
<ProjectName>/Application/configs/platforms/android_gradle目录中创建一个 Android 应用程序项目。
要了解如何构建和部署您的应用程序,请参阅 将 Kanzi 应用程序部署到 Android。
将 Kanzi Android framework (droidfw) 添加到现有的 Android 应用程序中。¶
此过程假设您的 Android 应用程序项目使用默认目录结构。
要将 Kanzi Android framework (droidfw) 添加到现有的 Android 应用程序中:
将您的 Kanzi Studio 项目的
<ProjectName>/Application/bin目录的内容复制到您的 Android Studio 项目的app/src/main/assets目录。这样就将您的 kzb 文件导入到 Android 软件包中。
将 cmake 引入到您的项目中。这样,您可以将本机 Kanzi Engine 插件链接到您的应用程序。
添加到
app/src/main/cpp/CMakeLists.txt文件:cmake_minimum_required(VERSION 3.10.0) project(<ProjectName>) if(NOT KANZI_ENGINE_BUILD) find_package(Kanzi REQUIRED CONFIG CMAKE_FIND_ROOT_PATH_BOTH HINTS "$ENV{KANZI_HOME}/Engine/lib/cmake") endif() include(kanzi-common) add_executable(<ProjectName> # This file is only needed because cmake does not allow an executable without any sources. <ProjectName>.cpp) target_link_libraries(<ProjectName> -Wl,--whole-archive Kanzi::kzdroidfw -Wl,--no-whole-archive) target_link_libraries(<ProjectName> Kanzi::kzui Kanzi::kzcoreui Kanzi::kzjava Kanzi::kzinterop) target_link_font_engine_backends(<ProjectName>) set_target_properties(<ProjectName> PROPERTIES VS_DEBUGGER_WORKING_DIRECTORY "${PROJECT_SOURCE_DIR}/bin") set_target_properties(<ProjectName> PROPERTIES VS_DEBUGGER_ENVIRONMENT "${KANZI_VS_DEBUGGER_ENVIRONMENT}") install_kanzi_libs_to_output_directory() install_kzbs_to_output_directory(${CMAKE_SOURCE_DIR}/bin) install_target_to_output_directory(<ProjectName>)
在
app/src/main/cpp目录中添加一个空的<ProjectName>.cpp文件。
将
getkanzi.gradle文件从<KanziWorkspace>/Templates/Android_application_template/Application/configs/platforms/android_gradle目录复制到您的 Android 项目根目录。Gradle 使用
getkanzi.gradle文件来找到 Kanzi Engine 和 Kanzi Gradle 插件。在 Android 项目根目录的
build.gradle文件中,获取 Kanzi Gradle 插件并添加 Kanzi 作为依赖项:buildscript { apply from: 'getkanzi.gradle' repositories { google() mavenCentral() flatDir { dirs getKanziPlugins().toString() } } dependencies { classpath "com.android.tools.build:gradle:7.4.2" classpath "com.rightware.gradle:kanzi:0.8.1" }
在您的 Android Studio 项目的
app/build.gradle文件中,添加 Kanzi Gradle 插件,并导入 Kanzi Android framework (droidfw) 及其依赖项:apply plugin: 'com.rightware.gradle.kanzi' ... android { ... defaultConfig { ... externalNativeBuild { cmake { arguments "-DKANZI_LINK_FREETYPE=ON" arguments "-DKANZI_LINK_ITYPE=OFF" } } } ... externalNativeBuild { cmake { path file('src/main/cpp/CMakeLists.txt') } } } ... kanzi { appFramework 'kanziruntime-droidfw' } dependencies { ... implementation 'com.rightware.kanzi:kzjava@aar' }
在您的 Android Studio 项目的
app/build.gradle文件中,确保将 Java 语言版本设置为 8 (1.8) 或更高:android { ... compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } }
从自定义位置加载 kzb 文件¶
默认情况下,Kanzi 从 APK 的 assets 目录中读取 kzb 文件。
要设置不同的位置,请调用 KanziRuntime.setResourceDirectory。
在此调用之后,Kanzi 从应用程序的所有视图中指定的位置读取 kzb 文件。
例如,要从外部存储目录加载 kzb 文件:
mRuntimeRef.get().setResourceDirectory(Environment.getExternalStorageDirectory().toPath());
要恢复到默认位置,请使用空字符串调用接口。