Kanzi を使用した Android アプリケーション開発のトラブルシューティング

  • Android パッケージのビルド中、または Android Studio でプロジェクトを開く際に、以下のようなエラーが発生した場合:

    Your build is currently configured to use incompatible Java 21.0.3 and Gradle 7.6.2. Cannot sync the project.
    
    Unsupported Java.
    Your build is currently configured to use Java 17.0.6 and Gradle 6.7.1.
    
    Unsupported class file major version 61.
    

    これらのエラーは、Gradle ツールとアクティブな JDK の間の不一致が原因で発生します。これらのエラーを解決するには:

    • Kanzi 3.9.7 以前でアプリケーションを作成した場合は、新しいツールを使用するようにプロジェクトを移行します。Android アプリケーションテンプレートの変更 を参照してください。

    • アプリケーションが互換性のある JDK を使用するように設定されていることを確認します。JDK のインストール を参照してください。

  • Android パッケージのビルド中に以下のエラーが発生した場合:

    FAILURE: Build failed with an exception.
    
    * What went wrong:
    Execution failed for task ':app.packageDebug'.
    > Failed to obtain compression information for entry
    

    Android Studio バージョン 4.1.3 以上を使用していることを確認してください。このエラーは Android Studio バージョン 3.1 で発生します。

  • Android パッケージのビルド中に以下のエラーが発生した場合:

    FAILURE: Build failed with an exception.
    
    * What went wrong:
    Execution failed for task ':app.packageDebug'.
    > Java heap space
    

    Gradleビルドシステムで利用可能なヒープ量を増やします。例えば、Android Studioで <ProjectName>/Application/configs/platforms/android_gradle プロジェクトを開き、そのプロジェクト内の gradle.properties ファイルを開いて設定します。

    org.gradle.jvmargs=-Xmx4608m
    
  • Android パッケージのビルド中に以下のエラーが発生した場合:

    FAILURE: Build failed with an exception.
    
    * Where:
    Build file 'Engine\configs\platforms\android_gradle\kanziruntime\build.gradle' line: 103
    
    * What went wrong:
    A problem occurred evaluating project ':kanziruntime'.
    > <PathToKanziWorkspace>\Engine\version.txt not found
    

    プロジェクトの <ProjectName>/Application/configs/platforms/android_gradle ディレクトリに local.properties という名前のファイルを作成し、そのファイルにワークスペースの正しい場所を設定します。例えば、次のように設定します。

    kanzi.home=C\:\\<KanziWorkspace>
    
  • Data_source_plugin_template を使用するアプリケーションをビルド中にこの警告を受け取った場合:

    More than one file was found with OS independent path 'lib/arm64-v8a/libkzcoreui.so'.
    This version of the Android Gradle Plugin chooses the file from the app or dynamic-feature
    module, but this can cause unexpected behavior or errors at runtime. Future versions of
    the Android Gradle Plugin will throw an error in this case
    

    Kanzi Gradleプラグインをバージョン0.7.1に更新します。

  • Android アプリケーションを実行中に次の例外のいずれかが発生した場合:

    java.lang.BootstrapMethodError: Exception from call site #0 bootstrap method
    
    E/AndroidRuntime: FATAL EXCEPTION: main
    Process: <process name>, PID: <pid>
    java.lang.NoSuchMethodError: No static method metafactory(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite; in class Ljava/lang/invoke/LambdaMetafactory; or its super classes (declaration of 'java.lang.invoke.LambdaMetafactory' appears in /apex/com.android.runtime/javalib/core-oj.jar)
      at com.rightware.kanzi.KanziViewAdapter.loadStartupPrefab(KanziViewAdapter.java:664)
      at com.rightware.kanzi.KanziViewAdapter.setStartupPrefabUrl(KanziViewAdapter.java:196)
    

    アプリケーションが互換性のないバージョンの Java を使用している可能性があります。Kanzi Android framework (droidfw) と Kanzi Java API には Java 11 が必要です。

    Android Studioプロジェクトの app/build.gradle ファイルで、Java言語のバージョンが互換性のあるバージョンに設定されていることを確認してください。

    android {
        ...
    
        compileOptions {
           sourceCompatibility JavaVersion.VERSION_11
           targetCompatibility JavaVersion.VERSION_11
        }
    }
    
  • Android Studioを使用してJavaプロジェクトをKotlinに変換する際、デフォルトで生成されるgradleスクリプトはデフォルトで最新バージョンのKotlinを使用します。これにより、次のようなエラーが発生する可能性があります。

    The minCompileSdk (31) specified in a
    dependency's AAR metadata (META-INF/com/android/build/gradle/aar-metadata.properties)
    is greater than this module's compileSdkVersion (android-28).
    Dependency: androidx.core:core-ktx:1.8.0-alpha01.
    

    Kotlinのバージョンがプロジェクトと互換性があることを確認してください。例えば、プロジェクトが`compileSdkVersion` 28を使用している場合、Kotlinをバージョン1.6.0にダウングレードしてください。

    リプレイス (Replace)

    implementation "androidx.core:core-ktx:+"
    

    以下に置き換えます。

    implementation "androidx.core:core-ktx:1.6.0"
    

    または

    implementation "androidx.core:core-ktx:$kotlin_version"
    
  • Androidアプリケーションからこれらのエラーメッセージを受け取った場合:

    I/Kanzi: [info:generic] kzsEGLConfigure(): no EGL configurations with GLES3 support present, downgraded EGL configuration request to GLES2.
    
    E/Kanzi: [error:generic] Half-float is not supported by current platform, please re-export kzb file(s) without half-floats.
    

    アプリケーションは、OpenGL ES 3.0でのみ利用可能な機能を使用します。Androidエミュレーターで、OpenGL ES 3.0を有効にしてください。AndroidエミュレーターでOpenGL ES 3.0を有効にする を参照してください。

  • Android 向けの CMake ビルドの構成中に以下のエラーが発生した場合:

    Kanzi workspace path contains spaces:
      <PathToKanziWorkspace>
    Android Gradle Plugin cannot package native shared libraries when the
    workspace path contains spaces.
    

    このエラーは、パスにスペースが含まれている場合、CMake のファイルベース API が JSON レスポンス内のライブラリパスを引用符で囲むために発生します。Android Gradle Plugin はこれらの引用符を除去しないため、インポートされた共有ライブラリがスキップされます。その結果、ネイティブの .so ファイルを含まない APK が生成され、ランタイムで UnsatisfiedLinkError が発生します。

    これを修正するには、Kanzi ワークスペースをスペースを含まないパスに移動し、それに合わせてプロジェクトの local.properties ファイル内のワークスペースの場所を更新します。

  • Android アプリケーションの実行中に以下のエラーが発生した場合:

    Failed to load plugin 'kzlua': cannot open 'libkzlua.so': dlopen failed: library "libkzlua.so" not found. The plugin library must be deployed with the application.
    

    アプリケーションの kzb ファイルが必要とする Kanzi Engine プラグインが APK に含まれていません。Android では、Kanzi Engine プラグインはアプリケーションがリンクした場合にのみ APK に含まれます。

    Lua プラグインをリンクするには、Lua プラグインのデプロイ を参照してください。その他のオプションのプラグインをリンクするには、プロジェクトの kanzinative/build.gradle で対応する KANZI_LINK_ オプションを設定します。