Skip to content

iOS Rive initialization crash: init -> rive_text_ffi not found #432

@julianfalcionelli

Description

@julianfalcionelli

Description

On iOS my rive animations are failing on initialization.

flutter: ----------------FIREBASE CRASHLYTICS----------------
flutter: Invalid argument(s): Failed to lookup symbol 'init': dlsym(RTLD_DEFAULT, init): symbol not found
flutter: 
#0      DynamicLibrary.lookup (dart:ffi-patch/ffi_dynamic_library_patch.dart:33:70)
#1      init (package:rive_common/src/rive_text_ffi.dart:497:16)
#2      init (package:rive_common/src/rive_text_ffi.dart)
#3      initFont (package:rive_common/src/rive_text_ffi.dart:814:3)
#4      Font.initialize (package:rive_common/rive_text.dart:463:7)
#5      RiveFile.initialize (package:rive/src/rive_file.dart:392:33)
#6      RiveFile._initTextAndImport (package:rive/src/rive_file.dart:414:13)
#7      RiveFile.asset (package:rive/src/rive_file.dart:444:12)
<asynchronous suspension>
#8      RiveAnimationState._configure (package:rive/src/widgets/rive_animation.dart:212:11)
<asynchronous suspension>
flutter: ----------------------------------------------------

On Android this is working as expected.

Rive version

rive: ^0.13.16

Flutter Doctor

Doctor summary (to see all details, run flutter doctor -v):
[✓] Flutter (Channel stable, 3.24.3, on macOS 14.1.2 23B92 darwin-x64, locale en-AR)
[✓] Android toolchain - develop for Android devices (Android SDK version 33.0.1)
[✓] Xcode - develop for iOS and macOS (Xcode 15.0.1)
[✓] Chrome - develop for the web
[✓] Android Studio (version 2024.2)
[✓] VS Code (version 1.93.1)
[✓] Connected device (4 available)
    ! Error: Browsing on the local area network for Julian’s iPhone. Ensure the device is unlocked and attached with a cable or associated with the same local area network as this Mac.
      The device must be opted into Developer Mode to connect wirelessly. (code -27)
[✓] Network resources

Rive File

get_started.riv.zip

Code

....

SizedBox(
            height: 400,
            child: RiveAnimation.asset(
              'assets/animations/rive/get_started.riv',
              artboard: 'Artboard',
              onInit: _onRiveInit,
            ),
          ),
....

  void _onRiveInit(Artboard artboard) {
    final controller =
        StateMachineController.fromArtboard(artboard, 'State Machine 1', onStateChange: (stateMachine, state) {
      LogHelper.d('State: $stateMachine -> $state');
      if (state == 'ExitState') {
        context.read<InitialBloc>().add(const InitialEvent.onGetStartedClicked());
      }
      if (state == 'Exit') {
        setState(() {
          _accessAccountOpacity = 0.0;
        });
      }
      if (state == 'KidsBlink') {
        setState(() {
          _accessAccountOpacity = 1.0;
        });
      }
    });
    if (controller == null) {
      LogHelper.e('State machine not found');
      return;
    }
    artboard.addController(controller);
    _controller = controller;
  }

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions