部署面向 Android 系统的
Kanzi
应用程序
要创建面向 Android 系统的
Kanzi
应用程序,您可以使用 Android Studio、Clang 工具链和 Gradle 构建系统。
在将
Kanzi
应用程序部署到 Android 设备前,需要设置您的构建环境。请参阅
部署 Kanzi 应用程序到 Android
。
要使用
Kanzi
Android 平台软件包构建
Kanzi
应用程序并部署到 Android 设备,您需要:
Android Studio 4.1.0 and NDK 21.3.6528147
您可以在以下地址下载 Android Studio:
https://developer.android.com/studio/archive
。
Android Gradle plugin 4.1.3 and Gradle 6.7.1 or lower
Java Development Environment Kit 1.8 或更高版本(64 位版本)
捆绑提供 Android Studio 安装程序。
CMake 3.5.1 或更新版本
适用于您 Android 设备的 USB 设备驱动程序
请查阅
安装适用于 Android 设备的 Android USB 驱动程序
.
Kanzi
支持 Android API 等级 21(Android 5.0 版本)及更新版本。
Kanzi
在 Android 系统中不支持 JavaScript 脚本编写功能。
此图表展示出
Kanzi
构建 Android 包所需要的流程。
Kanzi
应用程序中的 Android 生命周期事件
Android 生命周期事件设置
Kanzi
应用程序在活动状态更改时的行为方式。每个事件映射到一个 Android 活动回调方法。一个
Kanzi
应用程序会使用以下生命周期活动:
Lifecycle.Event.ON_CREATE
//加载提供 Kanzi 功能的原生库,
//初始化上下文,以及分配用于渲染的 KanziView 的本机库。
//此函数调用 KanziNativeLibrary.createApplication() 函数
//加载 Kanzi 工程。
KanziView.createNativeApplication();
Lifecycle.Event.ON_DESTROY
//停止并销毁 Kanzi 应用程序。
//此函数调用 KanziNativeLibrary.haltApplication() 和
// KanziNativeLibrary.destroyApplication() 函数。
KanziView.destroyNativeApplication();
SurfaceHolder.Callback.surfaceCreated
//创建应用程序图面时,运行 Kanzi 应用程序。
KanziNativeLibrary.runApplication(holder.getSurface());
SurfaceHolder.Callback.surfaceDestroyed
//销毁 Kanzi 应用程序图面时,暂停渲染。
KanziNativeLibrary.haltApplication();
SurfaceHolder.Callback.surfaceChanged
//当 Kanzi 应用程序图面格式或大小更改时,
//调整应用程序图面的大小。
// @param width: 图面的新宽度。
// @param height: 图面的新高度。
KanziNativeLibrary.resizeEvent(width, height);
Kanzi
不使用
LifeCycle.Event.ON_PAUSE
和
Lifecycle.Event.ON_RESUME
事件,因为这两个事件不告知应用程序图面是否准备好渲染。
KanziView
分别使用
SurfaceHolder.Callback
surfaceCreated()
和
surfaceDestroyed()
函数,来暂停和恢复渲染。
请参阅
https://developer.android.com/reference/androidx/lifecycle/Lifecycle.Event.html
和
https://developer.android.com/reference/android/view/SurfaceHolder.Callback
。
此图表展示了一个
Kanzi
应用程序在 Android 平台上的初始化序列。
向 Android Studio 工程添加一个
KanziView
要在您的 Android 应用程序中运行
Kanzi
应用程序,您可以向现有的 Android Studio 工程添加一个
KanziView
。
要向 Android Studio 工程添加
KanziView
,请执行以下操作:
在
Kanzi Studio
中打开要作为
Kanzi
视图添加到 Android Studio 工程的工程,并选择
>
导出 (Export)
>
导出 KZB (Export KZB)
。
复制
<KanziWorkspace>
/
Projects
/
<ProjectName>
/
Application
/
bin
目录到您的 Android Studio 工程根目录中。这样就在 Android 软件包中添加了 kzb 文件。
例如,对于一个名为“
MyProject
”的 Android Studio 工程,将
Application
/
bin
目录复制到
MyProject
目录中。
在 Android Studio 中打开想要添加
KanziView
的工程。
在 Android Studio 的
app
/
src
/
main
目录中,创建一个名为“
cpp
”的目录,并将
Kanzi
工程的 Cmake 生成文件和源代码添加到该目录中。
-
从
Kanzi
应用程序的
<KanziWorkspace>
/
Projects
/
<ProjectName>
/
Application
目录中,复制
CMakeLists.txt
文件到
cpp
目录。
-
从
Kanzi
应用程序的
<KanziWorkspace>
/
Projects
/
<ProjectName>
/
Application
/
src
目录中,复制
<project_name>.cpp
文件到
cpp
目录。
从
<KanziWorkspace>
/
Templates
/
Basic_application
/
Application
/
configs
/
platforms
/
android_gradle
复制
getkanzi.gradle
文件到您的 Android 工程目录中。
Gradle 使用
getkanzi.gradle
脚本查找
Kanzi Engine
和
Kanzi
Gradle 插件。
在 Android Studio 中,将
Kanzi
添加到您的工程:
-
在
app
/
build.gradle
文件中,将
Kanzi
添加到您的 Android 工程中:
apply plugin: 'com.rightware.gradle.kanzi'
-
导入 Java 活动
Configuration
和
KanziView
类。
例如,在
app
/
src
/
main
/
java
/
com
/
rightware
/
<projectname>
/
MainActivity.java
中添加以下代码:
import android.content.res.Configuration;
import com.rightware.kanzi.KanziView;
-
在
MainActivity.java
文件中,将
Kanzi
视图添加到
MainActivity
类:
public class MainActivity extends AppCompatActivity {
private KanziView mView = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
mView = findViewById(R.id.kanzicontent);
mView.registerLifecycle(getLifecycle());
@Override
public void onConfigurationChanged(Configuration newConfig)
super.onConfigurationChanged(newConfig);
mView.setOrientation(newConfig.orientation);
}
-
在 Android 工程根目录的
build.gradle
文件中获取
Kanzi
Gradle 插件,并添加作为依赖项的
Kanzi
:
buildscript {
apply from: 'getkanzi.gradle'
repositories {
google()
jcenter()
flatDir { dirs getKanziPlugins().toString() }
dependencies {
classpath 'com.android.tools.build:gradle:4.1.0'
classpath 'com.rightware.gradle:kanzi:0.6.1'
...
-
向您的 Android 应用程序内容添加
KanziView
并设置其布局。
例如,在
app
/
src
/
main
/
res
/
layout
/
content_main.xml
中添加以下代码:
<com.rightware.kanzi.KanziView
android:id="@+id/kanzicontent"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="24dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" />
-
在
app
/
build.gradle
文件中进行以下设置:
-
将 Android 工程的资产目录设置为包含 kzb 文件的目录。
-
将路径设置 Cmake 构建文件
apply plugin: 'com.android.application'
apply plugin: 'com.rightware.gradle.kanzi'
android {
sourceSets {
main {
assets.srcDirs = [new File(rootDir, "bin")]
externalNativeBuild {
cmake {
path file("$projectDir/src/main/cpp/CMakeLists.txt")
- 在 Android Studio 主菜单中选择“生成”>“制作工程”。
Android Studio 生成应用程序包。
部署 Kanzi 应用程序到 Android
Android API 参考