app包太大如何压缩 ios
2016-06-27 11:05:44 u013676544 阅读数 185
iPhone指令集
 
本文所讲的内容都是围绕iPhone的CPU指令集(想了解ARM指令集的同学请点击这里),现在先说说不同型号的iPhone都使用的是什么指令集:
  1. ARMv8/ARM64 = iPhone 5s, iPad Air, Retina iPad Mini 
  2. ARMv7s = iPhone 5, iPhone 5c, iPad 4 
  3. ARMv7  = iPhone 3GS, iPhone 4, iPhone 4S, iPod 3G/4G/5G, iPad, iPad 2, iPad 3, iPad Mini   
  4. ARMv6  = iPhone, iPhone 3G, iPod 1G/2G 
 
设置你想支持的指令集
 
Xcode中关于生成二进制包指令集相关的设置项有以下三个:
 
Architectures
 
官方文档说明:
  1. Space-separated list of identifiers. Specifies the architectures (ABIs, processor models) to which the binary is targeted. When this build setting specifies more than one architecture, the generated binary may contain object code for each of the specified architectures. 
 
该编译选项指定了工程将被编译成支持哪些指令集,支持指令集是通过编译生成对应的二进制数据包实现的,如果支持的指令集数目有多个,就会编译出包含多个指令集代码的数据包,造成最终编译的包很大。
 
Valid Architectures
 
官方文档说明:
  1. Space-separated list of identifiers. Specifies the architectures for which the binary may be built. During the build, this list is intersected with the value of ARCHS build setting; the resulting list specifies the architectures the binary can run on. If the resulting architecture list is empty, the target generates no binary. 
 
该编译项指定可能支持的指令集,该列表和Architectures列表的交集,将是Xcode最终生成二进制包所支持的指令集
 
比如,你的Valid Architectures设置的支持arm指令集版本有:armv7/armv7s/arm64,对应的Architectures设置的支持arm指令集版本有:armv7s,这时Xcode只会生成一个armv7s指令集的二进制包。
 
Build Active Architecture Only
 
官方文档说明:
  1. Boolean value. Specifies whether the product includes only object code for the native architecture. 
 
该编译项用于设置是否只编译当前使用的设备对应的arm指令集。
 
当该选项设置成YES时,你连上一个armv7指令集的设备,就算你的Valid Architectures和Architectures都设置成armv7/armv7s/arm64,还是依然只会生成一个armv7指令集的二进制包。
 
当然该选项起作用的前提是你的Xcode必须成功连接了调试设备。如果你没有任何活跃设备,即Xcode没有成功连接调试设备,就算该设置项设置成YES依然还会编译Valid Architectures和Architectures指定的二进制包。
 
通常情况下,该编译选项在Debug模式都设成YES,Release模式都设成NO。
 
说明
 
指令集都是可以向下兼容的
 
比如,你的设备是armv7s指令集,那么它也可以兼容运行比armv7s版本低的指令集:armv7、armv6
 
xcode对armv6指令集的支持
 
Xcode4.5起不再支持armv6
 
 
如何选择支持的指令集
 
如果你的软件对安装包大小非常敏感,你可以减少安装包中的指令集数据包,而且这能达到立竿见影的效果。
 
我们的项目之前支持的指令集是armv7/armv7s,后来改成只支持armv7后,比原来小了10MB左右。目前AppStore上的一些知名应用,比如百度地图、腾讯地图通过反汇编工具查看后,也都只支持armv7指令集。
 
根据向下兼容原则,armv7指令集的应用是可以正常在支持armv7s/arm64指令集的机器上运行的。
 
不过对于armv7s/arm64指令集设备来说,使用运行armv7应用是会有一定的性能损失,不过这种损失有多大缺乏权威统计数据,个人认为是不会影响用户体验的。

2015-12-05 19:45:30 u011344883 阅读数 246
iPhone指令集
 
本文所讲的内容都是围绕iPhone的CPU指令集(想了解ARM指令集的同学请点击这里),现在先说说不同型号的iPhone都使用的是什么指令集:
  1. ARMv8/ARM64 = iPhone 5s, iPad Air, Retina iPad Mini 
  2. ARMv7s = iPhone 5, iPhone 5c, iPad 4 
  3. ARMv7  = iPhone 3GS, iPhone 4, iPhone 4S, iPod 3G/4G/5G, iPad, iPad 2, iPad 3, iPad Mini   
  4. ARMv6  = iPhone, iPhone 3G, iPod 1G/2G 
 
设置你想支持的指令集
 
Xcode中关于生成二进制包指令集相关的设置项有以下三个:
 
Architectures
 
官方文档说明:
  1. Space-separated list of identifiers. Specifies the architectures (ABIs, processor models) to which the binary is targeted. When this build setting specifies more than one architecture, the generated binary may contain object code for each of the specified architectures. 
 
该编译选项指定了工程将被编译成支持哪些指令集,支持指令集是通过编译生成对应的二进制数据包实现的,如果支持的指令集数目有多个,就会编译出包含多个指令集代码的数据包,造成最终编译的包很大。
 
Valid Architectures
 
官方文档说明:
  1. Space-separated list of identifiers. Specifies the architectures for which the binary may be built. During the build, this list is intersected with the value of ARCHS build setting; the resulting list specifies the architectures the binary can run on. If the resulting architecture list is empty, the target generates no binary. 
 
该编译项指定可能支持的指令集,该列表和Architectures列表的交集,将是Xcode最终生成二进制包所支持的指令集
 
比如,你的Valid Architectures设置的支持arm指令集版本有:armv7/armv7s/arm64,对应的Architectures设置的支持arm指令集版本有:armv7s,这时Xcode只会生成一个armv7s指令集的二进制包。
 
Build Active Architecture Only
 
官方文档说明:
  1. Boolean value. Specifies whether the product includes only object code for the native architecture. 
 
该编译项用于设置是否只编译当前使用的设备对应的arm指令集。
 
当该选项设置成YES时,你连上一个armv7指令集的设备,就算你的Valid Architectures和Architectures都设置成armv7/armv7s/arm64,还是依然只会生成一个armv7指令集的二进制包。
 
当然该选项起作用的前提是你的Xcode必须成功连接了调试设备。如果你没有任何活跃设备,即Xcode没有成功连接调试设备,就算该设置项设置成YES依然还会编译Valid Architectures和Architectures指定的二进制包。
 
通常情况下,该编译选项在Debug模式都设成YES,Release模式都设成NO。
 
说明
 
指令集都是可以向下兼容的
 
比如,你的设备是armv7s指令集,那么它也可以兼容运行比armv7s版本低的指令集:armv7、armv6
 
xcode对armv6指令集的支持
 
Xcode4.5起不再支持armv6
 
 
如何选择支持的指令集
 
如果你的软件对安装包大小非常敏感,你可以减少安装包中的指令集数据包,而且这能达到立竿见影的效果。
 
我们的项目之前支持的指令集是armv7/armv7s,后来改成只支持armv7后,比原来小了10MB左右。目前AppStore上的一些知名应用,比如百度地图、腾讯地图通过反汇编工具查看后,也都只支持armv7指令集。
 
根据向下兼容原则,armv7指令集的应用是可以正常在支持armv7s/arm64指令集的机器上运行的。
 
不过对于armv7s/arm64指令集设备来说,使用运行armv7应用是会有一定的性能损失,不过这种损失有多大缺乏权威统计数据,个人认为是不会影响用户体验的。
2019-04-23 11:13:00 weixin_37221852 阅读数 108

fiddler 配置

打开Fiddler, Tools->Options 。
切换HTTPS,选中"Decrpt HTTPS traffic", Fiddler就可以截获HTTPS请求
在这里插入图片描述
切换成Connecttions ,选中"Allow remote computers to connect". 是允许别的机器把HTTP/HTTPS请求发送到Fiddler上来,这里设置完成后,需要将fiddler重启一下

在这里插入图片描述

配置手机

  • 手机跟电脑连在同一个wifi
  • 配置wifi代理,服务器ip地址填写为电脑的ip,端口填写为fiddler的监听端口
    在这里插入图片描述
    在这里插入图片描述
    配置如下:
    在这里插入图片描述
  • 手机打开浏览器,访问 电脑ip:fiddler配置的端口:
    如: 172.16.6.251:9999,如果出现下图界面,证明连接成功
    在这里插入图片描述
    点击上图所示:you can dowunload the FiddlerRoot certficate。
    下载fiddler证书。
    下载后打开手机设置-通用-描述文件与设备管理,进行证书安装。安装后如下:
    在这里插入图片描述

