Мой пакет не является автоматической компоновкой в React Native

#objective-c #react-native #cocoapods #react-native-ios

#objective-c #react-native #cocoapods #react-native-ios

Вопрос:

Я практикуюсь в создании моста React Native. До сих пор я могу передать строку из Objective-C в JavaScript, используя следующие коды:

TestModule.h

 #import <React/RCTBridgeModule.h>

@interface TestModule : NSObject <RCTBridgeModule>

@end
  

TestModule.m

 #import "TestModule.h"

@implementation TestModule

RCT_EXPORT_MODULE();

RCT_EXPORT_METHOD(foo:(RCTResponseSenderBlock)callback)
{
  NSString *testString = @"test";
  callback(@[testString]);
}

@end
  

Затем в React Native:

 import React, { useState, useEffect } from 'react';
import { SafeAreaView, Text, NativeModules } from 'react-native';
const { foo } = NativeModules.TestModule;

export default function App() {
  const [text, setText] = useState('HELLO WORLD!');

  useEffect(() => foo(setText), []);

  return (
    <SafeAreaView>
      <Text>{text}</Text>
    </SafeAreaView>
  );
}
  

Это отлично работает в монолитном приложении, но я хочу экспортировать метод как стороннюю зависимость и переместить его в другую папку, а затем добавить test-bridge.podspec файл.

test-bridge.podspec

 package = JSON.parse(File.read('package.json'))

Pod::Spec.new do |spec|
  spec.name = package['name']
  spec.version = package['version']
  spec.summary = package['description']
  spec.license = package['license']
  spec.homepage = package['homepage']
  spec.author = { package['author']['name'] => package['author']['email'] }
  spec.source = { git: package['repository']['url'] }
  spec.source_files = '*.{h,m}'
end
  

package.json

 {
  "name": "test-bridge",
  "version": "1.0.0",
  "description": "Some Description",
  "license": "MIT",
  "homepage": "https://github.com/dcangulo/test-bridge",
  "repository": {
    "type": "git",
    "url": "https://github.com/dcangulo/test-bridge.git"
  },
  "author": {
    "name": "David Angulo",
    "email": "hello@davidangulo.xyz",
    "url": "https://www.davidangulo.xyz"
  },
  "main": "index.js"
}
  

Затем, чтобы установить его в мое приложение (созданное с помощью npx react-native init ), я запускаю следующее:

 yarn add https://github.com/dcangulo/test-bridge
npx pod-install
  

Однако pod-install не связывает пакет в приложении, и я получаю null is not an object сообщение об ошибке, подразумевающее, что NativeModules.TestModule это null так.

Репозиторий: https://github.com/dcangulo/test-bridge

Чего не хватает моему коду для включения автоматической компоновки с использованием cocoapods?