入门问题第一问:手机和操作系统不同的情况下 更改锁屏界面问题


#1

手机型号 6plus
系统 10.0.2
问题描述:按照书中例子,开发了一个更改屏幕锁的界面,编译安装到手机上没有效果。看了论坛上,有朋友也发过问题,但是没有回复。我在重新描述下问题。希望过来的朋友,能帮忙解决下,要不不知道下边的路咋走了!
自己也想了下,因为书中的手机和操作系统,和现在我用的不一样,但是我还是希望知道,就我现在用的手机型号和系统版本,应该怎么去修改呢。
以下是我的代码截图:
makefile:


红色部分为我自己修改的内容,和书上不一样。但是别的地方就不知道怎么修改了。
tweak.xm

实在抱歉问了一些比较低级的问题。


#2

看看书上的class-dump部分,把SpringBoard给class-dump了,我再告诉你下一步


#3

好吧,其实我本来想着,现出一个效果,我好自己安慰下自己,可以学下去,既然作者留作业,我走起!:sweat_smile:


#5

class-dump完成了,其中有几个疑问:
1,按道理/* */ 这种符号中间的代码都是被注释的,为什么Tweak.xm中的代码直接包含在符号中间呢。可能是语法就是这样,只是有点好奇。
2,我提问题前,不是按照make package install,这种安装的,我是通过i4,把生成的deb文件,拷贝到手机的/var/root/Media/Cydia/AutoInstall/目录下,然后重启手机,重新越狱,不知道这种操作是不是不正确的。
3,还有一个疑问就是,书中,工具篇中,有一个地方提到链接Mach-0对象。这个地方,我没有太理解,不知道是不是影响了我后边做那个修改日期demo呢。


#6

出现一个效果那简单了,你在SpringBoard启动完成后弹个UIAlertView就好了


#7

写了启动后弹出框方法,修改了一点内容,因为我用cycript执行弹出框例子的时候message:self,会报错:「cy# alertView = [[UIAlertView alloc] initWithTitle:@“fuck” message:nil delegate:self cancelButtonTitl:@“OK” otherButtonTitles:nil]
throw new ReferenceError(“Can’t find variable: self”)」

我用make package install 执行以后,SpringBoard重启,但是并没有弹出效果框。会不会是因为我手机SpringBoard重启的时候会提示了一个sim卡未安装,影响了本身的弹窗呢!

这里有个问题,就是,cycript执行代码出错,会直接提示错误记录,安装好的工程的错误日志应该在哪里看呢(可能我还没看到那个地方,事先问问)?


#8

看着有点着急,代码哪来的呢?都被你注释掉了,肯定没有效果啊!
「cy# alertView = [[UIAlertView alloc] initWithTitle:@“fuck” message:nil delegate:self cancelButtonTitl:@“OK” otherButtonTitles:nil]
throw new ReferenceError(“Can’t find variable: self”)」 你google翻译一下就明白了

alertView = [[UIAlertView alloc] initWithTitle:@“TITLE” message:@“MESSAGE” delegate:nil cancelButtonTitle:@“OK” otherButtonTitles:nil]; [alertView show]; 这样写


#9

能不能留个联系方式,我在给你详细的描述下。:pray:


#10

把delegate改成nil应该就可以了

另外,你确认你的dylib加载了吗?


#11

抱歉,前几天有事情,没上线。
我在执行make package install 的时候打开系统日志,打印了下日志。因为刚学,我也不知道这个日志时表示算执行了。日志截图:


#12

第7行,dylib已经加载了


#13

嗯,但是没有啥效果,不知道是不是方法变了


#14

你代码怎么写的,贴出来看看?用markdown贴,别粘图了


#15

iosrprojecttest.zip (24.6 KB)
发个我的工程的了,麻烦您看看。


#16
    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"哈啊和!" 
        message:@"YOU"VE HACKED SPRINGBOARD!" 
        delegate:nil 
        cancelButtonTitle:@"YES" 
        otherButtonTitles:nil];
    [alert show];
    [alert release];

YOU后面的引号没转义所以你这个连语法都不对。编译器都没法理解你的代码怎么会有效果


#17

另外Makefile里路径为啥你要改成绝对路径/User/Paul/ 错!
然后你这个因为上面我说到的原因Theos预处理器直接无视了这个hook,所以编译出来的dylib是空的。你拉进hopper看下就知道了


#18

include /Users/paul/opt/theos/makefiles/common.mk
这个写绝对路径,主要是应为我自己mac上边theos就安装到了这个地方。不写绝对路径编译的时候会出错。所以就写了绝对路径。写了绝对路径编译就过了。
这个文件在手机上执行的时候,也需要有common.mk这个文件才可以吗?


#19

不需要

我上面回复了你这个问题是代码问题


#20

很感谢您回答问题,问题解决,重新修改了环境,修改了代码问题解决。不是手机或者系统问题。
因为theos有更新,mac也有升级,所以主要问题出在环境配置上!