心想事成iOS图片等资源文件的热更新化(一): 从Images.xcassets导出合适的图样

正文会依据一个既部分脚本工具自动导出所有的图片;最终给来之是一个于
Images.xcassets 到因文件夹的简单 合适
的图资源聚合的共同体了程.难点在于从总体图片集及简图片集,肯定是因一个定制化的本子,自定义导出的.如果自己手动导出?那可是有忙喽~

2014年到2015年,我来非洲,开始了扳平段子对己而言史诗般的壮旅。我由埃及西奈半岛之大哈巴(Dahab)开始,途径苏丹、埃塞俄比亚、肯尼亚等于非洲江山,最后到达了南非的好望角,完成了非洲大陆从失败至南方的穿。其中由苏丹交吗派,以及从也门飞吉布提,这点儿段子是飞上飞起,其余全程陆路。南非以后我还去了马达加斯加及毛里求斯。

Images.xcassets 与 Assets.car

Images.xcassets,是Xcode项目蒙之,用于存放资源文件.那么我们怎么未直处理
Images.xcassets
呢?因为Images.xcassets中存放的图名称或跟图片的资源名称不等同,最终决定图片资源名的是资源文件夹的称呼;也生或Images.xcassets存放的凡pdf格式的图形,这样好活动预编译对诺尺寸的图片资源.

Images.xcassets
编译后,最终ipa包中,是为Assets.car包的形式出现的,内部是拍卖后底图片名.此处的公文称和我们代码中援的图资源名称是同等的.

否尽管是说:
直接冲Assets.car进行拍卖,可以假设我们的动图片处的代码变更尽可能少.

下面这些字是本身于回到后承受有旅行网的一个字访谈,主题是关于非洲之。如果您想对非洲享有了解,或者正准备去非洲,不妨看同样关押。

动用 cartool 从 Assets.car 导出图

Assets.car 无法直接zip解压,需要靠专门的工具,此处推荐:
cartool
使用方法,参见:
iOS学习的解压Assets.car

设若您少足够复杂的Assets.car或者cartool用法有问题,可以一直利用本人处理了之资源:https://github.com/ios122/ios_assets_hot_update/tree/master/res

本着文章github给得的目, cartool的用法,可以简述为:
cd 到 res目录,然后

mkdir Assets
./cartool  ./Assets.car ./Assets

叩问:非洲的是社会风气上最好落后的地方,为什么选去那边旅行?穿越非洲之旅行是你环球旅行的一模一样有些也?你说到底之计划是什么?

实际使用同一布置图纸就足以额兼容iPhone/iPad

自打 Assets.car 导出后底图片,大致有以下几种植:

上述图片的因,很怪片段凡是由于App迭代引起的.对于一个图形,存在上述不同状况时,图片通常加载与时屏幕比例(scale)最符合的图,具体细节下一致篇稿子会还完整描述.

通过自家要好的实验与网上各种资料之询问,使用 @3x 的图样是好而且作为
iPhone和iPad的通用图标的.当然,这是内需打定义
imageNamed方法,也是下同样篇文章的重点.
2仿照共5只图片,现在单独需要1独图片,理论图片资源体积可以减少
((1 + 2 + 3 + 3 + 1.5) – 3) / (1 + 2 + 3 + 3 + 1.5) = 71.428571 %
(信息量超大的速算法,看无知晓就当是单冷笑话吧~(≧▽≦)/~)

自家从小就是闹一个非洲梦幻。不过,在不知要也罢何物的孩提时代,所谓巴,不过是免切实际的高谈阔论,不过大凡娱游乐时的时代语快。当自身看了《走来非洲》这部影片继,我才打听了非洲之苍茫壮阔,那一幅幅史诗般的镜头就指向本人的野性之呼唤。当我看了《夜航西飞》这仍开后,我就是亮,非洲凡非去不可了。当自身大学毕业,工作了三四年晚,有矣肯定的积蓄,我看自己得以出发了。

活动分类脚本思路

咱们想只要博得之是
*可用的@3x图片文件夹*

*免包含@3x图片的发问题之资源列表*.
对于不存@3x副本的图纸,很酷或这资源已让丢弃了.这同一片,暂定手动去排查和核实.如果一个图片以当应用可未存在@3x的副本,绝对是RD挖了一个坑,等而来填!

