Theos(七):常见问题

2023-11-17

Theos 故障排除(Theos/Troubleshooting)

在跳转到主流论坛(StackOverflow、Reddit、IRC channels)提问之前,首先请仔细阅读您的错误信息,尝试寻找可能覆盖您正在遇到的问题的通用错误。在使用上述论坛时,首先查找之前是否有人问过您遇到的问题;很有可能,您遇到的问题之前已经有人问过了!如果您已经用尽了您查询问题的所有方式,超出了谷歌特定查询的第十页,请仔细思考您遇到的问题并问自己:你明白你问的是什么吗?如果您明白您所要问的问题,则请您在上述论坛中发布您的问题

也可以考虑阅读这些文章:

  1. What have you tried?
  2. Solving your skillset problems

空的 $THEOS 环境变量或者损坏的符号链接(Empty $THEOS or corrupt symlink)

如果您收到此错误信息:

# N 代表行号
Makefile:N: theos/makefiles/common.mk: Not a directory
Makefile:N: /tweak.mk: No such file or directory

要么 $THEOS 环境变量为空,要么项目中 Theos 的符号链接指向错误的路径(即没有指向 Theos 的存储路径)

如果是 $THEOS 环境变量为空,则请运行:

# 记住在每个终端会话上都要导出此环境变量,具体方法取决于您使用的终端
export THEOS="当前平台 Theos 的存储路径"

如果是项目中 Theos 的符号链接指向了错误的路径,则在每个 Theos 符号链接损坏的目录中运行:

rm theos; ln -s $THEOS

缺少 SDK(Missing SDK)

如果您收到此错误信息:

# PPP 代表您机器当前工作的平台
".../theos/makefiles/targets/PPP/iphone.mk:21: *** first argument to 'word' function must be greater than 0. stop."

这意味着您在 $THEOS/sdks 目录中没有相应的 SDK。请参阅 此小节

SDK 体积过小(Small SDK)

如果您收到此错误信息:

# LLL 代表 SDK 文件的体积,在大多数情况下可能为 0
# X Y 代表 SDK 的版本号
# ZZZ 代表 SDK 文件的路径
# AAA 代表 CPU 架构的后缀(v6、v7、v7s、64)
ld: file too small (length=LLL) file. '.../theos/sdks/iPhoneOSX.Y.sdk/usr/ZZZ' for architecture armAAA.

这可能意味着您的 SDK 在某些方面存在问题。一个常见的错误是,在 iOS 设备上使用 Theos 时,却在 PC 上提取 SDK,然后再复制 SDK 文件到 iOS 设备中。这通常会引发提取过程中的各种错误,从而导致无法编译。相反地,应该以压缩包的形式将 SDK 复制到 iOS 设备中,并在 iOS 设备中进行提取。请不要担心这样做会花费很多时间,因为这样做会保留 SDK 文件的所有属性

默认设置(Default settings)

如果您收到此错误信息:

.../theos/makefiles/targets/Darwin-arm64/iphone.mk:43: Targeting iOS 4.0 and higher is not supported with iphone-gcc. Forcing clang.

这意味着您还没有正确地设置 TARGET 环境变量。请参阅 Theos#Theos variables

缺少 Substrate 头文件(Missing Substrate header)

如果您收到此错误信息:

# FFF 代表文件路径
# LLL 代表行号
FFF:LLL:10: fatal error: 'substrate.h' file not found
#include <substrate.h>
         ^
1 error generated.

