Kanzi application framework (appfw) を使用した Android 向け開発¶
Kanzi application framework (appfw) を使用すると、複数のプラットフォーム向けにアプリケーションを作成し、プラットフォーム間で重要なアプリケーションコードを共有することができます。
Kanzi application framework (appfw) は、クロスプラットフォームアプリケーションを開発するためのフレームワークです。アプリケーションとプラグインのコードはC++で記述し、Android固有の機能を拡張するにはJNIグルーコードを書く必要があります。Kanzi application framework (appfw) を使用する場合、Kanzi アプリケーションを一度に1つのAndroid Viewにのみレンダリングできます。
Kanzi アプリケーションにおける Android ライフサイクルイベント¶
Androidのライフサイクルイベントは、アクティビティの状態が変化したときに Kanzi アプリケーションがどのように動作するかを設定します。各イベントはAndroidのアクティビティコールバックメソッドにマップされます。Kanzi アプリケーションはこれらのライフサイクルイベントを使用します。
Lifecycle.Event.ON_CREATE// Load the native library that provides Kanzi functionality, // initialize the context, and assign the KanziView for rendering. // This function calls the KanziNativeLibrary.createApplication() function, // which loads the Kanzi project. KanziView.createNativeApplication();
Lifecycle.Event.ON_DESTROY// Halt and destroy the Kanzi application. // This function calls the KanziNativeLibrary.haltApplication() and // KanziNativeLibrary.destroyApplication() functions. KanziView.destroyNativeApplication();
SurfaceHolder.Callback.surfaceCreated(KanziView.surfaceCreated)// When the application surface is created, run the Kanzi application. KanziNativeLibrary.runApplication(holder.getSurface());
SurfaceHolder.Callback.surfaceDestroyed(KanziView.surfaceDestroyed)// When the Kanzi application surface is destroyed, pause rendering. KanziNativeLibrary.haltApplication();
SurfaceHolder.Callback.surfaceChanged(KanziView.surfaceChanged)// When the format or size of the Kanzi application surface changes, // resize the application surface. // @param width: The new width of the surface. // @param height: The new height of the surface. KanziNativeLibrary.resizeEvent(width, height);
Kanzi は、アプリケーションのサーフェスがレンダリングの準備ができているかどうかを示さないため、LifeCycle.Event.ON_PAUSE および Lifecycle.Event.ON_RESUME イベントを使用しません。レンダリングを一時停止および再開するために、KanziView はこれらの関数を使用します。
SurfaceHolder.Callback.surfaceCreated(KanziView.surfaceCreated)SurfaceHolder.Callback.surfaceDestroyed(KanziView.surfaceDestroyed)
https://developer.android.com/reference/androidx/lifecycle/Lifecycle.Event.html および https://developer.android.com/reference/android/view/SurfaceHolder.Callback を参照してください。
この図は、Android プラットフォーム上での Kanzi アプリケーションの初期化シーケンスを示しています。
KanziView を Android Studio プロジェクトに追加する¶
Kanzi アプリケーションをAndroidアプリケーションで実行するには、既存のAndroid Studioプロジェクトに KanziView を追加することができます。
Android Studioプロジェクトに KanziView を追加するには:
Kanzi Studio で、Android Studioプロジェクトに Kanzi ビューとして追加したいプロジェクトを開き、File > Export > Export KZB を選択します。
<ProjectName>/Application/binディレクトリを Android Studio プロジェクトのルートディレクトリにコピーします。これにより、kzb ファイルが Android パッケージに含まれます。例えば、
MyProjectという名前の Android Studio プロジェクトの場合、Application/binディレクトリをMyProjectディレクトリにコピーします。Android Studioで、
KanziViewを追加したいプロジェクトを開きます。Android Studioで、
app/src/mainディレクトリ内にcppというディレクトリを作成し、そのディレクトリに Kanzi プロジェクトのCMakeビルドファイルとソースコードを追加します。Kanzi プロジェクトの
<ProjectName>/ApplicationディレクトリからCMakeLists.txtファイルをcppディレクトリにコピーします。Kanzi プロジェクトの
<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:7.4.2' classpath 'com.rightware.gradle:kanzi:0.8.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 のメインメニューで、Build > Make Project を選択します。
Android Studio により、アプリケーションパッケージがビルドされます。
関連項目¶
Kanzi Android アプリケーションフレームワーク API リファレンス