基本思路是:

  1. 去除 ~ipad 结尾的图纸,如bg_mypage_edit~ipad.png;
  2. 去除 ~iphone 图片被之
    ~iphone文字,如bg_mypage_edit~iphone@3x.png
    重命名也 bg_mypage_edit@3x.png;
  3. 拿富含@3x的图片组的@1x
    @2x @3x 的图片以顺序移动及独文件夹 如
    assets_3x,并都命名吧@3x,此时本文件夹着不怕为发生题目的资源,新文件夹着呢有效之资源文件,犹只有保留了@3x;
  4. 将原先资源文件夹命名为assets_error,以供下使用;
  5. 人为确认非法图片是否拥有在意义,有则寻那@3x副本放到
    assets_3x 文件夹;

当,我吗可以挑选去其它地方,为什么是非洲?大概可能也许是眷恋挑战自己,毕竟我还算是年轻。世界上产生那么些地方,等自牙齿掉就了呢会去,但非洲休是。

机动分拣脚本实现

除了上述之第五步以外,前四步都好自动化运行:

#0. 需要先cd到解压后的Assets目录;
#1. 去除 ~ipad 结尾的图片,如bg_mypage_edit~ipad.png;
find . -iname "*~ipad*.png" -delete

#2. 去除 ~iphone 图片中的 ~iphone文字;
find . -name "*~iphone.png" -exec sh -c 'for i do mv -- "$i" "${i%~iphone.png}.png"; done' sh {} +

find . -name "*~iphone@2x.png" -exec sh -c 'for i do mv -- "$i" "${i%~iphone@2x.png}@2x.png"; done' sh {} +

find . -name "*~iphone@3x.png" -exec sh -c 'for i do mv -- "$i" "${i%~iphone@3x.png}@3x.png"; done' sh {} +

# 3.将含有@3x的图片组的@1x @2x @3x 的图片按顺序移动到单独文件夹 如 assets_3x,并都命名为@3x,此时原文件夹中即为有问题的资源,新文件夹中为有效的资源文件,且只保留了@3x;

mkdir ../assets_3x

find . -name "*@3x.png" -exec sh -c 'for i do mv -- "${i%@3x.png}.png" "../assets_3x/${i%@3x.png}@3x.png"; mv -- "${i%@3x.png}@2x.png" "../assets_3x/${i%@3x.png}@3x.png";mv -- "${i%@3x.png}@3x.png" "../assets_3x/${i%@3x.png}@3x.png";done' sh {} +

# 4.将原资源文件夹命名为assets_error,以供以后使用;
cd ..
mv Assets assets_error

最后抱的 assets_3x 即为可用资源,assets_error
即为索要手动确认可用性的资源.

譬如许多人数同一,环游世界是我之企,这道过非洲底旅行自然是里面的平等片。我盼望的旅行不要走马观花、蜻蜓点水式的,而是争取形成对地面的文化、风俗、历史有了解。世界到底最特别,我思念看,但非可知瞬间就算看了。所幸自己还算是年轻,慢慢看,不着急,不然事后只能去火星了。

得和清醒:

  1. 类中,图片就等同块,的确有成千上万空头的要无客观的资源,需要赶紧化解;
  2. shell 脚本是因路径进行复制,移动等操作的,如
    find的结果,其实是一个文书路径,借助它们,提出了一个粗略的区分可用于不可用资源的不二法门;
  3. 形容博客,确实可以假设思路更清有序,坦白道,这当是一个自身未敢碰的优化任务,一个一个比对,想想都头大.最终之处理结果,还是于出了必然数量的无效图片,但是自因该名字就是足以规定那个职,非常好处理了,已经看了诸多素养了;而且,要比自己手动排查地可信多矣.

层层专属github地址: https://github.com/ios122/ios_assets_hot_update

问问:非洲任起来就老火热,而且瘟疫泛滥,你当地面旅行了如此久感觉天如何?恶劣之当条件下怎样保管自己之常规?

唯恐大家对非洲发出部分误解。比如,非洲且深烫,要不然非洲人怎么那么黑;非洲还大干净,要不然怎么产生那么多嗷嗷待哺死的丁;有人竟看非洲就是是一个国家。

实在,非洲发出54个邦,是国数据最为多的新大陆。大了,就非克相提并论。有的地方实在充分烫,比如北苏丹京城喀土穆,就为称为“世界火炉”。非洲最好火热的地方以北非撒哈拉沙漠地区,撒哈拉以南的泛非洲国家温度常年在20及30摄氏度之间,气候宜人,加之自然资源丰富,可以说凡是非常适合人类居住。