这意味着您缺少 Substrate 的头文件(请参阅 step #6 in setting up Theos for OS X or Linux)。要解决此问题,您需要复制已越狱 iOS 设备中的 /Library/Frameworks/CydiaSubstrate.framework/Headers/CydiaSubstrate.h 到您本地 macOS 的 $THEOS/include 目录,并将其重命名为 substrate.h

缺少 Substrate 符号(Missing Substrate symbols)

如果您收到此错误信息:

# FFF 代表文件路径
# LLL 代表行号
# CCC 代表列号
FFF:LLL:CCC: error: implicit declaration of function 'MSFindSymbol' is invalid in C99 [-Werror,-Wimplicit-function-declaration]

这意味着您 Substrate 的头文件可能是旧的(请参阅 step #6 in setting up Theos for OS X or Linux)。要解决此问题,您需要复制已越狱 iOS 设备中的 /Library/Frameworks/CydiaSubstrate.framework/Headers/CydiaSubstrate.h 到您本地 macOS 的 $THEOS/include 目录,并将其重命名为 substrate.h

缺少 Substrate 动态库(Missing Substrate library)

如果您收到此错误信息:

Bootstrapping CydiaSubstrate...
Compiling iPhoneOS CydiaSubstrate stub... default target? failed, what?
cp: cannot stat ‘_out/*’: No such file or directory
cp: cannot stat ‘libsubstrate.dylib’: No such file or directory
# XXX 和 YYY 代表 CPU 架构的后缀(v6、v7、v7s、64)
ld: warning: ignoring file .../theos/lib/libsubstrate.dylib, file was built for armXXX which is not the architecture being linked (armYYY): .../theos/lib/libsubstrate.dylib

这意味着您缺少要链接的 Substrate 动态库(请参阅 step #6 in setting up Theos for OS X or Linux),或者您拥有的是旧版本的 Substrate 动态库。无论是哪种情况,从已越狱 iOS 设备中的 /Library/Frameworks/CydiaSubstrate.framework/CydiaSubstrate 获取该动态库文件的最新版本,并将其复制到您本地 macOS 的 $THEOS/lib 目录,然后将其重命名为 libsubstrate.dylib

  • 有关如何解决此问题的更多详细信息(More detail about how to fix this):

    macOS 和 Linux 的用户可以使用以下命令复制文件(使用 scp program),其中 DEVICE_IP 应该替换为安装了 Substrate 动态库的已越狱 iOS 设备的 IP 地址:

    scp -P PORT root@[DEVICE_IP]:/Library/Frameworks/CydiaSubstrate.framework/CydiaSubstrate $THEOS/lib/libsubstrate.dylib
    

    Windows 的用户可以使用 WinSCP 连接到已越狱 iOS 设备的 IP 地址来定位 Substrate 动态库文件,并将其复制到 Windows 的 Theos 安装中

    iOS 的用户通常没有这个问题,因为他们通常已经安装了 Substrate 动态库。然而,他们可能会有一个过时的 Substrate 动态库版本,并且需要更新它

架构(部分)不兼容 (Architecture (partial) incompatibility)

如果您在尝试运行 Theos 的 NIC(New Instance Creator)时,收到此错误信息:

Illegal instruction: 4

这可能意味着您使用的工具版本适用于旧设备,但不适用于新设备。请在此处阅读有关该问题的更多信息

它通常会影响 perlrsync(从默认源安装),因此要解决此问题,请使用 SSHMobileTerminal 在设备上以 root 身份运行这些命令:

sed -i'' 's/\x00\x30\x93\xe4/\x00\x30\x93\xe5/g;s/\x00\x30\xd3\xe4/\x00\x30\xd3\xe5/g;' /usr/bin/perl; ldid -s /usr/bin/perl
sed -i'' 's/\x00\x30\x93\xe4/\x00\x30\x93\xe5/g;s/\x00\x30\xd3\xe4/\x00\x30\xd3\xe5/g;' /usr/bin/rsync; ldid -s /usr/bin/rsync

项目路径中存在空格(Spaces in Path)

虽然即使项目的路径包含空格,通常也能构建项目;但是在 make package 时会失败。请确保您的项目路径中没有包含空格

未定义的平台(Undefined platform)

如果您收到此错误信息:

theos/makefiles/common.mk:103: *** You did not specify a target, and the "" platform does not define a default target. Stop.
theos/makefiles/common.mk:115: *** The "iphone" target is not supported on the "" platform. Stop.

这可能意味着您使用的是 Theos 不支持的平台。如果您在 64 位的设备上使用 iOS 作为平台,则您可能会得到这个错误。要解决此问题,您可以执行以下命令:

sudo ln -s $THEOS/makefiles/platform/Darwin-arm{,64}.mk
sudo ln -s $THEOS/makefiles/targets/Darwin-arm{,64}

未定义的符号(Undefined symbols)

如果您收到此错误信息:

Undefined symbols for architecture armXXX:
  "_OBJC_CLASS_$_SomeClass", referenced from:
...
ld: symbol(s) not found for architecture armXXX
...

这可能意味着您正在尝试直接使用 SomeClass 类。这通常发生在使用(二进制文件中存在的但是无法在您的 Tweak 编译中链接的)私有类时。要解决这个问题,必须在运行时动态地获取类。至少有 3 种方法可以做到:

%c(SomeClass)
objc_getClass("SomeClass")
NSClassFromString(@"SomeClass")

所以,在使用 SomeClass 类的属性或者方法时:

// 不应该使用:
[SomeClass methodOrProperty]

// 而应该使用:
[%c(SomeClass) methodOrProperty] 
[objc_getClass("SomeClass") methodOrProperty] 
[NSClassFromString(@"SomeClass") methodOrProperty]

如果上述问题中的 SomeClass 类存在于 SDK 的公有框架或者私有框架中,但是您项目 control 文件中的 XXX_FRAMEWORKS 或者 XXX_PRIVATE_FRAMEWORKS 列表中却缺少该公有框架或者私有框架

或者,收到此错误信息:

ld: warning: ignoring file /.../theos/lib/libsubstrate.dylib, missing required architecture armXXX in file /.../theos/lib/libsubstrate.dylib (2 slices)
Undefined symbols for architecture armXXX:
...
ld: symbol(s) not found for architecture armXXX

这意味着您正在使用的 Substrate 动态库不包含您正在链接的 CPU 架构。要解决此问题,您需要从已越狱 iOS 设备中的 /Library/Frameworks/CydiaSubstrate.framework/CydiaSubstrate 获取 Substrate 动态库文件的最新版本,将其复制到您本地 macOS 的 $THEOS/lib 目录,然后将其重命名为 libsubstrate.dylib。有关如何修复此问题的详细信息,请参见 #Missing Substrate library 中建议的命令

不兼容的软件包压缩类型(Incompatible package compression)

在安装使用 Theos 创建的软件包时,您可能会收到此错误信息:

dpkg-deb: file `package.deb' contains ununderstood data member data.tar.xz, giving up
dpkg: error processing package.deb (--install):
 subprocess dpkg-deb --fsys-tarfile returned error exit status 2
Errors were encountered while processing:
 package.deb

这是因为 dpkg-deb 现在使用 xz 来压缩软件包,但是 Telesphoreo(一个 Cydia 源)的旧版 dpkg 不支持它。您可以使用带有命令行参数的 dpkg-deb,强制它使用 lzma 压缩:打开 $THEOS/makefiles/package/deb.mk,找到 $(FAKEROOT) -r dpkg-deb,然后在 dpkg-deb 之后添加 -Zlzma。它应该看起来像这样:

$(FAKEROOT) -r dpkg-deb -Zlzma -b ...
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Theos(七):常见问题 的相关文章

  • MFS高可用(pcs集群管理与fence自动跳电重启)

    server1 master server4 高可用 serever 2 3 chunk 真机 client 具体查看上片文章 server1 yum install moosefs cgi 3 0 103 1 rhsystemd x86
  • Unity3d版数字地球、谷歌地球(google earth)

    说明 这个不是GIS软件 是一个带地形的三维地球 可在线加载全球地形 也可离线运行 运行流畅无卡顿 占用内存小 最大等级可达到地图20级 本数字地球全部由作者自由开发完成 未使用任何第三方插件 拥有完全知识产权 视频Unity3d版数字地球
  • GPU计算能力远超CPU!NVIDIA Tesla技术深入解析

    CPU和操作系统是现代PC的动力提供者 并为用户解决了数值计算这个有时困难到令人无法相信的问题 在你使用电脑 一边听音乐 浏览网站 一边阅读电子邮件的同时 操作系统会跟踪记录你的所有活动 并与后台交流信息 将你使用到的信息组织起来 尽管CP
  • [2019计算机视觉]——贪心学院 学习笔记 【实验】2.2 使用逻辑函数 对垃圾短信的分类 基于数据集SMSSpamCollection

    文章目录 1 数据集介绍 1 SMSSpamCollection数据集 2 数据集的获取 2 我的实验 1 读入数据集 2 预处理 3 训练模型 4 进行测试 1 数据集介绍 1 SMSSpamCollection数据集 英文详细介绍看这里
  • Vision Transformer(vit)原理分析以及特征可视化

    目录 Vit简介 Vit model结构图 vit输入处理 图像分块 class token与position的添加 特征提取 vit代码 Vit简介 Vision Transformer ViT 是一种基于Transformer架构的深度
  • 推荐几个值得关注的技术公众号(年度精选)

    2017 马上就要过去了 2018 来了 工作 生活节奏超快的今天 想要不断提升自我 碎片化阅读学习是你最佳的选择 如果你有一颗学习的心 那这些学习型的公众号 绝对会让你受益匪浅 我们为你精选了技术领域几个精品微信订阅号 涵盖了时下最热门的
  • ansible常见错误处理

    1 failed to open a SFTP connection EOF during negotiation 修改sshd config中配置 Subsystem sftp internal sftp 2 Error ansible
  • 一.用matlab生成想要的分布数据——均匀分布

    给大家讲讲怎么用matlab生成想要分布的随机数吧 1 均匀分布 2 正态分布 3 对数正态分布 4 gumbel分布 5 weibull分布 6 指数分布 7 Raili分布 1 均匀分布 matlab的rand指令可以帮助我们生成0 1
  • C++ 把引用作为返回值

    C 把引用作为返回值 C 引用 C 引用 通过使用引用来替代指针 会使 C 程序更容易阅读和维护 C 函数可以返回一个引用 方式与返回一个指针类似 当函数返回一个引用时 则返回一个指向返回值的隐式指针 这样 函数就可以放在赋值语句的左边 例
  • Deep Java Library(五)DJLServing java client demo

    1 工具类HttpUtils package com lihao client import java io IOException import java net URI import java net URLEncoder import
  • python,xlsxwriter.workbook(‘demo.xlsx‘),module‘ object is not callable

    使用python3 9 创建Excel表格时 出现错误 Traceback most recent call last File C pycharm project files pythonProject py excel py line
  • vue自定义指令之手写v-loading指令

    先看效果 自定义加载效果的loading指令 为什么不创建一个组件来加载loading效果 麻烦你得先引入组件 注册挂载组件 然后在通过v if在空子显示隐藏 为什么要用自定义loading指令 由于项目中很多地方需要用到 在哪个元素或者组
  • 2022年第十四届电工杯赛题分析

    作为2022年上半年最后一场建模比赛的电工杯 为期72个小时 在众多建模比赛中 电工杯属于难度大 比赛时间短 知名度大的比赛 在我个人看来 电工杯可以作为美赛国赛之下第二梯队建模比赛里的头号比赛 因此 为了更好选题比赛 本次比赛我将在本篇文
  • Android 之 PopupWindow(悬浮框) 的基本使用

    本节引言 本节给大家带来的是最后一个用于显示信息的UI控件 PopupWindow 悬浮框 如果你想知道 他长什么样子 你可以打开你手机的QQ 长按列表中的某项 这个时候后弹出一个黑色的小 对话框 这种就是PopupWindow了 和Ale
  • Latex安装以及作业笔记

    Latex安装 参考 怎么安装LaTex 半句多的文章 知乎 https zhuanlan zhihu com p 56982388 作业 1 文档相关说明 2 公式写法 https blog csdn net weixin 3089203
  • sudo: unable to resolve host [hostname](已解决)

    在阿里云服务器上安装Java时报错 于是修改文件 etc hosts解决 PS 此时sudo依然可以继续运行 etc hosts原文件如下 127 0 0 1 localhost The following lines are desira

随机推荐

  • MySQL数据库——DDL基本操作

    文章目录 前言 数据库操作 查看已存在的所有数据库 创建数据库 选中数据库 删除数据库 修改数据库编码 表操作 创建表 显示创建表时的语句 显示表结构 删除表 修改表的结构 增加列 修改列 删除列 修改表名 前言 DDL 操作是与数据库结构
  • Makefile执行报错——CONFIG_X86_X32 enabled but no binutils support

    错误描述 在学习Linux驱动的时候 编写完一个demo 执行make的时候 报了如标题所示的错误 使用的makefile如下 KERNELDIR lib modules uname r build hello world objs hel
  • ESP8266_MQTT协议

    1 了解下MQTT协议 虽然上一篇用起来了MQTT 但是并不十分了解 基本就局限于 发布主题是发送数据 订阅主题是接收数据 今天就再好好了解一下吧 分享下网页版的 MQTT协议中文版 链接 Introduction MQTT协议中文版 1
  • HTTP 字体跨域问题

    一 背景介绍 最近在做公用菜单时 由于除了提供给子应用系统html代码外还需要提供样式 脚本 样式中涉及到了字体 跨域的情况下 样式脚本都可以正常访问 但是字体访问就会出现跨域问题了 二 问题描述 问 什么是字体跨域 答 就是你所引用css
  • unity和VS2019联调问题解决

    以前使用VS2015和17的时候联调的时候是可以附加到unity进行联调的 今天用的2019发现不可以了 研究了一下是少装了一个插件 装上插件就解决了 过程如下 当前使用VS版本2019企业版 如图 更多内容请关注微信公众号 unity风雨
  • 《Android面试题及解析》分享,一文带你搞懂Android多线程Handler

    网易游戏 严格来说我投的是网易互娱 区别于雷火 盘古 后面再说更多区别 走的内推 网易游戏以其笔试难度大著名 这次也不例外 所有的内推都要求参加统一笔试 我记得笔试有几场 我是在第一场 内推的岗位是网易游戏最核心的 游戏研发工程师 地点是杭
  • Call to localhost/127.0.0.1:9000 failed on connection exception错误。

    解决方案 1 首先查看hdfs site xml配置文件 如下面所示
  • nginx+tomcat实现代理访问java web项目

    最近由于部署考试系统 遇到一系列问题 由于Ubuntu上软件安装的混乱 参考的博客过于坑爹 所以环境配置的乱七八糟 在一个午夜 把一根烟抽的透透的 然后开始重装了一次系统 使用的Ubuntu 16 04LTS 由于时间原因一直没有吧我的这个
  • 用acme.sh申请免费ssl证书-let‘s encrypt

    这个是申请泛域名证书 移动端和电脑端直接用这个就可以了 不需要分开申请 安装脚本 curl https get acme sh sh 进入 cd acme sh 看下目录有什么 root csdn ls adl acme sh drwx 8
  • CO_XT_COMPONENTS_DELETE 删除工单组件

    REPORT zdtest6 判断是否有原始组件 如有全删 DATA ls return TYPE coxt bapireturn DATA lt resbkeys TYPE coxt t resbdel lt return TYPE ST
  • RabbitMQ--扩展--03--日志文件,故障恢复,集群迁移,集群监控

    RabbitMQ 扩展 03 日志文件 故障恢复 集群迁移 集群监控 1 RabbitMQ日志查看 如果在使用RabbitMQ 的过程中出现了异常情况 通过查看RabbitMQ 的服务日志可以让你在处理异常的过程中事半功倍 RabbitMQ
  • python基础—字符串操作

    1 字符串 Python内置了一系列的数据类型 其中最主要的内置类型是数值类型 文本序列 字符串 类型 序列 列表 元组和range 类型 集合类型 映射 字典 类型 本章在介绍字符串 列表 元组和range类型共有的通用序列操作方法的基础
  • 常用的相似度计算方法原理及实现

    在数据分析和数据挖掘以及搜索引擎中 我们经常需要知道个体间差异的大小 进而评价个体的相似性和类别 常见的比如数据分析中比如相关分析 数据挖掘中的分类聚类 K Means等 算法 搜索引擎进行物品推荐时 相似度就是比较两个事物的相似性 一般通
  • 笔记本计算机bios设置,联想笔记本BIOS设置详解

    大部分用户朋友遇到系统损坏时 不得不选择重装系统这样简单粗暴快的方式来解决 然而在准备重装时却遇到BIOS设置难题 不得不求助网络上各路大神 却还是没能真正得到帮助 下面快启动小编为大家分享联想笔记本BIOS设置详解 希望能为大家排忧解难
  • 一些杂七杂八的概率统计基础(变分推断所需)

    在开始之前要了解以下这个统计学中背景知识 贝叶斯学派与频率学派 极大似然估计学派 最大的区别就是 贝叶斯学派认为参数 不是一个确定值 而是一个随机变量 且随机变量一定是服从某个分布的 在概率统计中 随机变量 随机数量 变量中的值是随机现象的
  • 莫烦强化学习视频笔记:第五节 5.2 Policy Gradients 算法更新和思维决策

    目录 1 要点 2 算法流程 3 算法代码形式 3 1 算法更新 3 2 思维决策 3 2 1 初始化 3 2 2 建立 Policy 神经网络 3 2 3 选行为 3 2 4 存储回合 3 2 5 学习 1 要点 Policy gradi
  • linux vim/vi 跳转到最后一行 跳转快捷键

    vim vi操作 跳到文本的最后一行 按 G 即 shift g 跳到文本的第一行的第一个字符 按两次 g 跳到当前行的最后一个字符 在当前行按 键 即 shift 4 跳到当前行的第一个字符 在当前行按 0
  • 《数字图像处理》笔记

    目录 第1章 绪论 1 1 图像概述 1 1 1 基本概念和术语 1 1 2 不同波段的图像示例 1 1 3 不同类型的图像示例 1 2 图像工程概述 1 2 1 图像工程的三个层次 1 3 图像表示和显示 1 3 1图像和像素的表示 1
  • Vue使用babel-polyfill兼容IE解决白屏及语法报错

    解决vue elementUI项目使用webpack打包上线后 服务器环境下IE报语法错误及白屏问题 在最近的项目中 在使用webpack打包后发布 有用户反馈使用IE浏览器访问会白屏 这就不能忍受了 经过排查发现 发生这个错误应该是有文件
  • Theos(七):常见问题

    目录 Theos 故障排除 Theos Troubleshooting 空的 THEOS 环境变量或者损坏的符号链接 Empty THEOS or corrupt symlink 缺少 SDK Missing SDK SDK 体积过小 Sm