Kanzi Android framework (droidfw) プロジェクトの操作

Kanzi Studio で Android アプリケーションを作成する

Kanzi Studio New Project ウィンドウで:

  1. 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 を使用して を参照してください。

  2. (オプション) で Android Package Name をプロジェクトのAndroidパッケージ名に設定します。

    ../../../_images/new-project-android-application.png
  3. 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) を追加するには:

  1. Kanzi Studio プロジェクトの <ProjectName>/Application/bin ディレクトリの内容を、Android Studio プロジェクトの app/src/main/assets ディレクトリにコピーします。

    こうすると、kzb ファイルを Android パッケージにインポートすることができます。

  2. プロジェクトにcmakeを導入します。これにより、ネイティブ Kanzi Engine プラグインをアプリケーションにリンクすることができます。

    1. 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>)
      
    2. app/src/main/cpp ディレクトリに空の <ProjectName>.cpp ファイルを追加します。

  3. <KanziWorkspace>/Templates/Android_application_template/Application/configs/platforms/android_gradle ディレクトリから getkanzi.gradle ファイルを Android プロジェクトのルートディレクトリにコピーします。

    Gradleは getkanzi.gradle ファイルを使用して、Kanzi Engine および Kanzi Gradleプラグインを見つけます。

  4. 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"
        }
    
  5. 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'
    }
    
  6. 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());

デフォルトの場所に戻すには、空の文字列でインターフェースを呼び出します。