非洲大部分国同样年只有分为雨季和旱季。雨季来了,蚊虫肆虐,如果吃疟蚊叮咬,容易引发疟疾。这是错过非洲旅行最给人口操心之工作。得了疟疾,轻则虚脱,重则丧命,旅行很可能用终止。我于埃塞俄比亚之时,就购置了有防治疟疾的药带在身上,以备不时之用。所幸自己向没有用了她。谢天谢地,这番非洲底一起,我有史以来没十分了病。

此外,要提前注射黄热疫苗。注射了黄热疫苗后,会时有发生一个证明,俗称“小黄本”,这是至博非洲邦旅行时通关的必。更主要之是,这也管了投机的正常。

本身以非洲旅行中,西部非洲真还在起着埃博拉疫情,但也止限于少数几乎独国家,东部非洲虽说着力没有遭受震慑,谈不齐“瘟疫泛滥”,不然我吗无力回天生活在赶回。

提问:途径这么多滑坡的国家,吃饭问题是怎解决之?是无是众当地人还无粮食?吃的东西根本呢?能习惯也?

当坦桑尼亚之前,基本还是以本土的饭馆吃。到了南部非洲后,则第一是友善举行。很多公寓都为游人提供了厨房,附近的超市可以购置至各种蔬菜肉类。

自我到过之非洲江山里,很多餐饮店还是提供米饭的,不过当苏丹、埃塞俄比亚虽说少一些。很多地方还有地方的特点食物。比如埃塞俄比亚,它们的主食是英吉拉(injera),这是同一栽灰白色的大薄饼,配以蔬菜酱或者碎牛羊肉酱,盛于一个铁制的不行圆盘里。吃的下完全用手,先是撕下一多少片,再蘸上蔬菜酱或肉酱,一起放入嘴里,吃起有一样条大可怜的酸味。

于养尊处优的中原胃来说,肯定是匪惯的。但自己觉得旅行就是若敢尝试不雷同的东西。尽管自再次爱中国菜,但自我回国后有死把的年华吃,天天吃,顿顿吃。在短短之途中中,应该敞开怀抱去体会别样的物,视觉、听觉、味觉都该开辟,让它对斯世界保持灵活的觉知。

至于吃的东西是否彻底,我实在不了解,但中间应该是没有地沟油的。

咨询:除了进食,最重点之饶是睡的地方了?这些国家还生酒吧好告一段落呢?你是怎选择住处的?有没发出遇上什么安全题材?

市里主导都是产生酒店的,但本身已的还是青旅或背包客栈,节省旅费是单方面,但再也要之是得结识各个国家的观光客。在跟她们之交流过程遭到,可以了解不同国家之文化差异,可以得第一手的旅行资讯。这是入住酒店无法取的。

于非洲,几乎每个国家还来召开事情要出差过来的华人。有时和她们聊得来,也会失掉她们那边适合息。我当约翰内斯堡即使是止在一个对象家里,一住就是是七天。

在吉布提底时光,因为身上的现款大少,银行卡又获不来钱,我不怕尝试了同样晚的沙发客。沙发主是千篇一律针对性法国夫妇,有三单小孩儿。他们特地腾出一里头小孩子的寝室给自身停。

去苏丹关押了金字塔后,已经上黑,没有车,周围弥漫一切开,我便把睡袋铺在沙漠上睡了同后。现在推断很后怕,但夜间底天河真是无比灿烂。

于非洲旅行的初,如果旅店的大半人间里出黑人,心里其实是蛮害怕的,但新兴吗即习惯了。这么多龙,只当纳米比亚京温得和克出过千篇一律不好工作。有上早晨起来,自己之背包被人翻过,偷走了1200美金,更可气的是,还附带把我的移动硬盘拿走了,里面来自家这次旅途所有的视频及整个相片的raw格式,这是充分充分的一个损失,我一切心痛了三龙。

提问:除了因为飞机,在这些地方旅行而是租车、打车或者公共交通?有没产生以当地搭车?有没有发出中途遇到过劫的?

