flutter - Flutter:添加共享扩展
问题描述
问题
我已将 iOS 添加Share Extension
到一个非常简单的 Flutter 项目中,
我在功能分支上使用设备设置代码,我也知道颤动中的位码尚未准备好:
Target: Share Extension
在设备上运行
ld: '[Project_Path]/ios/DerivedData/Products/Debug-iphoneos/FMDB/libFMDB.a(FMDatabase.o)'
does not contain bitcode. You must rebuild it with bitcode enabled (Xcode setting
ENABLE_BITCODE)
Target: The Container App
在设备上运行
注意:这[CP] Embed Pods Framworks
与[ProjectCompare]
.
* Run custom shell script '[CP] Embed Pods Framworks'....
* Validate [Project_Path]/ios/DerivedData/Products/Debug-iphonos/Runner.app/PlugIns/
ShareExtension.appe(in target: Runner)
* cd [Project_Path]/ios
* builtin-embeddedBinaryValidationUtility [Project_Path]/ios/DerivedData/Products/
Debug-iphonos/Runner.app/PlugIns/ShareExtension.appex
-siging-cert [someID]
-info-plist-path [Project_Path]/ios/DerivedData/Products/Debug-iphonos/Runner.app/Info.plist
* error: Embedded binary is not signed with the same certificate as the parent app.
Verify the embedded binary target's code sign settings match the parent app's.
* Embedded Binary Signing Certificate: Not Code Signed
* Parent App Signing Certificate: iPhone Developer: MyName (XXXXX)
比较
我也创建了一个纯 iOS 项目ProjectCompare,并在更改后添加Pod
到其中。我打开项目workspace
并添加Share Extension
,它在设备上运行良好。
问题
所以我想也许一些与 Flutter 设置相关的脚本会导致这个错误?还是Podfile中的脚本?
知道该怎么做吗?
更新
覆盖设置后Target: Share Extension
:
LIBRARY_SEARCH_PATHS
= "";OTHER_LDFLAGS
= ""; 或OTHER_LDFLAGS
=“-ObjC”;
在设备上运行Target: ShareExtension
和运行Target: The Container App
都可以。
解决方案
所以在@pulyaevskiy的帮助下。我找到了解决方法:
短的:
overwrite
设置Target: Share Extension
:(git diff示例)
LIBRARY_SEARCH_PATHS
= "";
OTHER_LDFLAGS
= ""; 或OTHER_LDFLAGS
=“-ObjC”;
细节:
位置:运行时
Target: ShareExtension
&Target: Container App
都出错,只是因为添加了Target: Share Extension
. 这意味着错误主要来自Target: ShareExtension
.列出命令详细信息:
[Clang Path]/clang -arch arm64 -isysroot
[iOS SDK Path]/iPhoneOS12.4.sdk
-L[Project Path]/ios/DerivedData/Products/Debug-iphoneos
-L[Project Path]/ios/DerivedData/Products/Debug-iphoneos/FMDB <-- this
-L[Project Path]/ios/DerivedData/Products/Debug-iphoneos/sqflite <-- this
-F[Project Path]/ios/DerivedData/Products/Debug-iphoneos
-F[Project Path]/ios/Pods/../.symlinks/flutter/ios
-filelist [Project Path]/ios/DerivedData/Build/Intermediates/Runner.build/Debug-iphoneos/ShareExtension.build/Objects-normal/arm64/ShareExtension.LinkFileList
-Xlinker
-rpath
-Xlinker @executable_path/Frameworks
-Xlinker
-rpath
-Xlinker @loader_path/Frameworks
-Xlinker
-rpath
-Xlinker @executable_path/Frameworks
-Xlinker
-rpath
-Xlinker
@executable_path/../../Frameworks
-miphoneos-version-min=12.4
-dead_strip
-Xlinker
-object_path_lto
-Xlinker [Project Path]/ios/DerivedData/Build/Intermediates/Runner.build/Debug-iphoneos/ShareExtension.build/Objects-normal/arm64/ShareExtension_lto.o
-Xlinker
-export_dynamic
-Xlinker
-no_deduplicate
-fembed-bitcode-marker
-fobjc-arc
-fobjc-link-runtime
-fapplication-extension
-ObjC
-lFMDB <-- this
-lsqflite <-- this
-lsqlite3 <-- this
-framework Flutter <-- this
-e _NSExtensionMain
-Xlinker
-dependency_info
-Xlinker [Project Path]/ios/DerivedData/Build/Intermediates/Runner.build/Debug-iphoneos/ShareExtension.build/Objects-normal/arm64/ShareExtension_dependency_info.dat
-o [Project Path]/ios/DerivedData/Products/Debug-iphoneos/ShareExtension.appex/ShareExtension
错误详情:
ld: '[Project_Path]/ios/DerivedData/Products/Debug-iphoneos/FMDB/libFMDB.a(FMDatabase.o)'
does not contain bitcode. You must rebuild it with bitcode enabled (Xcode setting
ENABLE_BITCODE)
所以 search
Target: ShareExtension
的设置与FMDB
,有3个结果:Other Linker Flags
:-l"FMDB"
Header Search Flags
:"${PODS_ROOT}/Headers/Public/FMDB"
Library Search Flags
:"${PODS_CONFIGURATION_BUILD_DIR}/FMDB"
Library Search Flags
是一个像 的路径DerivedData/Products/Debug-iphoneos/FMDB/libFMDB.a
,所以我overwrite
用""
,导致 git diff添加一个新行:LIBRARY_SEARCH_PATHS = "";
运行
Target: ShareExtension
查看结果:这两行命令详情不见了
-L[Project Path]/ios/DerivedData/Products/Debug-iphoneos/FMDB
-L[Project Path]/ios/DerivedData/Products/Debug-iphoneos/sqflite
错误变为(这也意味着上述更改有效):
ld: library not found for -lFMDB
再次搜索
FMDB
,我猜Other Linker Flags
:-l"FMDB"
就像 的错误-lFMDB
,所以我overwrite
用""
(或左"-ObjC"
),结果 git diff 是添加一个新行:OTHER_LDFLAGS = "";
或OTHER_LDFLAGS = "-ObjC";
。运行
Target: ShareExtension
&Target: Container App
现在都可以了。
推荐阅读
- java - 如何更改我的代码以读取所有类型的分隔文件?它目前只读取 csv 文件,然后比较它们
- javascript - 你可以一起使用html模板标签和(ES)模板文字吗?
- google-apps-script - 如何确保 onEdit 函数不会误触发
- java - 如果方法采用原始类型,如何将字符串转换为 setter 函数?
- python - 是否可以将熊猫系列附加到列表中
- angular - 从 Angular 中的表中删除一个或多个选定数据
- java - 如何在 Java 中实现非抢占式优先级调度?
- javascript - 使用 Input 隐藏和显示特定类名的 div 并且仅显示一个类
- sql-server - SQL Server - DB_LINK 问题的 EXEC()
- pandas - 熊猫数据框 - 取消组合连接列