Kanzi Android framework (droidfw) プロジェクトの操作¶
Android アプリケーションに Kanzi Android framework (droidfw) を追加する¶
Android Studio のテンプレートを使用して作成した Android アプリケーションに Kanzi Android framework (droidfw) を追加するには、次のいずれかを行います。
Kanzi をライブラリサブプロジェクトとして統合します。これは、Android で Kanzi を使い始めるための推奨される方法です。Kanzi をライブラリサブプロジェクトとして統合する を参照してください。
Kanzi をビルド済みライブラリとして統合します。この分離がワークフローの要件を満たす場合に、この方法を使用します。たとえば、Kanzi や必要なツールをインストールしないことにメリットがある場合です。Kanzi をビルド済みライブラリ (AAR) として統合する を参照してください。
Kanzi をライブラリサブプロジェクトとして統合する¶
ヒント
これは、Android で Kanzi を使い始めるための推奨される方法です。
Kanzi をライブラリサブプロジェクトとして統合する場合、Kanzi の CMake 統合を Android ライブラリサブプロジェクトとしてアプリケーションに追加します。
Kanzi をライブラリサブプロジェクトとして統合するには:
<KanziWorkspace>/Templates/Android_libraryディレクトリから、以下を Android プロジェクトのルートにコピーします。getkanzi.gradleファイルkanzinativeディレクトリ
プロジェクトの
settings.gradleまたはsettings.gradle.ktsファイルに、以下を追加します:dependencyResolutionManagement { repositories { flatDir { apply from: 'getkanzi.gradle' dirs getKanziAndroidLibrariesPath() } } }
dependencyResolutionManagement { repositories { flatDir { apply(from ="getkanzi.gradle") dirs(extra.get("getKanziAndroidLibrariesPath")) } } }
このユーティリティにより、プロジェクトはローカルの Kanzi インストールまたはプラットフォームパッケージから Kanzi ライブラリを見つけられるようになります。
次のいずれかを選択できます。
プロジェクトを Kanzi ワークスペースディレクトリ内に置く
KANZI_HOME環境変数が Kanzi ワークスペースを指すように設定するプロジェクトの
local.propertiesで、kanzi.homeプロパティを Kanzi ワークスペースまたはプラットフォームパッケージに設定する独自の場所またはリポジトリから Kanzi ライブラリをインクルードする
kanzinativeをサブプロジェクトとしてインクルードするには、プロジェクトのsettings.gradleまたはsettings.gradle.ktsファイルに以下を追加します:include ':kanzinative'
include(":kanzinative")
アプリケーションがビルド済みの Kanzi Android ライブラリと
kanzinativeサブプロジェクトに依存するようにするには、プロジェクトのapp/build.gradleまたはapp/build.gradle.ktsファイルに次を追加します。dependencies { implementation 'com.rightware.kanzi:kanziruntime-droidfw@aar' implementation 'com.rightware.kanzi:kzjava@aar' implementation project(':kanzinative') }
dependencies { implementation("com.rightware.kanzi:kanziruntime-droidfw@aar") implementation("com.rightware.kanzi:kzjava@aar") implementation(project(":kanzinative")) }
プロジェクトの
app/build.gradleまたはapp/build.gradle.ktsファイルで、Java 言語のバージョンが 11 以上に設定されていることを確認します。android { compileOptions { sourceCompatibility JavaVersion.VERSION_11 targetCompatibility JavaVersion.VERSION_11 } }
android { compileOptions { sourceCompatibility = JavaVersion.VERSION_11 targetCompatibility = JavaVersion.VERSION_11 } }
Kanzi をビルド済みライブラリ (AAR) として統合する¶
このモードでは、必要な C++ プラグインを含む C++ ライブラリを一度 AAR にリンクし、それをアプリケーションプロジェクトから再利用します。
これは次のことを意味します。
アプリケーションプロジェクトのビルドに、Kanzi のワークスペースやプラットフォームパッケージへのアクセスは必要ありません。ただし、パッケージ管理システムまたはバージョンコントロールからビルド済みの Kanzi AAR にアクセスできる必要があります。
アプリケーションプロジェクトのビルドでは C++ のビルドを実行しないため、NDK や CMake は必要ありません。これにより、アプリケーションのビルドが速くなります。
このような分離がワークフローの要件を満たす場合に、この方法を使用します。たとえば、アプリケーションプロジェクトのビルド時に Kanzi や必要なツールをインストールしないことにメリットがある場合です。
ライブラリプロジェクトのインスタンス化¶
<KanziWorkspace>/Templates/Android_library ディレクトリを使用したい場所にコピーします。
ライブラリから AAR をビルドする¶
すべてのビルド構成用の AAR ライブラリをビルドしてインストールするには、以下を実行します。
gradlew installNativeAARs
1 つのビルド構成用の AAR をビルドしてインストールするには、install<Configuration>NativeAAR タスクを使用します。たとえば、AAR のデバッグバージョンをビルドするには、以下を実行します。
gradlew installDebugNativeAAR
デフォルトでは、生成される AAR には、使用可能なすべてのアーキテクチャ用の Kanzi C++ ライブラリが含まれます。すべての install タスクは arch プロパティをサポートしており、これを使用して ABI のカンマ区切りリストを指定できます。たとえば、x86_64 アーキテクチャ用のデバッグ AAR ライブラリをビルドしてインストールするには、以下を実行します。
gradlew installDebugNativeAAR -Parch=x86_64
これらのタスクのデフォルト定義では、AAR を kanzinative-<configuration>.aar という名前で Kanzi Android ライブラリディレクトリにインストールします。
AAR の名前を変更するには、以下のいずれかを行います。
プロジェクトの
local.propertiesでkanzi.aar.nameプロパティを設定します。install
taskの実行時にaarNameプロパティを設定します。たとえば、
my-kanzi-aarという名前で AAR ライブラリをビルドしてインストールするには、以下を実行します。gradlew installNativeAARa -PaarName=my-kanzi-aar
install タスクが AAR ライブラリを配置する場所を変更するには、以下のいずれかを行います。
プロジェクトの
local.propertiesでkanzi.aar.destinationプロパティを設定します。install
taskの実行時にaarDestプロパティを設定します。たとえば、
C:/MyKanziWorkspaceに AAR ライブラリをビルドしてインストールするには、以下を実行します。gradlew installNativeAARa -PaarDest=C:/MyKanziWorkspace
アプリケーションプロジェクトへの Kanzi のインポート¶
アプリケーションプロジェクトに Kanzi をインポートするには:
使用しているパッケージ管理システムを使って、Kanzi のプリビルド AAR ライブラリとネイティブ AAR ライブラリを Android プロジェクトから参照できるようにします。
たとえば、デフォルトの Kanzi ワークスペースとネイティブ AAR ライブラリのデフォルトのインストール場所から Kanzi をインポートするには:
<KanziWorkspace>/Templates/Android_libraryディレクトリから、getkanzi.gradleファイルを Android プロジェクトのルートにコピーします。プロジェクトの
settings.gradleまたはsettings.gradle.ktsファイルに、以下を追加します:dependencyResolutionManagement { repositories { flatDir { apply from: 'getkanzi.gradle' dirs getKanziAndroidLibrariesPath() } } }
dependencyResolutionManagement { repositories { flatDir { apply(from ="getkanzi.gradle") dirs(extra.get("getKanziAndroidLibrariesPath")) } } }
このユーティリティにより、プロジェクトはローカルの Kanzi インストールまたはプラットフォームパッケージから Kanzi ライブラリを見つけられるようになります。
次のいずれかを選択できます。
プロジェクトを Kanzi ワークスペースディレクトリ内に置く
KANZI_HOME環境変数が Kanzi ワークスペースを指すように設定するプロジェクトの
local.propertiesで、kanzi.homeプロパティを Kanzi ワークスペースまたはプラットフォームパッケージに設定する独自の場所またはリポジトリから Kanzi ライブラリをインクルードする
Kanzi のプリビルド AAR と、ライブラリプロジェクトからビルドしたネイティブ AAR を、プロジェクトの
app/build.gradleまたはapp/build.gradle.ktsファイルにインポートします。dependencies { implementation 'com.rightware.kanzi:kanziruntime-droidfw@aar' implementation 'com.rightware.kanzi:kzjava@aar' debugImplementation 'com.rightware.kanzi:kanzinative-debug@aar' releaseImplementation 'com.rightware.kanzi:kanzinative-release@aar' "profilingImplementation"('com.rightware.kanzi:kanzinative-profiling@aar') }
dependencies { implementation("com.rightware.kanzi:kanziruntime-droidfw@aar") implementation("com.rightware.kanzi:kzjava@aar") debugImplementation("com.rightware.kanzi:kanzinative-debug@aar") releaseImplementation("com.rightware.kanzi:kanzinative-release@aar") "profilingImplementation("com.rightware.kanzi:kanzinative-profiling@aar") }
プロジェクトの
app/build.gradleまたはapp/build.gradle.ktsファイルで、Java 言語のバージョンが 11 以上に設定されていることを確認します。android { compileOptions { sourceCompatibility JavaVersion.VERSION_11 targetCompatibility JavaVersion.VERSION_11 } }
android { compileOptions { sourceCompatibility = JavaVersion.VERSION_11 targetCompatibility = JavaVersion.VERSION_11 } }
Kanzi Studio プロジェクトのアセットをアプリケーションに追加する¶
Android アプリケーションに Kanzi Studio のアセットを追加するには:
以下のいずれかの方法で、kzb ファイルや cfg ファイルなどの Kanzi Studio プロジェクトのアセットを Android Studio プロジェクトにインポートします:
Android Studio プロジェクトの
app/build.gradleまたはapp/build.gradle.ktsで、Kanzi Studio プロジェクトの<ProjectName>/Application/binディレクトリへのパスを設定します:android { defaultConfig { sourceSets { main { assets.srcDirs = "<ProjectName>/Application/bin" } } } }
android { defaultConfig { sourceSets.named("main") { assets.srcDirs("<ProjectName>/Application/bin") } } }
Kanzi Studio プロジェクトの
<ProjectName>/Application/binディレクトリの内容を、Android Studio プロジェクトのapp/src/main/assetsディレクトリにコピーします。Kanzi Studio の Project > Properties で、Kanzi Studio プロジェクトの Binary Export Directory プロパティを Android Studio プロジェクトの
app/src/main/assetsディレクトリに設定します。これにより、プロジェクトの kzb ファイルのエクスポート先を Kanzi Studio に指定します。
注釈
Kanzi Studio は
application.cfgファイルをエクスポートしません。このファイルは、Android Studio プロジェクトのapp/src/main/assetsディレクトリに手動でコピーしてください。
Kanzi Engine が読み込めるように、インポートするアセットファイルの圧縮を無効にします。プロジェクトの
app/build.gradleまたはapp/build.gradle.ktsファイルに以下を追加します:android { aaptOptions { noCompress "kzb", "cfg", "json" } }
android { androidResources { noCompress += listOf("kzb", "cfg", "json") } }
Kanzi Studio で Android アプリケーションを作成する¶
Kanzi Studio で Android アプリケーションを作成するには、Quick Start ウィンドウの New タブで以下を行います。
Android アプリケーションに使用するプロジェクトテンプレートを選択します。
Android application テンプレートは、Kanzi Studio プロジェクトと Kanzi Android フレームワークベースのアプリケーションを作成します。
Android application with Java plugin テンプレートは、Kanzi Studio プロジェクトと、Kanzi Engine Java プラグインを含む Kanzi Android フレームワークベースのアプリケーションを作成します。
テンプレートを使用してJava Kanzi Engine プラグインを作成する と Java と Kotlin を使用して を参照してください。
(オプション) で Android Package Name をプロジェクトのAndroidパッケージ名に設定します。
Create をクリックします。
Kanzi Studio は、Quick Start ウィンドウの New タブの Location で設定したプロジェクトディレクトリにプロジェクトを作成し、
<ProjectName>/Application/configs/platforms/android_gradleディレクトリに Android アプリケーションプロジェクトを作成します。
アプリケーションの構築とデプロイ方法について学ぶには、Kanzi アプリケーションをAndroidにデプロイする を参照してください。
カスタムロケーションからkzbファイルをロードする¶
デフォルトで、Kanzi は APK の assets ディレクトリから kzb ファイルを読み込みます。
異なる場所を設定するには、KanziRuntime.setResourceDirectory を呼び出します。
この呼び出しの後、Kanzi はアプリケーションのすべてのビューにわたって指定された場所から kzb ファイルを読み込みます。
例えば、外部ストレージディレクトリからkzbファイルをロードするには:
mRuntimeRef.get().setResourceDirectory(Environment.getExternalStorageDirectory().toPath());
デフォルトの場所に戻すには、空の文字列でインターフェースを呼び出します。