eg: localhost:改造 M.emor.Y$ lipo WebRTC.framework/WebRTC -thin armv7 -output WebRTC_armv7localhost:改造 M.emor.Y$ lipo WebRTC.framework/WebRTC -thin arm64 -output WebRTC_arm64localhost:改造 M.emor.Y$ lipo -create WebRTC_armv7 WebRTC_arm64 -output WebRTClo…
iOS应用代码段瘦身办法 大型app应对苹果官方代码段大小限制的小伎俩… 背景 苹果官方文档 对二进制 __TEXT 段大小有限制: 代码实在瘦不下去怎么办? 解决方案 利用 rename_section 过审核,在Xcode中向 “Other Linker Flags” 中添加 -Wl,-rename_section,__TEXT,__cstring,__RODATA,__cstring -Wl,-rename_section,__TEXT,__const,__RODATA,__const -…
java 动态增加应用服务器,出现的消息队列的消费者提报错问题 在项目中,有这样的业务场景,在某一个时间段,客户流量瞬间增大,服务器瞬间很大,出现高并发问题.有一种解决方案就是脚本动态增加业务服务器,来缓解系统瞬间达到的流量. 但是在现实中,会出现一个问题,就是在动态增加应用服务器的时候,会报错:很多空指针.初步确定的原因是: 在服务器启动的环节,加载bean的时候,先加载了mq的消费者的bean,并且开始了消费者接受消息订阅.但是这个时候applicationContext都还没有加载,导致在…
静态库与动态库的区别 首先来看什么是库,库(Library)说白了就是一段编译好的二进制代码,加上头文件就可以供别人使用. 什么时候我们会用到库呢?一种情况是某些代码需要给别人使用,但是我们不希望别人看到源码,就需要以库的形式进行封装,只暴露出头文件.另外一种情况是,对于某些不会进行大的改动的代码,我们想减少编译的时间,就可以把它打包成库,因为库是已经编译好的二进制了,编译的时候只需要 Link 一下,不会浪费编译时间. 上面提到库在使用的时候需要 Link,Link 的方式有两种,静态和动态,…
一.前言 前段时间注意到我们APP的包大小超过100MB了,所以随口跟老板说了下能否采用字体文件(.ttf)替代PNG图片,老板对应用瘦身很感兴趣因此让我做下技术调研.这篇文章主要是将我们的各个技术方案的思路做一下整理和总结,希望对大家有所帮助. 二.iOS内置资源的集中方式 在介绍技术方案前我们先来看下iOS内置图片资源都有哪些常见的方式: 1.将图片存放在bundle下 这是一种非常常见的方式,项目中各类文件分类放在各个bundle下,项目既整洁又能达到隔离资源的目的.我们项目中图片绝大多数…
1. NIMSDK 在 5.1.0 版本之后已改为动态库,集成方式有所改变,若需要集成高于此版本的 SDK,只需要做以下步骤: 将下载的 SDK 拖动到 Targets -> General -> Embedded Binaries 里,如下图 https://dev.yunxin.163.com/docs/product/IM%E5%8D%B3%E6%97%B6%E9%80%9A%E8%AE%AF/SDK%E5%BC%80%E5%8F%91%E9%9B%86%E6%88%90/iOS%E5%…
修改于2017.1.25 使用Xcode Version 8.2.1 1.怎么创建.framework? 打开Xcode, 选择File ----> New ---> Project 选择iOS ----> Framework & Library ---> Cocoa Touch Framework. 点击Next ,按照流程一步一步的创建工程. 工程如下:我把昨天创建的.a库的文件拿过来用一下yooweiSDK.h和yooweiSDK.m. 一般系统自动生成的头文件我们可…
一.iOS 内置资源的集中方式 1.1 将图片存放在 bundle 这是一种很常见的方式,项目中各类文件分类放在各个 bundle 下,项目既整洁又能达到隔离资源的目的.采用 bundle 的加载方式为 [UIImage imageNamed:"xx.bundle/xx.png"]. 这种方式有比较明显的缺点: iOS 系统不会对其进行压缩存储,造成了应用体积的增大. 使用 bundle 存储图片放弃了 APP thinning.明显的表现是 2 倍屏手机和 3 倍屏手机下载的应用包大…
概念认识 什么是库 库是共享程序代码的方式,库从本质上来说是一种可执行代码的二进制格式,可以被载入内存中执行.在开发过程中,一些核心技术或者常用框架,出于安全性和稳定性的考虑,不想被外界知道,所以会把核心代码打包成库,只暴露出头文件以供使用. 库分为静态库和动态库两种. 静态库:链接时完整地拷贝至可执行文件中,使可执行文件体积变大.如果多个APP都使用了同一个静态库,那么每个APP都会拷贝一份. 动态库:链接时不拷贝至可执行文件中,可执行文件只会存储指向动态库的引用.程序运行时由系统动态加载到内…
原创文章,转载请注明作者与本文原始URL. 问题描述:最近遇到这样一个问题,在调用C++的一个成员函数时,总是进错函数.在调用 pMsg->GetMsgContent() 的时候,总是进入到 pMsg->CreateMsgID() 里面去,调试半天,没发现异样,但是单步跟进去时,也总是进错函数.原因:百思不得其解,最后发现原因是,动态库导出虚接口时的头文件 IMsgFactoy.h 和可执行程序链接时用的头文件不一样,所以才进错了函数.由果推因,之所以进错函数,是因为头文件不一样.总结:1.调…