repro the dep issue
diff --git a/pkgs/ffigen/hook/build.dart b/pkgs/ffigen/hook/build.dart
index f6ad322..871a850 100644
--- a/pkgs/ffigen/hook/build.dart
+++ b/pkgs/ffigen/hook/build.dart
@@ -77,7 +77,7 @@
     if (codeConfig.targetOS == OS.macOS) {
       final builder = await CustomBuilder.create(
         input,
-        input.packageRoot.resolve('../').toFilePath(),
+        input.packageRoot.toFilePath(),
       );
 
       // Build swift_class_test.swift. There's no swift compilation package, so
@@ -140,42 +140,11 @@
         );
       }
 
-      // Build package:objective_c sources into objc_test as a workaround for
-      // dependency native asset resolution in tests.
-      final objcPkgDir = input.packageRoot.resolve('../objective_c/');
-      final objcSrcDir = Directory.fromUri(objcPkgDir.resolve('src/'));
-      final objcCFlags = [
-        ...cFlags,
-        '-I',
-        objcPkgDir.resolve('src/').toFilePath(),
-      ];
-      final objcMFlags = [...objcCFlags, '-x', 'objective-c', '-fobjc-arc'];
-
-      final objcDependencies = <Uri>[];
-      for (final file in objcSrcDir.listSync(recursive: true)) {
-        if (file is File) {
-          final path = file.path;
-          if (path.endsWith('.c')) {
-            objcDependencies.add(file.uri);
-            objFiles.add(await builder.buildObject(file.uri, objcCFlags));
-          } else if (path.endsWith('.m')) {
-            objcDependencies.add(file.uri);
-            objFiles.add(await builder.buildObject(file.uri, objcMFlags));
-          } else if (path.endsWith('.h')) {
-            objcDependencies.add(file.uri);
-          }
-        }
-      }
-      final refTracker = objcPkgDir.resolve('test/reference_tracker.m');
-      if (File.fromUri(refTracker).existsSync()) {
-        objcDependencies.add(refTracker);
-        objFiles.add(await builder.buildObject(refTracker, objcMFlags));
-      }
-      final gcInject = objcPkgDir.resolve('test/gc_inject.m');
-      if (File.fromUri(gcInject).existsSync()) {
-        objcDependencies.add(gcInject);
-        objFiles.add(await builder.buildObject(gcInject, objcMFlags));
-      }
+      // Add dart_api_dl.c from objective_c package.
+      final dartApiDl = input.packageRoot.resolve(
+        '../objective_c/src/include/dart_api_dl.c',
+      );
+      objFiles.add(await builder.buildObject(dartApiDl, cFlags));
 
       const objcAsset = 'objc_test';
       final objcLib = input.outputDirectory.resolve('$objcAsset.dylib');
@@ -183,16 +152,9 @@
         ...cFlags,
         '-framework',
         'Foundation',
-        '-undefined',
-        'dynamic_lookup',
       ]);
 
-      output.dependencies.addAll([
-        ...mFiles,
-        ...hFiles,
-        swiftFile,
-        ...objcDependencies,
-      ]);
+      output.dependencies.addAll([...mFiles, ...hFiles, swiftFile, dartApiDl]);
 
       output.assets.code.add(
         CodeAsset(
diff --git a/pkgs/ffigen/test/native_objc_test/util.dart b/pkgs/ffigen/test/native_objc_test/util.dart
index 0e537f1..4995d73 100644
--- a/pkgs/ffigen/test/native_objc_test/util.dart
+++ b/pkgs/ffigen/test/native_objc_test/util.dart
@@ -2,7 +2,7 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
-@DefaultAsset('package:ffigen/objc_test')
+@DefaultAsset('package:objective_c/objective_c.dylib')
 library;
 
 import 'dart:ffi';
diff --git a/pkgs/objective_c/lib/src/internal.dart b/pkgs/objective_c/lib/src/internal.dart
index a35a70e..a4c407d 100644
--- a/pkgs/objective_c/lib/src/internal.dart
+++ b/pkgs/objective_c/lib/src/internal.dart
@@ -4,7 +4,6 @@
 
 import 'dart:async';
 import 'dart:ffi';
-import 'dart:io';
 import 'dart:isolate';
 
 import 'package:ffi/ffi.dart';
@@ -235,44 +234,12 @@
 bool _dartAPIInitialized = false;
 void _ensureDartAPI() {
   if (!_dartAPIInitialized) {
-    _tryLoadDylibFallback();
     final result = c.initializeApi(NativeApi.initializeApiDLData);
     assert(result == 0);
     _dartAPIInitialized = true;
   }
 }
 
-void _tryLoadDylibFallback() {
-  if (DynamicLibrary.process().providesSymbol('DOBJC_initializeApi')) {
-    return;
-  }
-  final candidates = [
-    Platform.script.resolve('../lib/objective_c.dylib').toFilePath(),
-    Platform.script.resolve('../lib/objc_test.dylib').toFilePath(),
-    Platform.script.resolve('objective_c.dylib').toFilePath(),
-    Platform.script.resolve('objc_test.dylib').toFilePath(),
-    '${Directory.current.path}/.dart_tool/lib/objective_c.dylib',
-    '${Directory.current.path}/.dart_tool/lib/objc_test.dylib',
-  ];
-  for (final path in candidates) {
-    if (File(path).existsSync()) {
-      try {
-        final dlopen = DynamicLibrary.process()
-            .lookupFunction<
-              Pointer<Void> Function(Pointer<Utf8>, Int32),
-              Pointer<Void> Function(Pointer<Utf8>, int)
-            >('dlopen');
-        final pathPtr = path.toNativeUtf8();
-        dlopen(pathPtr, 0x8 | 0x2); // RTLD_GLOBAL | RTLD_NOW
-        calloc.free(pathPtr);
-        if (DynamicLibrary.process().providesSymbol('DOBJC_initializeApi')) {
-          return;
-        }
-      } catch (_) {}
-    }
-  }
-}
-
 c.Dart_FinalizableHandle _newFinalizableHandle(
   _FinalizablePointer finalizable,
 ) {
@@ -618,10 +585,7 @@
 }
 
 /// Only for use by FFIgen bindings.
-final ContextPtr objCContext = () {
-  _ensureDartAPI();
-  return c.createContext();
-}();
+final ContextPtr objCContext = c.createContext();
 
 // Not exported by ../objective_c.dart, because they're only for testing.
 bool blockHasRegisteredClosure(BlockPtr block) =>