展出部件
一个允许您在 iOS 和 Android 中制作本地部件的 expo 模块 .
安装
将 v1 包用于 expo 49,或 v2 用于 expo 51+.
npx expo install @bittingz/expo-widgets
设置
比较清晰,请参见示例项目. 您可以略去 Android 或 ios 文件夹并设置, 如果您只想要支持一个平台 .
- 创建要存储部件文件的文件夹 .
- 在您的插件阵列( app. config.{js/ts}) 中添加:
[
"@bittingz/expo-widgets",
{
ios: {
src: "./src/my/path/to/ios/widgets/folder",
devTeamId: "your apple dev team ID",
mode: "production",
moduleDependencies: [],
useLiveActivities: false,
frequentUpdates: false,
entitlements: {
"any xcode entitlement the widget needs": "entitlement value"
}
},
android: {
src: "./src/my/path/to/android/widgets/folder",
widgets: [
{
"name": "MyWidgetProvider",
"resourceName": "@xml/my_widget_info"
}
],
distPlaceholder: "optional.placeholder"
}
}
],
- 在您的 iOS 部件文件夹中创建模块 。 快速文件, Widget Bundle, Depositers.xcassets, 以及 Widget 快速文件 .
- 您的Android文件夹应该模仿和机器人工作室设置,所以它有两个子文件夹路径: /android/main/java/package name and/android/res/. 软件包名称目前正在调整中。 将您的部件. kt 文件放在里面 。 文件夹应该包含您的资产, 和机器人工作室相同 .
- 如果您有任何快速文件, 您需要使用模块 。 快速, 只要把它们添加到您的 app. config 中的模块依赖性阵列中 。 这对模块和部件之间的数据模型特别有用.
- 为了在您的应用程序和部件之间共享数据,您可以使用多种方法,但最简单的方法是使用用户首选项. 此插件会自动为您处理它, 因此您只需要确保使用一个有正确格式的套件Name 。 见实例项目.
- 如果您想要在您的 iOS 部件中使用自定义字体, 请使用我的 expo- intative- fonts 软件包; 使用时请参见示例项目 。 Android 部件与资源文件夹配合良好,不需要额外的依赖性.
- Android , 在 /res/ xml/\\ info.xml 中将资源Name 设置为您的文件名
- Android 应用程序需要多个版本, 并使用不同的软件包名, 您可以使用 distPlacepose, 用您的 app. config. (json/ ts/js) 来替换部件源文件中的所有占位符 。 因此,如果您的源文件包括"package com.company.app"和"import com.company.app",您有两种分布(com.company.app用于 prod和dev.company.app用于dev),那么将 distPlacewides设置为 com.com.company. app将替换所有软件包并导入每个架构正确分布的引用. 如果与你无关,你可以省略这个字段. iOS不需要配置多个分发应用程序.
覆盖 xcode 选项
您可以在 app.json (所有道具都是可选的) 中覆盖 xcode 选项 :
"@bittingz/expo-widgets",
{
"ios": {
...
xcode: {
appExtAPI: true, // sets APP_EXTENSION_API_ONLY in the podfile
configOverrides: {
// key value pairs e.g. SWIFT_VERSION: '5.0',
},
entitlements: {}, // key value pairs
},
}
}
配置 Overrides 属性是 xcodeproj 值,必须精确匹配大小写 .
运行示例项目
cd example
npm run prebuild:ios
npm run ios
OR
npm run prebuild:android
npm run android
解决Android问题
如果您在部件 kotlin 文件中使用 R 来获得布局, 您可能会为 R 获得一个未解决的引用错误 。 在这种情况下,只需添加"package your.appconfig.packageid.R",删除你的和机器人文件夹并重建.
需要自定义字体吗 ?
给我 尝试其它 expo 模块。您需要将字体配置放在部件配置之前.
需要发展吗?
如果您需要设计并开发的部件, 请联系更多细节 .
谢谢!
非常感谢 毒气师 以一个伟大的基准开始.