安装
环境要求
- React Native 0.75 或更高版本并启用新架构,或 Expo SDK 51+ 并启用新架构(SDK 52 起默认开启)。
- iOS:与你所用 React Native 版本的最低 iOS 版本一致。podspec 使用
min_ios_version_supported,并链接UIKit和PencilKit。 - Android:API 24(Android 7.0)或更高。
本库没有任何第三方原生依赖:不需要 Skia、Reanimated 或 WebView。
添加依赖
npm install react-native-signature-inkyarn add react-native-signature-ink本库支持自动链接。没有 config plugin,也无需手动注册。
iOS
cd ios && pod install如果调用 saveToPhotoLibrary(),请在应用的 Info.plist 中添加以下键。需要弹出权限请求时如果缺少该键,iOS 会直接终止应用。
<key>NSPhotoLibraryAddUsageDescription</key>
<string>将你的签名保存到相册。</string>Android
API 29 及以上无需任何配置。
如需在 API 28 及以下使用 saveToPhotoLibrary(),请在应用的 AndroidManifest.xml 中声明旧版存储权限:
<uses-permission
android:name="android.permission.WRITE_EXTERNAL_STORAGE"
android:maxSdkVersion="28" />本库自带用于 copyToClipboard() 的 FileProvider(类 com.signatureink.SignatureInkFileProvider,authority 为 ${applicationId}.signatureinkprovider)。它会自动合并到你的 manifest 中,不会与其他 FileProvider 声明冲突。
Expo
本库可在开发构建以及任何使用 expo prebuild 的项目中运行。Expo Go 无法加载自定义原生代码,因此不受支持。
npx expo install react-native-signature-ink
npx expo prebuild # 或构建 dev client / EAS build在 SDK 51 上,请在 app.json 中设置 "newArchEnabled": true 以启用新架构。
iOS 相册权限请在 app.json 中声明,而不是直接修改 Info.plist,因为 prebuild 会重新生成该文件:
{
"expo": {
"ios": {
"infoPlist": {
"NSPhotoLibraryAddUsageDescription": "将你的签名保存到相册。"
}
}
}
}如需在 Android API 28 及以下使用 saveToPhotoLibrary(),可通过一个小型 config plugin 或 expo-build-properties 添加 WRITE_EXTERNAL_STORAGE。剪贴板用到的 FileProvider 无需配置。
升级之后
原生视图在构建时由 TypeScript 规范生成。升级本库后,请重新运行 pod install 并重新构建原生应用,仅重新加载 Metro 是不够的。如果 Android 仍在使用旧的生成代码,请在 android/ 中运行 ./gradlew clean。
下一步
继续阅读快速开始。