打开xcode
文件>新>项目>可可应用
文件>新建>目标>野生动物园扩展名
编译并运行扩展
选择野生动物园。
xcode编译没有错误。
Safari打开几秒钟,然后崩溃。
这是调试窗口的输出。
2018-10-10 15:27:18.039905-0700 Safari [1020:16719] [SQLiteStore] 无法在处获取数据库存储协调锁定 / Users // Library / Safari / Favicon Cache / favicons.db-lock: [35:资源暂时不可用] 2018-10-10 15:27:18.040155-0700 Safari [1020:16719] [SQLiteStore]无法获得对的独占访问权 数据库位于 文件:///Users//Library/Safari/Favicon%20Cache/favicons.db。 2018-10-10 15:27:18.041141-0700 Safari [1020:16719] [SQLiteStore] 无法在处获取数据库存储协调锁定 / Users // Library / Safari / Favicon Cache / favicons.db-lock: [35:资源暂时不可用] 2018-10-10 15:27:18.041226-0700 Safari [1020:16719] [SQLiteStore]无法获得对的独占访问权 数据库位于 文件:///Users//Library/Safari/Favicon%20Cache/favicons.db。 2018-10-10 15:27:18.041331-0700 Safari [1020:16719] [SQLiteStore] 退回到内存店2018-10-10 15:27:18.042877-0700 Safari [1020:16719] [FaviconPersistence]使用内存表示 用于数据库/ Users // Library / Safari / Favicon Cache / favicons.db 2018-10-10 15:27:18.125466-0700 Safari [1020:16771] [SQLiteStore]无法在以下位置获取数据库存储协调锁定 /Users//Library/Caches/com.apple.Safari/TabSnapshots/Metadata.db-lock: [35:资源暂时不可用] 2018-10-10 15:27:18.125660-0700 Safari [1020:16771] [SQLiteStore]无法获得对以下文件的独占访问权 数据库位于 文件:///Users//Library/Caches/com.apple.Safari/TabSnapshots/Metadata.db。 2018-10-10 15:27:18.235987-0700 Safari [1020:16718]群失败 锁映射文件:errno = 35 2018-10-10 15:27:18.236343-0700 Safari [1020:16718]群无法锁定地图文件:errno = 35 2018-10-10 15:27:18.293614-0700 Safari [1020:16718]无法获取 独占访问自动填充更正SQLite存储的位置 AutoFillCorrections.db。无法获得对自动填充的独占访问权 更正SQLite存储在AutoFillCorrections.db中。 2018-10-10 15:27:18.299481-0700 Safari [1020:16718]无法获取独家 访问位于以下位置的自动填充更正SQLite存储 CloudAutoFillCorrections.db。无法获得对以下内容的独占访问权 自动填充更正SQLite存储在CloudAutoFillCorrections.db中。 2018-10-10 15:27:18.300530-0700 Safari [1020:16718]无法获取 独占访问自动填充更正SQLite存储的位置 AutoFillCorrections.db。无法获得对自动填充的独占访问权 更正SQLite存储在AutoFillCorrections.db中。 2018-10-10 15:27:18.304153-0700 Safari [1020:16718]无法获取独家 访问位于以下位置的自动填充更正SQLite存储 CloudAutoFillCorrections.db。无法获得对的独占访问权 自动填充更正SQLite存储在CloudAutoFillCorrections.db中。 2018-10-10 15:27:18.620185-0700 Safari [1020:16763]无法获取 独占访问自动填充更正SQLite存储的位置 AutoFillCorrections.db。无法获得对自动填充的独占访问权 更正SQLite存储在AutoFillCorrections.db中。 2018-10-10 15:27:18.623032-0700 Safari [1020:16773] [CrowdsourcedAutoFill]无法 读取云自动填充更正集,错误:错误 Domain = NSCocoaErrorDomain代码= 260“无法打开文件 因为它不存在。“ 2018-10-10 15:27:18.629453-0700 Safari [1020:16763]无法获得对自动填充的独占访问权 更正SQLite存储在CloudAutoFillCorrections.db中。失败 在以下位置获得对AutoFill更正SQLite存储的专有访问权 CloudAutoFillCorrections.db。 2018-10-10 15:27:18.675086-0700 Safari [1020:16765] [CloudBookmarks]获取远程迁移时出错 状态:错误 Domain = com.apple.SafariBookmarksSync.CloudBookmarksErrorDomain代码= 0 “(空)” 2018-10-10 15:27:18.771588-0700 Safari [1020:16718] [RemotePlistController]无法加载下载的plist: Error Domain = NSCocoaErrorDomain代码= 260“无法打开文件 因为它不存在。“ 2018-10-10 15:27:19.161007-0700 Safari [1020:16773]无法获得对自动填充的独占访问权 更正SQLite存储在AutoFillCorrections.db中。未能获得 独占访问自动填充更正SQLite存储的位置 AutoFillCorrections.db。 2018-10-10 15:27:19.167933-0700 Safari [1020:16773]无法获得对自动填充的独占访问权 更正SQLite存储在CloudAutoFillCorrections.db中。失败 在以下位置获得对AutoFill更正SQLite存储的独占访问权 CloudAutoFillCorrections.db。 2018-10-10 15:27:19.279743-0700 Safari [1020:16763] [RemotePlistController]下载的plist可以 无法加载:错误域= NSCocoaErrorDomain代码= 260“该文件 无法打开,因为它不存在。“ 2018-10-10 15:27:20.064438-0700 Safari [1020:16763]无法获取独家 访问AutoFillCorrections.db中的AutoFill更正SQLite存储。 无法获得对自动填充更正SQLite的独占访问权 存储在AutoFillCorrections.db。 2018-10-10 15:27:20.081337-0700 Safari [1020:16763]无法获得对自动填充的独占访问权 更正SQLite存储在CloudAutoFillCorrections.db中。失败 在以下位置获得对AutoFill更正SQLite存储的独占访问权 CloudAutoFillCorrections.db。 2018-10-10 15:27:20.084003-0700 Safari [1020:16763] [CrowdsourcedAutoFill]既不是本地也不是云 可以打开分类更正数据库程序以 退出代码:0
我尝试重新启动计算机。
我尝试清理项目。
我尝试使用
删除元数据xatter -cr .
我一次尝试了所有三个。
答案 0 :(得分:1)
在第一次运行时,您应该选择您的Cocoa App目标,并且仅在此后运行扩展。请先尝试构建并运行您的应用,然后说是否有帮助。
答案 1 :(得分:1)
如果Xcode调试器未收到来自内容脚本的任何事件,则倾向于终止扩展过程。根据我的观察,这是完全可以的,并且在生产中,您的应用程序不会那么容易死掉。
要避免这种行为,您可能需要将此代码段添加到您的script.js
:
setTimeout(() => safari.extension.dispatchMessage("ping", {}), 1000);
它将使内容脚本每秒向扩展名发送一条名为“ ping”的消息。这应该足以使您的扩展存活。同样,这只是调试真正需要的,您的生产版本不需要此行可靠地工作。
请记住,默认情况下,内容脚本仅注入* .webkit.org页面。这由扩展程序的SFSafariToolbarItem
文件中Info.plist
属性的值确定。为了进行测试,您可能希望在所有网站上启用扩展程序,如下所示:
<key>SFSafariWebsiteAccess</key>
<dict>
<key>Level</key>
<string>All</string>
</dict>
请注意,内容脚本不会注入到空白标签中,因此请确保加载一些远程页面。