立即番过非洲大陆的旅程(从埃及之西奈半岛到南非底好望角),除了由苏丹飞为派和自也派飞回吉布提以外,全程陆路。从一个市到外一个市,都是乘坐当地的公共交通。曾经跟当埃塞俄比亚底一个边疆城市,跟路上遇到的老三只朋友准备搭车去肯尼亚,但当了同一下午且没有失去边境的切削,只好放弃。在都里之言辞,主要是徒步、坐公交,偶尔也打车。

说及抢,我遇到过三不成,有着丰富的经验。第一次于有在坦桑尼亚之达累斯萨拉姆,在去马拉维使馆将签证的路上,因为不小心坐了黑车,被六个壮硕的黑人挟持,被迫交出了随身具备的现金和银行卡。他们逼迫自己说发银行卡密码,并带来在自家失去ATM取出了卡里全部之钱。最后他们又管自身带顶一个冷静之地方弃了下去,把护照还被了我,并叫了自有零用钱为自身打车回去。

其次破来在约翰内斯堡底park
station,当时我正要起斯威士兰因为过境巴士到南非。下了车后,我在车站附近没有见到同一部出租车。刚好“路过”的一个丁说亮出租车停的岗位,让自己随着他走。他将自己带来及一个停在许多手推车的地方,但这些车还是从来不“taxi”标志的。由于来矣第一次于受抢的经历,我的心房下意识地大呼小叫,就终止住了。这时又有一个“路过”的丁看自己弗动,劝自己说“不要怕,他是个老实人”。但自己可感到他的神采与语调都充斥了杀气,更是不敢动弹半步。这时我扫了一晃四周,看到百米左右底地方住在三四部正规的出租车,就急忙走了千古,坐上车就挪了。上车后自己和司机攀谈,司机说警察还叫他们了置了,根本就未随便。这次属于抢劫未遂。

老三不好是如此的:我起约翰内斯堡盖夜班巴士到开普敦汽车站,想到开普敦号称是南非最好安全之城池,加之当时是颇白天,旅店离站又上,我就是决定走过去。不成为思活动及均等座大桥的时,有私房突然飞了来遮在了自前,让自己把背包被他,说正他还要要往衣兜里做出掏枪的姿势,但是他掏了大体上天呢从没打出来。我看他衣衫褴褛,别说枪,可能连刀都进无从,觉得他只是在虚张声势,就快跑起了。由于自身一前一后背在些许独好保险,根本走不快,他飞就赶上上了本人,扑了上来。我便同他扭打了起。尽管发生那么些路人,但犹行色匆匆而过,没有人协助自己。还好最后来一个经的司机咆哮了同样信誉,他或于吓了转尽管脱了手,我就挣脱他急匆匆走起。现在推测,蛮后怕的。

叩问:在啊门入境时宛如尚更了有曲折,差点让遣返?你是哪些回应这样多国之签问题的?

本身去呢派的当儿,也派都爆发了内战,局势非常紧张。即使平时去为派旅游,也急需跟团,不可知自由行。我是吗还不知道,啥吧无未雨绸缪,就懵地飞过去了。在吗派机场,他们即使“审问”我,然后以说道了要命遥远(其中有个处理措施就是是管自遣返回国)。最后他们确认自身真无害,就帮忙自己联系了平下酒吧。由酒店经理担保本身当为派里的安康,我才得入者奇异的国家。我应该是绝无仅有的自由行的游客。不过,我的倒限制仅限于萨那老城。即便如此,这栋漂亮之阿拉伯老城也足够自己转了。

有关签证,有些国家好生签证,有些可以不签。需要签的,我便提前去达到一个国度要上直达一个国度的大使馆办好。可以在使馆的官网查询需要预备什么资料,也足以当网上搜寻有攻略,不过非洲的攻略确实非常少。

叩问:除了签证以外,语言不通应该吗深烦吧,英语在这些国家之普及水平来微微?有没发出以语言不通闹过笑话?

鉴于历史由来,非洲出许多英语系国家。像肯尼亚、乌干达、马拉维、赞比亚、纳米比亚,英语都颇通行,甚至报刊杂志、电视广播都是用之英文,他们之英语比你说得还吓。即使不是英语系国家,在旅馆、车站、机场、景点附近,基本都能找到会说英文的人数。即使运气实在不好,一个会晤说英语的人口犹尚未遇上,其实手舞足蹈也克交流,而且又有趣。

我早已遇到了有人就会说话“hello”“yes”“aha”“wow”,连一句子完整的英文都非会见说,照样环游世界。语言不通不是题材,对社会风气之感知能力才是。