证书安装后,打开设置-通用-关于本机-证书信任设置,信任刚刚安装的证书。(这步非常重要
在这里插入图片描述

完成

现在你可以在电脑上用fiddler抓取ios上的请求了。

2019-04-15 14:25:00 weixin_34179762 阅读数 3

简单来说吧,我们有时需要一些图片资源需要获取app到电脑上,我们解压ipa包,在解压car文件。

iTunes 方式

最原始的方式,apple 官方软件iTunes,我们之前可以直接在itunes之中有个应用的选项,但是在itunes的版本升级到12.7,之后这个版本就不在有商店的选项,我们此时假如你的电脑上有12.6的itunes,那么你可以直接找到应用直接下载啦。
假如你是mac,那么你将itunes升级之后你的应用选项就不存在了,我也是将itunes 升级到12.8了,没办法只能按照网上的办法去将itunes降级,希望降级到12.6 的版本,我们会遇到以下几个问题:

1、itunes 不能直接删除。
2、使用命令行删除你会发现需要修改Mac系统对本身自带的应用的保护,然后删除itunes。
3、删除之后我们安装的时候还会检测到你的电脑上有`iTunes Library.itl'`文件让你下载最新的itunes。
4、你将itunes重新安装之后,你发现还会出现其他问题(em:不能登录app store账号)。

言而总之:

删除itunes,重新安装旧版的itunes(12.6)的版本。

1、命令行删除

我们返现我们直接删除会或多或少的出现这样那样的问题,不建议使用,不过我们也给出方式,让喜欢研(折)究(腾)的小伙伴去尝试吧!


a、重启电脑,在重启的过程中按住 Command + R 组合键进入到系统恢复工具界面。 b、进入终端以后,在终端我们需要输入“csrutil disable”这条命令,按下回车,看到successfully的提示成功以后我们就解除系统的权限控制了。
c、再一次重启电脑,点击“系统恢复工具界面”左上角的标志重启即可。重启后,打开系统中的底部“小火箭”标志——“其他”——“终端”,在终端中输入“sudo -i”进入到系统的Root。这里要在Password输入你的开机密码,密码输入过程不显示,输完直接按回车即可
d、继续输入命令“rm -rf /Applications/iTunes.app”回车,到这里我们就把iTunes从系统中卸载掉了
f、继续删除掉iTunes Library.itl'文件,去Finder查找,之后命令行直接删除就好了。


2、软件卸载
使用clearmymac 卸载,我在网上看见有人说成功了,这里我没有尝试过,我记得当时我想用软件卸载的时候我去软件中查找的时候没发现itunes,我下次再试试,再来更新。

重要

注:在windows上随便安装,不用这么费事,我们可以迂回策略,让windows的电脑下完,我再安装,我的方法一

第三方管理软件下载

我使用的是AS助手,AS助手最近才有的mac版本,可以在这直接下载。
我使用p助手的时候发现我不能下下来,而且ios9之后版本的手机系统在p助手里面也不能将软件备份。
这是比较取巧的方式,还是迂回战略。

总结:

相对来说第三方软件或者windows的itunes的来说,还是比较简单的获取,mac上itunes跟苹果一贯的套路一样,升级简单,降级困难,所以以后升级的时候还是慎重吧。

2013-01-10 14:08:21 wang9834664 阅读数 518

当我们获取到一些iOS的app包后,发现里面的png图片使用系统的预览看不了。因为在Xcode生成应用程序包时,自动将png图片进行优化,而优化后的图片不能直接使用预览查看,这个优化工具时pngcrush。它也提供了还原的功能,使图片再度可见。为了批量处理这些图片,我写了一个脚本:

1
2
3
4
5
6
7
8
9
10
11
#/bin/sh
 
filelist=`find $1-name "*.png"`
 
#echo "$filelist"
echo "$filelist"|whileread file
do
   echo $file
   /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/pngcrush -revert-iphone-optimizations -q $file $file.png
   rm $file
   mv $file.png$file

可以直接使用命令:

pngdecode 目录

使用后自动将目录下的所有png图片还原。

没有更多推荐了,返回首页