rive-app / rive-android

A runtime for interactive animations on Android
https://rive.app
MIT License
332 stars 30 forks source link

No implementation found for long app.rive.runtime.kotlin.core.File.import(byte[], int) #301

Closed leolr02 closed 9 months ago

leolr02 commented 10 months ago

gradle version: 6.8.3

Rive version: app.rive:rive-android:5.0.0

kotlin gradle version: 1.8.0

Kotlin version: 1.7.1

I trying to load a Rive file animation from a raw folder via xml :

<app.rive.runtime.kotlin.RiveAnimationView
    android:id="@+id/loginBackground"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    app:riveResource="@raw/background"
    app:riveAutoPlay="true"
    app:riveFit="CONTAIN"
    app:riveLoop="LOOP"
    />

And init Rive in the Activity in onCreate function: Rive.init(this)

Tha'ts my provider on Manifest file:

    <provider
        android:name="androidx.startup.InitializationProvider"
        android:authorities="${applicationId}.androidx-startup"
        android:exported="false"
        tools:node="merge">
        <meta-data
            android:name="app.rive.runtime.kotlin.RiveInitializer"
            android:value="androidx.startup" />
    </provider>

But when the app run, throws me this error:

No implementation found for long app.rive.runtime.kotlin.core.File.import(byte[], int) (tried Java_app_rive_runtime_kotlin_core_File_import and Java_app_rive_runtime_kotlin_core_File_import___3BI)

FATAL EXCEPTION: main
                                                                                                    Process: com.leolr.restomobile, PID: 21461
                                                                                                    java.lang.RuntimeException: Unable to start activity ComponentInfo{com.leolr.restomobile/com.leolr.restomobile.activities.LoginActivity}: android.view.InflateException: Binary XML file line #18: Binary XML file line #18: Error inflating class app.rive.runtime.kotlin.RiveAnimationView
                                                                                                        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2955)
                                                                                                        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3090)
                                                                                                        at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78)
                                                                                                        at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108)
                                                                                                        at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68)
                                                                                                        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1820)
                                                                                                        at android.os.Handler.dispatchMessage(Handler.java:106)
                                                                                                        at android.os.Looper.loop(Looper.java:193)
                                                                                                        at android.app.ActivityThread.main(ActivityThread.java:6758)
                                                                                                        at java.lang.reflect.Method.invoke(Native Method)
                                                                                                        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
                                                                                                        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
                                                                                                    Caused by: android.view.InflateException: Binary XML file line #18: Binary XML file line #18: Error inflating class app.rive.runtime.kotlin.RiveAnimationView
                                                                                                    Caused by: android.view.InflateException: Binary XML file line #18: Error inflating class app.rive.runtime.kotlin.RiveAnimationView
                                                                                                    Caused by: java.lang.reflect.InvocationTargetException
                                                                                                        at java.lang.reflect.Constructor.newInstance0(Native Method)
                                                                                                        at java.lang.reflect.Constructor.newInstance(Constructor.java:343)
                                                                                                        at android.view.LayoutInflater.createView(LayoutInflater.java:647)
                                                                                                        at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:790)
                                                                                                        at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:730)
                                                                                                        at android.view.LayoutInflater.rInflate(LayoutInflater.java:863)
                                                                                                        at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:824)
                                                                                                        at android.view.LayoutInflater.inflate(LayoutInflater.java:515)
                                                                                                        at android.view.LayoutInflater.inflate(LayoutInflater.java:423)
                                                                                                        at com.leolr.restomobile.databinding.ActivityLoginBinding.inflate(ActivityLoginBinding.java:80)
                                                                                                        at com.leolr.restomobile.databinding.ActivityLoginBinding.inflate(ActivityLoginBinding.java:74)
                                                                                                        at com.leolr.restomobile.activities.LoginActivity.onCreate(LoginActivity.kt:43)
                                                                                                        at android.app.Activity.performCreate(Activity.java:7144)
                                                                                                        at android.app.Activity.performCreate(Activity.java:7135)
                                                                                                        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1272)
                                                                                                        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2935)
                                                                                                        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3090)
                                                                                                        at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78)
                                                                                                        at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108)
                                                                                                        at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68)
                                                                                                        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1820)
                                                                                                        at android.os.Handler.dispatchMessage(Handler.java:106)
                                                                                                        at android.os.Looper.loop(Looper.java:193)
                                                                                                        at android.app.ActivityThread.main(ActivityThread.java:6758)
                                                                                                        at java.lang.reflect.Method.invoke(Native Method)
                                                                                                        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
                                                                                                        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
                                                                                                    Caused by: java.lang.UnsatisfiedLinkError: No implementation found for long app.rive.runtime.kotlin.core.File.import(byte[], int) (tried Java_app_rive_runtime_kotlin_core_File_import and Java_app_rive_runtime_kotlin_core_File_import___3BI)
                                                                                                        at app.rive.runtime.kotlin.core.File.import(Native Method)
                                                                                                        at app.rive.runtime.kotlin.core.File.<init>(File.kt:22)
                                                                                                        at app.rive.runtime.kotlin.RiveAnimationView.loadFileFromResource(RiveAnimationView.kt:259)
2023-08-26 19:30:47.044 21461-21461 AndroidRuntime          com.leolr.restomobile                E      at app.rive.runtime.kotlin.RiveAnimationView.<init>(RiveAnimationView.kt:219)

What I'm doing wrong? :(

MKelman commented 10 months ago

Seeing similar issue: Fatal Exception: java.lang.UnsatisfiedLinkError: No implementation found for long app.rive.runtime.kotlin.renderers.Renderer.constructor(boolean, int) (tried Java_app_rive_runtime_kotlin_renderers_Renderer_constructor and Java_app_rive_runtime_kotlin_renderers_Renderer_constructor__ZI)

version rive:app.rive:rive-android:8.2.2

leolr02 commented 10 months ago

I found the solution, I change the following dependencies:

gradle version to 7.3.3

build:gradle(app)

buildToolsVersion "30.0.3" compileOptions { sourceCompatibility JavaVersion.VERSION_11 targetCompatibility JavaVersion.VERSION_11 }

kotlinOptions {
    jvmTarget = "11"
}

rive to 'app.rive:rive-android:4.0.0' initializer to "androidx.startup:startup-runtime:1.1.1" kotlin stdlib to "org.jetbrains.kotlin:kotlin-stdlib:1.8.0"

build.gradle(AppName)

dependencies { classpath 'com.android.tools.build:gradle:7.2.2' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.8.0" }

I hope that is useful for you

umberto-sonnino commented 9 months ago

If you want to initialize Rive in a specific context, you can also call:

// YourRiveActivity.kt
class YourRiveActivity : AppCompatActivity() {
  override fun onCreate(savedInstanceState: Bundle?) {
    Rive.init(this)
    …
  }
}

I'm going to close this for now as it seems resolved. I also recommend upgrading to the latest rive-android, currently we're at 8.2.3