Kanzi Android framework (droidfw) プロジェクトの操作¶
Kanzi Studio で Android アプリケーションを作成する¶
Kanzi Studio New Project ウィンドウで:
Template を、Androidアプリケーションで使用したいテンプレートに設定します。
Android application テンプレートは、Kanzi Studio プロジェクトと Kanzi Android フレームワークベースのアプリケーションを作成します。
Android application with Java plugin テンプレートは、Kanzi Studio プロジェクトを作成し、Kanzi Android フレームワークベースのアプリケーションに Kanzi Engine Java プラグインを含んでいます。
テンプレートを使用してJava Kanzi Engine プラグインを作成する と Java と Kotlin を使用して を参照してください。
(オプション) で Android Package Name をプロジェクトのAndroidパッケージ名に設定します。
Create をクリックします。
Kanzi Studio は、Location の New Project ウィンドウで設定したプロジェクトディレクトリにプロジェクトを作成し、
<ProjectName>/Application/configs/platforms/android_gradleディレクトリに Android アプリケーションプロジェクトを作成します。
アプリケーションの構築とデプロイ方法について学ぶには、Kanzi アプリケーションをAndroidにデプロイする を参照してください。
既存のAndroidアプリケーションに Kanzi Android framework (droidfw) を追加する¶
この手順では、Android アプリケーションプロジェクトがデフォルトのディレクトリ構造を使用していることを前提としています。
既存のAndroidアプリケーションに Kanzi Android framework (droidfw) を追加するには:
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ファイルを追加します。
<KanziWorkspace>/Templates/Android_application_template/Application/configs/platforms/android_gradleディレクトリからgetkanzi.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());
デフォルトの場所に戻すには、空の文字列でインターフェースを呼び出します。