重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
HTML、JS、CSS的Web三件套,时下占据了项目的主要业务部分,原生和JS的交互必不可少,下面总结iOS调试Webview的两种方法:
站在用户的角度思考问题,与客户深入沟通,找到金沙网站设计与金沙网站推广的解决方案,凭借多年的经验,让设计与互联网技术结合,创造个性化、用户体验好的作品,建站类型包括:成都网站制作、网站建设、企业官网、英文网站、手机端网站、网站推广、域名注册、雅安服务器托管、企业邮箱。业务覆盖金沙地区。
1.在手机设置里,找到Safair浏览器,在高级里启用Web检查器;
2.Mac上Safair浏览器,在偏好设置高级选项底部勾选“在菜单栏中显示开发菜单”;
3.手机连接Xcode工程,操作App跳转到JS页面,点击Mac上的Safair浏览器,在开发选项下拉菜单中,找到手机名称对应的html页面即可进入调试器;
( 参考链接 )
1.使用brew安装 ios-webkit-debug-proxy
brew install ios-webkit-debug-proxy
若上面的命令不有效,尝试下面的命令安装
brew uninstall --force libimobiledevice ios-webkit-debug-proxy
brew install --HEAD libimobiledevice ios-webkit-debug-proxy
2.安装成功后,在终端输入下面的命令
ios_webkit_debug_proxy -f chrome-devtools://devtools/bundled/inspector.html
若有问题,报错Could not connect to lockdownd. Exiting.: Permission denied,可输入下面的命令,再次尝试
sudo chmod -R 777 /var/db/lockdown/
3.保持终端命令连接状态,在chrome浏览器中打开 localhost:9221 ,点击真机选项;
4.操作App跳转到JS页面,下面两种方式均可进入调试器:
(1)在Mac的chrome中刷新页面,选中要打开的html连接,右键点击“复制链接地址”,新建标签页,在地址栏粘贴地址,按enter键进入;
(2)直接在谷歌浏览器地址栏中输入 chrome://inspect/#devices ,点击Target下方的inspect进入;
备注:
(1)手机上也要安装谷歌浏览器,否则终端可能无法连接到真机;
(2)复制JS页面地址时,不要用cmd+c快捷键,要右键单击“复制链接地址”,然后新建标签页,粘贴地址打开;
总结:
两种浏览器相比较,虽然Safair调试器打开方便,但容易卡住,有时无法查看JS的变量值,甚至打断点会闪退,建议使用Google Chrome浏览器调试方法。
部分手机升级iOS15之后,真机调试的时候,卡在启动页几分钟没反应,手动运行手机的运用又是正常的,在这种情况下,需要重新设置一下:
1、删除~/Library/Developer/Xcode/iOS DeviceSupport/该目录下所有文件。
2、选择Xcode-Window-Devices and Simulators,鼠标右键点击真机设备,选择Unpair Device;
3、重新启动Xcode。
上述步骤做完如果还是不行,升级Xcode,并重新执行上述操作。
新版系统想要通过连数据线直接调试Safari或者App中的Web页面遇到了困难,在Mac上的Safari “开发” 菜单中无法识别到手机。
经过尝试,还是有方法使得 “开发” 菜单中显示当前连接的手机的。步骤如下:
此时 Mac Safari 的 “开发” 菜单中就已经能识别该手机,并且可以开始调试相关页面了。
此方法需要注意,数据线必须保持连接着手机,否则调试会中断。
在开发中,难免遇到原生嵌套H5页面的需求,那么vConsole调试控制台 对于前端开发的同学就变得尤为重要,但是有时候vConsole控制台并不会在页面显示,遇到这种情况 我们只需项目允许http协议请求。
在info.plist里面增加 App Transport Security Settings 属性,再在此属性内增加 Allow Arbitrary Loads ,并设置值未YES。
此时再重新运行项目就可以看到vConsole调试控制台了
# Safari 断点调试—iOS
iOS 系统内置 WebView 与 Safari 浏览器内核相同,我们可在 OSX 系统中,通过 Safari 浏览器开发者工具,向调试普通网页一样,调试真机中运行的网页。
## 准备工作
1. AppleID,拥有 **App 发布证书**的开发者帐号
2. 能运行 Safari 浏览器的 OSX 系统
3. iOS 系统真机
4. 可调试的 App 包
## 注册设备
在[苹果开发者网站][apple_dev_site]向公司的证书中注册需要调试的 iOS 设备
1. 在[苹果开发者网站][apple_dev_site]登录拥有证书的 AppleID
2. 进入证书管理界面
![开发者网站证书管理]
3. 管理证书中的设备
![开发者网站证书设备管理]
4. 通过 iOS 设备的 UDID 向证书注册该调试设备
![证书中注册设备]
## 开发者模式
iOS 与 OSX 中的 Safari 默认都不会开启开发者模式,需要分别启用
1. 开启 OSX 中 Safari 浏览器的开发者模式
![打开 OSX safari 开发]
2. 在 iOS 设备的设置界面,开启 Safari 浏览器开发功能
## 生成调试包
### 通过 XCode 生成调试包
在Xcode中选择需要打包的项目, Archives 工程项目
导出 ipa 时选择第四个选项 “save for development Deployment”,则导出的 ipa 为调试包
## 调试网页
完成以上步骤(证书注册、开发模式、调试包)后,就可调试 iOS 设备调试中的网页了
OSX 中 Safari 浏览器调试指定页面(手机屏幕变蓝表示是手机当前的 html 页面)
## 基本功能
以上一切的准备,都是为了实现,实时调试 iOS 设备中的网页,操作没有什么不同。
## 断点调试,查看元素模型等
IOS内存优化调试的方法
基础部分
1: 图片内存大小小结
a: 图片:是占用内存的大户,尤其是手机游戏图片资源众多。对图片资源在内存中占用量的计算成为J2ME游戏开发者的经常性工作,CoCoMo来解释一下如何计算图片在内存中的占用量:内存占用量=宽*高*像素字节数,其中像素字节数因机型而异。
例如一张64*64的图片在7210上的内存占用量=64*64*1.5=6144(字节)=6K、在S60上的内存占用量=64*64*2=8192 (字节)=8K。像素字节数因机型而异,例如 7210是4096色机型,也就是说用12位来表示一个像素,所以乘上1.5,而S60是65536色的机型,用16位来表示一个像素,所以乘上2。
b:Xcode中使用instruments 查看图片内存的问题
如果使用的是模拟器那么默认是小屏幕的,所以最大图片是1024 *1024 * 4 = 4 M (1024 是图片的宽高, 4表示的是图片的存储类型为4字节的。也就是 RGBA8888)
如果你加载了图片那么就是使用了4M的内存。如果你需要渲染那么还需要4M的内存。
加载一般都是 **load (NSString *)filename ,
渲染一般都是 Node addChild (Node)
2: 引用计数问题
引用计数增加的情况 : a: alloc 对象会使得对象引用数 +1
b:调用retain (具体细说一些实例如下)
-比如你是cocos2d用户的会看到 addchild 会使子节点的引用计数+1
-CCArray 的addObject 也会使元素的引用计数+1
总结一下就是: 凡是添加到结合中的元素或者子节点不需要再去retain ,只需要在建立的时候调用release
减少的情况 : 调用release 使引用计数 -1(具体细说一些实例如下)
- 集合调用remove/removeChildByTag 等等变形的
- 创建的时候调用autorelease 。注意:如果你的对象是局部对象,而且创建的时候使用的是autorelease,
那么在离开方法的时候如果你没有retain 那么这个对象将被dealloc(引用计数-1了)