只是,要双重好地了解本地文化,提高旅行质量,最好要把语言练好。

问问:为期这么老的旅行一定有许多或者危险或诙谐的经验,给咱们分享两只故事吧。

以非洲旅行,一路底异与不安,如形影相随。本身早就遇过火灾、被人带来去了妓院、被骗了手机、被盗打了钱、三破碰到抢。我也一度在马拉维湖的夜间里划独木舟,跟地面的小孩儿一起游水,在桑给巴尔岛晒了太阳,看到了东非怪草原壮观的角马迁徙、声势浩大的维多利亚瀑布、惊爆眼球的沙海交响,最终迎来了大西洋和印度胡交汇的海风。

有时,危险的经验葡京网上娱乐场里啊包含有趣的分。比如自己在坦桑尼亚让抢那不行,车里六独黑人带在自身到处找ATM的中途,或许是坐无聊,或许是为了化解我的忐忑不安心态,有个体于我教他几乎句中文,诸如“hello”、“how
are you”、“good
morning”对应之华语应该怎么说。我颤颤巍巍地发“你好”、“你好啊”、“早达好”的声音。他们都来了谈兴,一个个模拟于自我的言辞来,“你好”被逐一重复了一些浅,最后交“早达好”的时光竟然成为了并。这个小车厢放佛变成了一个粗课堂,而我成了讲课的教师,我的学习者那奇怪而滑稽的声调显然还要被改很频繁。这或多要丢失退了即会抢劫的严肃性。事后我跟一个爱人闲聊,她问我为什么不使他俩说“打劫”、“拿钱来”、“我是盗贼”呢。我构思,对什么。

抢夺了晚,我回来市区,赶紧去派出所报案。黑人警察问我何以不用功夫打他们,我为难。在许多黑人眼里,中国总人口犹个个是像李小龙同功夫了得之。我本着客说,我的小动作被他们以停了,功夫使非出去。

提问:看你游记中打了像,索马里的钱且是用推砖的手推车兑换的,除此之外还有什么样你看不可思议的地面特点或者习俗可分享一下也?

自身错过之之国度叫索马里兰,跟索马里有复杂的联系,但如今曾独立出来,只是没给国际社会认同而已。索马里兰的钱杀无值钱,一筐一筐地坐落大街上换,跟卖白菜似的。他们好像从来不运钞车,银行里之现是叫推砖的手推车一车一模一样车推去之,我立即直看傻眼了。更有意思的是凭着得了饭然后往往钱,一主一摆设的钞票,通常如频繁三四十摆。那种迎风数钱的觉得真是无限出色了。

于自己当不可思议的政工多,比如埃塞俄比亚奥莫山谷地区的摩西部落。摩西部落的老小以唇部畸形为美,有着特别之“唇盘”装饰,又为喻为“唇盘族”。据说唇盘族少女长至十来年份经常,就会拿下唇割开,并以里头放入一个陶土烧制的稍圆盘。随着年华的增强,圆盘也更放越充分,直到出嫁。唇盘越充分的夫人让看更得意,新娘的值虽越是强,没有唇盘的老婆非常不便嫁得出来。

咨询:非洲这样多国家你不过欢喜哪?有没有产生何是马上一辈子再也为无思去之?对于处女失去非洲之旅行者来什么建议也?

每个国家都于自家不等同的感想,带被本人非同等的心得,不管惊喜还是悬,不管愉悦还是不方便,都是中途的同样部分,能让自家本着斯世界具有更完善的咀嚼。在本人眼里,并从未所谓的进入“黑名单”的国度。恰好相反,很多国家还惦记再失两赖、三赖,每一样切开亲临的土地,都跟友爱建立了某种连接,放佛成了性命里之一模一样有的。比如,往往会当电视节目里听到自己去了之国家的名突然竖起耳朵,或者以网页上观看那些去过的地方的消息,特别发兴趣点进去询问究竟。

非洲有成千上万充分过硬的漫游国家,比如埃及、坦桑尼亚、纳米比亚、南非、马达加斯加、毛里求斯。这些国家生过多有意思之地方,涵盖人文历史、自然风情、城市山水,能带动为丁到的远足体验。其中自尽欣赏南非,尤其是开普敦,它的山、海、城市景观都是一等的,实在好至极,简直是非洲大陆的压轴的作。

于游客的提议:莫必害怕,但如果小心。