精华内容
下载资源
问答
  • Thinning

    2021-01-02 17:54:28
    t think this is a problem since thinning is something typically done only once per bandpass or SED. <p>Another impact is that the number of retained samples using the proposed algorithm is typically ...
  • ios_app_thinning
  • stein_thinning_start-源码

    2021-03-29 21:12:44
    stein_thinning_start
  • iOS App Thinning

    2018-04-06 12:52:58
    iOS App Thinning iOS App瘦身功能,不错的文章: 初探 iOS 9 的 App 瘦身功能 App thinning overview (iOS, tvOS, watchOS) 安装包的优化,参考iPhone安装包的优化 未使用的资源 资源中未使用的资源包括...

    iOS App Thinning

    iOS App瘦身功能,不错的文章:

    安装包的优化,参考iPhone安装包的优化

    未使用的资源

    资源中未使用的资源包括图片、音视频等

    图片资源

    图片方面的优化,包括图片压缩和去掉项目中未使用的图片资源

    1.使用ImageOptim来做图片的压缩
    2.使用LSUnusedResources来查找和删除未使用的图片资源

    经我自己实践,发现ImageOptim虽然可以对图片(png和jpg类型)进行压缩,但压缩后并不能显著的减小ipa的体积(还是能减小,但是不多,我所经历的项目只减少了0.2M)。有文章说是使用ImageOptim,需要将Xcode中COMPRESS_PNG_FILES设置为NO。但我这样做后,效果还是和原来一样,感觉没什么效果

    但删除掉项目中未使用的资源,包括图片、音视频、html/js文件,确实是可以减小ipa包的体积的

    包内容

    在ipa包中,比较大的内容,主要有2个:

    • Assets.car
    • app的可执行文件

    Assets.car的文件,可参考Analysing Assets.car file in IOS
    使用Asset Catalog Tinkerer来查看Assets.car的内容

    二进制包

    可使用MachOView来查看二进制包的组成,一般都包含2种架构:

    • armv7
    • arm64

    可使用LinkMap来对文件进行分析,可以知道每个类在最终的可执行文件中占据的大小,就可以有针对性的进行优化

    使用的时候需要将Write Link Map File选项设为yes

    为使用的类和方法

    推荐使用Appcode来做代码检查,code->inspect code代码检测分析功能删除无用类和无用方法

    stackoverflow中有介绍使用Xcode来查找某个类的未使用的方法,参考:

    有一个介绍是,使用assistant editor,选择callers,可发现某个方法是在哪些地方调用的

    callers

    参考

    展开全文
  • taking a sequence of Refs</li><li>Craft a helper class that holds the thinning parentage information from the <code>parent</code> to `thinned</li><li>Change <code>ThinnedRefSet::keys_</code> from ...
  • App Thinning研究

    2016-07-28 10:24:01
    App Thinning研究 App Thinning可以译成“应用瘦身”。指的是App store 和操作系统在安装iOS或者watchOS的 app 的时候通过一些列的优化,尽可能减少安装包的大小,使得 app 以最小的合适的大小被安装到你的设备上...

    App Thinning研究

    App Thinning可以译成“应用瘦身”。指的是App store 和操作系统在安装iOS或者watchOS的 app 的时候通过一些列的优化,尽可能减少安装包的大小,使得 app 以最小的合适的大小被安装到你的设备上。而这个过程包括了三个过程:slicing, bitcode, and on-demand resources。

    slicing

        App Slicing在节省应用所需资源中发挥着最重要的作用。

        很多应用需要在不同尺寸的设备上运行,针对这些不同的设备,它们内含不同的独立资源,而大部分是你的设备不需要的。所以App store会针对不同的设备制作不同的“简化版App”,当你下载app时候只需要下载不同的“简化版app”就可以了。

        比如用户使用的是iPhone 5c,它运行的是32位CPU和GPU,并不支持Metal API。但如果用户下载的是一款最新的通用游戏应用,它的二进制中含有64位代码,iPad和“3x”iPhone 6 Plus 资源以及Metal API代码,这些都是你的设备用不上的。它只需要32位代码,“2x”iPhone尺寸资源以及OpenGL图形代码。


        Slicing 的主要的工作流程如下:

    1、在 Xcode中,选择好目标设备并且使用 asset catalog 提供多分辨率的图片资源 只有使用 asset catalog 才能正确使Slicing作用于资源文件

    2、在模拟器或者设备上编译并运行app

    3、Xcode 会自动构建针对你运行设备的“简化版app”,同时也是为了减少编译时间和进行本地的测试

    4、打包app(为了及时发现不同目标设备的配置错误,可以在本地为目标设备导出“简化版app“,测试无误后再打包)

    5、上传打包好的app到 iTunes connect。App store 将会为上传的app归档创建不同的“简化版app”。

    6、在 iTunes Connect 中, 发布一个预览版给合格的测试者进行测试

    7、测试者通过 TestFlight 下载预览版。TestFlight 会自动根据测试者的设备下载合适的“简化版app”。

    Bitcode (iOS, watchOS)

        Bitcode是一个编译好的程序的中间表示形式。上传到 iTunes Connect 中的包含Bitcode的app 将会在 App store 中进行链接和编译。苹果会对包含Bitcode的二进制app进行二次优化,而不需要提交一个新的app版本到app store中。

    On-Demand Resources (iOS)

        ODR(on-demand resources 随需应变资源)是iOS减少应用资源消耗的另外一种方法。比如多级游戏,用户需要的通常都是他们当前的级数以及下一级。ODR意味着用户可以下载他们需要的几级游戏。随着你的级数不断增加,应用再下载其他级数,并将用户成功过关的级数删掉。


        当用户点击应用内容的时候,就会动态从App Store上进行下载,也就是说用户只会在需要的时候占用存储空间。这项功能有趣之处还在于当将这些内容在后台进行下载之后,当存储空间紧张的时候会自动进行删除。


    On-Demand Resources可以是除了可执行代码外的任意类型。


        在开发过程中,你可以通过分配一个或多个tag来识别On-Demand Resources。你可以使用tag的别名来确定什么时候将它加载到你的App中。 下图展示了一个在App中保持最小资源占用的例子


        可以给资源设置优先级,比如当App从Appstore安装后就立即加载。

    On-Demand Resources的生命周期

    1、App向操作系统请求资源。操作系统将请求发送给包含所有所需资源的asset packs。


    2、asset packs检查请求的资源本地是否存在。如果存在,则直接提供App使用。

    3、如果请求的资源本地不存在,则它们被保存在App Store。


    4、操作系统开始下载本地不存在的资源

    5、远程资源下载完毕


    6、当资源下载成功或监测到资源包已经被下载,资源包内存计数将会被+1,并通知App此资源可用。


    7、当请求的资源可用,App使用资源标签对应的资源。


    8、操作系统在本地释放资源标签

    9、操作系统在本地清除资源缓存。当一个缓存资源不与任何请求相关联时,操作系统会在一定时间后将它释放掉。     

    完整的生命周期如下图所示


    实际处理方法

    1、iOS9以后Xcode默认开启On-Demand Resources功能,可以在下图所示位置进行设置。


    2、在App中创建Tags



    3、给文件设置tag


    4、给图片设置tag

    5、给tag设置加载的优先级


    有三种加载优先级

    • Initial install tags. 资源和App同时下载,在App Store中,App的大小计算已经包含了这部分资源。当没有NSBundleResourceRequest对象访问它们时,它们将会从设备上清除。

    • Prefetch tag order. 在App安装后开始下载,按照预加载列表中的顺序依次下载。

    • Dowloaded only on demand. 只有在App中发出请求时才会下载。

    资源大小限制


    展开全文
  • * adds <code>reset()</code> function to be required on the thinning <code>Selector</code> classes. It will be called after the object loop to allow clearing any intermediate data structures. <h4>PR ...
  • 打包的时候,为了使我们打出的包可以安装在所有的设备山,我们需要选择 App Thinning None 如图

    打包的时候,为了使我们打出的包可以安装在所有的设备山,我们需要选择 App Thinning None 如图

    展开全文
  • cd topological_thinning conda create -n skeleton_env --file requirements.txt source activate skeleton_env cd skeletonization python setup.py build_ext --inplace cd ../transforms python setup.py build_...
  • Thinning shell thickness of CuInS2@ZnS quantum dots to boost detection sensitivity
  • <p>This PR is a preparatory step to introduce (constrained) support for slimming objects when performing thinning of collections, as outlined in the discussion of #30544. More specifically, this PR * ...
  • AppThinning之AppSlicing

    千次阅读 2017-04-11 13:41:23
    App Thinning介绍  iOS9开始,Apple推出了一项新功能称为App Thinning,字面理解就是App瘦身。简单说来就是开发者将整个App包传到App Store,当不同用户设备下载App的时候,App Store通过根据不同设备特性分发...

    App Thinning介绍

      iOS9开始,Apple推出了一项新功能称为App Thinning,字面理解就是App瘦身。简单说来就是开发者将整个App包传到App Store,当不同用户设备下载App的时候,App Store通过根据不同设备特性分发经过剪裁的App,从而减少了用户包大小。

      关于App Thinning有三种特性:slicing, bitcode, on-demond resource(ODR)。  

    Slicing介绍

    Slicing通过将app bundle资源根据不同的设备特性分为不同的版本。对于图片资源,会根据设备(如iphone6 plus需要@3x,iphone 6需要@2x)所需图片分辨率不同分发给对应设备所需对应的图片资源。

     

    例如在6plus中,大屏储存需要3x的图片,所以会分发对应的图片资源。

     

     

    如何使用Slicing

    对于Slicing的使用很简单只需要满足下面几个条件:

    • 当前项目的development target版本 iOS7及以上
    • 图片资源通过asset catalog进行管理
    • 设备版本必须是iOS9以后,确切的是9.0.2以后

    Nova-Merchant中对App Slicing的使用

         关于Nova-Merchant中对Slicing的使用,首先要对Apple是如何通过asset catalog管理图片进行介绍。

         经过调研发现,Apple对与那些通过asset catalog管理的图片在编译后,会在DPScope中生成Asset.car文件,该文件中包含了其管理的图片资源。App Slicing会对不同尺寸设备 编译之后的分发设备所需的@2x和@3x图片。

    Nova-Merchant中对图片的使用主要在三个地方,1.Nova-Merchant target中的Images.xcassets.2.Development Pods中的NVImages。3.每个Pods中的Assets文件夹。

    通过统计相关图片资源数量如下:

    Images.xcassets

    Local Pods

    Remote Pods

    824张

    230张

    153张

    目前对Nova-Merchant中如何使用Slicing有两种方案,并且都进行了调研和测试。 

    方案1

         每个Pod单独建立各自的asset catalog,管理Pod自身的图片资源。这样在编译之后,会将项目中所有的asset catalog编译成一个Assets.car文件。

    优点:每个pods单独管理自身的图片资源。

    缺点:1.需要更改各个pod的podspec文件中的s.resource。指向该pod所建立的Asset.xcassets。2.不方便本地测试,只能通过发布到testflight测试。 3.需要推动各个pod去完成图片的管理工作。

    方案2

          仍然通过Nova-Merchant  target中的Images.xcassets来管理整个项目中的图片资源。在pod install完毕后,各个Pod中的图片资源放到Images.xcassets中来统一管理。(具体方法就是将图片拷贝到Images.xcassets中,生成对应图片名字的.imageset文件夹,文件夹下生成Contents.json文件来指定对应的1x,2x,3x版本图片用于分发),同时删除掉这些图片放在原Pods下路径的图片。

    优点:各个pod不需要任何工作量

    缺点:1.需要在pod install完毕后,删除Target Support Files中Pods-Jovi-resources.sh中对应图片的 install_resource 行。不然编译会报错。2.通过脚本,在pod install完毕后,将NVImages 以及Pods下的图片资源放到Images.xcassets中,并删除指定的shell脚本行数。 脚本运行时间大概为40s左右

    通过对方案1,方案2的优缺点分析,最终打算采用方案2的方法来对Nova-Merchant中图片进行管理。

    结果展示

    通过使用App slicing,编译后发现,不同设备所分发的Asset.car文件中图片确实是如预期所预料的那样

    上图所示的是我通过iphon6设备编译后获得的Asset.car文件,我们可以发现只下发了该设备所需的@2x图片而不会下发设备不需要的@3x图片。

    由于Nove-Merchant中在Pods中使用的图片量不多,并且大多数为对资源的使用通过s.resouce_bundle的形式,造成类似于MTADXSDK这种pods中的图片不能进行迁移,而目前只作了对于资源的使用通过s.resources的形式才进行图片迁移。所以执行脚本后只有少量的图片进行了迁移,迁移图片数量103张,但尽管如此,还是让安装包从63.9M缩减到了63.6M,安装包减小了0.3M。虽然效果不明显,但是确实有用,而对于主app那边,他们图片多半在NVImages和pods下,所以他们迁移后,app安装包瘦身效果达到了喜人的20%。

    下面是执行完脚本后图片存放在JVPodsImages.xcassets下的截图:

     

    图片迁移脚本采用了两个段脚本代码,一个是寻找图片所在的路径,另外一个是将图片拷贝到JVPodsImages.xcassets下,并且删除其对应在pods下路径的图片。

    两段脚本解释:

    第一段脚本findImagesPath.rb是通过遍历podfile里面的每行内容,找到找到每个pods对应的podspec.json或者podspec文件,然后去以json格式方式读取podspec文件里面的内容, 来获取pods的资源引用方式——是通过s.resources还是通过s.resource_bundle方式,这里所说的资源是指图片,并且只是.png格式的图片。将所有可能包含有图片的路径全部放在一个array中,并返回给第二段脚本的使用。

    第二段脚本merge_images.rb是将第一段脚本寻找图片路径的地址集合进行遍历,遍历该路径下的每个文件下,找到所有的.png格式图片的路径并存放在一个array中,然后将这个路径进行图片拷贝到指定的JVPodsImages.xcassets 下totalImages包下,并生成json文件,与此同时删除掉pods下相应的图片和Target Support Files中Pods-Jovi-resources.sh中对应图片的 install_resource 行。

    如何使用到jenkins打包中:

    由于我们项目中的Podfile文件里面的pods有些是本地localPods下的,有些是远程dianping pods库,所以执行脚本来分为两次,第一次执行本地Pods图片迁移,第二次执行远程图片迁移。执行命令:

    ruby merge_images.rb local 和ruby merge_images.rb remote,这两行命令为了jenkins打包方便已加入到pods_install.shell脚本中。

    最后,为了方便开发本地不必执行图片迁移脚本,而保持原来的执行pod_install脚本习惯。现在添加新的pod_install shell脚本,叫new_pod_install.sh,这个脚本只是用来我们开发人员在本地更新pods库时执行,不会影响现有的jenkins打包。执行命令行:sh new_pod_install.sh [clean] ,clean参数和以前一样是可选的。

     

    后续有个问题是关于podspec文件中的引用资源方式为s.resource_bundle方式如何将图片进行迁移,将继续作为app sining方向。

    展开全文
  • 有关C ++和OpenCVZhang-Suen-Thinning。 锤与镰刀
  • Thinning Methodologies-A Comprehensive Survey,Louisa Lam等人写的细化算法的综述, 1992年,早了点,但很全。涉及像素及非像素 的删除、骨架化、模型中心线等等,尝试保持细化的连贯。希望对图像处理的有志之士...
  • 所谓细化就是经过一层层的剥离,从原来的图中去掉一些点,但仍要保持原来的形状,直到得到图像的骨架。骨架,可以理解为物体的中轴,例如一个长方形...Thinning is the process of peeling off some points from the or
  • Thinning methodologies-a comprehensive survey.pdf
  • Previous results show that the floating reference theory (FRT) is an effective tool to reduce the influence of interference factors on noninvasive blood glucose... In this article, thinning and calculati
  • App Thinning Xcode9打包选择

    万次阅读 2017-06-21 10:13:31
    6月9日结束的苹果WWDC15大会上,苹果公司推出了多个新技术,不过对于手游开发者们来说,可能最具有革命意义的是库克在发布会现场都没有提到的应用瘦身功能(App Thinning),它是其Xcode 7测试版的功能之一。...
  • The app thinning will strip the fat binaries to a single slice on the AppStore when the app is distributed to the client devices. This will leave a single copy of the metadata in the actual download ...
  • LogCombiner should not allow thinning that is not compatible with the original sampling rate. An error and explanation should be shown </code></pre> <p>Original issue reported on code.google....
  • iOS9 发布后,产生了一个使 App Thinning 无法正常运行的 bug。在iOS9.0.2 版本中,这个 bug 已经被修复,App Thinning 已经可以正常使用。当你从应用商店(App Store)下载应用时,请注意这点。iOS9 推出之后,大受...
  • 细化(thinning)

    千次阅读 2012-12-28 13:51:23
    细化(thinning)算法有很多,我们在这里介绍的是一种简单而且效果很好的算法,用它就能够实现从文本抽取骨架的功能。我们的对象是白纸黑字的文本,但在程序中为了处理的方便,还是采用256级灰度图,不过只用到了调色...
  • App Thinning(应用瘦身)功能介绍

    千次阅读 2018-11-21 15:08:31
    App Thinning (iOS9)会自动检测用户的设备类型(即型号名称)并且只下载当前设备所适用的内容。换句话说,如果你使用的是 iPad Mini 1(1x分辨率且非 retina 显示屏)那么只会下载 1x分辨率(下文会有更多介绍)所...
  • App Thinning
  • sugarbush-thinning-源码

    2021-03-07 19:22:41
    糖稀疏 一个与sugarbush稀疏项目有关的数据,分析和图形文件
  • 昨天不是说同学问我怎么绘制出轮廓的中心线。然后我上网查了一下其实这个有专门的算法叫做细化...图像细化(Image Thinning),一般指二值图像的骨架化(Image Skeletonization)的一种操作运算。切记:前提条件一定是二...
  • They basically say that my app cannot be built with the new bitcode option (announced with App Thinning) because this static library was not built with bitcode enabled. Which makes sense since this ...
  • <div><p><strong>Describe the bug When running <code>tuist up, with a custom setup rule, the environment passed to the tool/script is thinned out by the <code>acceptedEnvironmentVariables</code> filter...
  • 论文地址:A fast parallel algorithm for thinning digital patterns 代码: def thinImage(src, maxIterations=-1): assert len(src.shape) == 2, 'please binarify pictures' img_height, img_width = src....

空空如也

空空如也

1 2 3 4 5 ... 15
收藏数 292
精华内容 116
关键字:

thinning