问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

ios 自己打包的动态库能上线吗

发布网友 发布时间:2022-04-21 20:11

我来回答

2个回答

热心网友 时间:2023-09-29 03:38

1.先来一个必须的命令:
~/Library目录在lion下是默认隐藏的。这样很不方便。用一下命令可以使其显示:
chflags nohidden ~/Library
如果想再让其隐藏,可以:
chflags hidden ~/Library

2.静态库工程的建立:Xcode New一个新的project,选择IOS下面的Framework&Library,下面有一个Cocoa Touch Static Library。直接next去建立一个MtimeLibrary这样的工程。(里面的功能就不要关注了,简单 2个数相加)


3.工程建立以后,删除默认的.h .m 文件,然后自己创建CountNumbers..h CountNumbers..m文件。如下图:

4.OK,选择iPhone 5.1Simulator ,Command + B 编译,我们可以在Procts下面找到我们编译生成一个模拟器上可运行的libMtimeLibrary.a这个文件,然后选择真机(如下图)再编译一次,这样会生成一个可以真机运行的libMtimeLibrary.a库。



5. 在libMtimeLibrary.a 右键 Open in Finder,可以找到libMtimeLibrary.a所在路径、后面我们会新建一个项目来添加这个.a文件测试。

打开终端:输入以下命令(路径根据自己的来决定)
cd /Users/cash/Library/Developer/Xcode/DerivedData/MtimeLibrary-amyqbnwwzcivnyeijggzaorseihj/Build/Procts/

这样就到了Procts目录下了,ls 以后可以看到:


再输入一个命令: cd Debug-iphonesimulator/

然后通过下面命令来查看libMtimeLibrary.a信息
命令:lipo -info libMtimeLibrary.a
显示:
cashmatoMacBook-Pro:Debug-iphonesimulator cash$ lipo -info libMtimeLibrary.a
input file libMtimeLibrary.a is not a fat file
Non-fat file: libMtimeLibrary.a is architecture: i386
i386是mac上的架构。

然后再输入下面命令:
cd ../

cd Debug-iphoneos/

继续通过命令来查看 lipo -info libMtimeLibrary.a,
显示:
cashmatoMacBook-Pro:Debug-iphoneos cash$ lipo -info libMtimeLibrary.a
input file libMtimeLibrary.a is not a fat file
Non-fat file: libMtimeLibrary.a is architecture: armv7
armv7是iOS上的jia'ge架构。

到这里我们也明白了,为什么一个在真机上可以使用,一个只能在模拟器上使用了吧!

最后我们要做的就是要让这个libMtimeLibrary.a文件同时有i386和armv7信息,这样就是一个通用的静态库文件了。

6. 新建一个MtimeLibraryDemo应用,然后把真机或者模拟器的libMtimeLibrary.a 和CountNumbers.h文件引入进来,如图:


添加CountNumbers.h文件到需要调用的类里面,然后就可以调用libMtimeLibrary.a里面的方法了。

//
// AppDelegate.m
// MtimeLibraryDemo
//
// Created by cash on 12-3-23.
// Copyright (c) 2012年 __MyCompanyName__. All rights reserved.
//

#import "AppDelegate.h"
#import "CountNumbers.h"
@implementation AppDelegate

@synthesize window = _window;

- (void)dealloc
{
[_window release];
[super dealloc];
}

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];
// Override point for customization after application launch.

CountNumbers *cn = [[CountNumbers alloc] init];
int count = [cn addTwoNumbers:10 :20];
NSLog(@"count:%d",count);

self.window.backgroundColor = [UIColor whiteColor];
[self.window makeKeyAndVisible];
return YES;
}

7. OK,编译运行这个应用程序。 错误了。。这个就是这篇文档的关键了.



我们找到刚才生成真机和模拟器的libMtimeLibrary.a目录。
debug-iphoneos里面的是基于arm6 arm7编译出来的库文件。debug-iphonesimulator文件夹下面的是基于i386编译出来的文件。



10. 最后是关键步骤:

通过lipo -create 命令来合并2个静态库文件。(-output 后面的/Users/cash/Desktop/test/libMtimeLibrary.a 是合并后的路径和文件名字)

lipo -create "/Users/cash/Library/Developer/Xcode/DerivedData/MtimeLibrary-amyqbnwwzcivnyeijggzaorseihj/Build/Procts/Debug-iphonesimulator/libMtimeLibrary.a" "/Users/cash/Library/Developer/Xcode/DerivedData/MtimeLibrary-amyqbnwwzcivnyeijggzaorseihj/Build/Procts/Debug-iphoneos/libMtimeLibrary.a" -output "/Users/cash/Desktop/test/libMtimeLibrary.a"
成功!

最后通过命令 lipo -info libMtimeLibrary.a 可以知道这个文件已经有i386和armv7信息了。
cashmatoMacBook-Pro:test cash$ lipo -info libMtimeLibrary.a
Architectures in the fat file: libMtimeLibrary.a are: i386 armv7
cashmatoMacBook-Pro:test cash$

热心网友 时间:2023-09-29 03:39

iPhone如何打包成一个通用的静态库文件(模拟器和真机都可以用)? 1.先来一个必须的命令: ~/Library目录在lion下是默认隐藏的。这样很不方便。用一下命令可以使其显示: chflags nohidden ~/Library 如果想再让其隐藏,可以: chflags hidden ~/...
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
八月中国最凉快的地方 八月份哪里最凉快,去哪旅游好?美丽的地方 乱字同韵字是什么意思 华硕笔记本电脑触摸板怎么开笔记本电脑触摸板怎么开启和关闭_百度知 ... 陕西职务侵占案立案准则 结婚后我的恋情维系了十年,怎么做到的? 玉米仁子饭产自哪里 中国期货交易所的交易品种有哪些? 历史要怎么读,有啥诀窍 高中历史诀窍 lookatthelioninthelibrary是什么意思 如何安装kext&如何修改org,chameleon,boot,... 怎么打开mac系统的library ios 怎么选择podfie进行编译 如何提高ios 静态库的编译速度 mac怎么打开library librarylion绘本中文翻译 lion狮子library图书馆sticker贴纸这些单词都有什... lion中的i和library中的i读音一样吗? Library Lion绘本读后感怎么写?急着用 苹果手机怎么运行安卓app 炒菌子怎么做如何做好吃 野蘑菇的做法 牛干菌子怎么炒好吃 怎么做炒野蘑菇 野菌菇 做法 干菌子炒五花肉的做法,干菌子炒五花肉怎么做 干菌子炒腊肉的做法,干菌子炒腊肉怎么做好吃 炒野蘑菇的家常做法 炒野生蘑菇怎么做好 Look at the lion in the library的中文 苹果Mac系统怎么打开隐藏文件夹Library 如何在苹果笔记本中找到所谓的“~/Library/Preferen... 我的MAC中为什么没有Library/ 文件夹 mac系统下。。。/Users/zhengzhenglei/Library/Mai... 1~6年级全部水果类单词,交通类单词,文具类单词动... 藕粉刚开始是稠的过了一段时间变成水是怎么回事啊 请问:我泡制的藕粉冷却后,为什么变成像水一样的... 为什么抖音买的藕粉吃了一半变成水一样 为什么一次性冲调的藕粉会冲成水状?和生淀粉一样... 为什么藕粉泡好后等水变凉了又变稀了? 为什么藕粉弄出来之后是一碗水啊 为什么藕粉每次冲出都是相水一样而不是粘在一起的 为什么一次性冲调的藕粉会冲成水状??怎么冲泡粘... 藕粉冲熟后颜色不泛红。熟后。20来分钟就会变稀化... 藕粉为何入口即化? 为什么我泡了两包藕粉,都是直接成水状,跟豆奶一... 能不能更改录屏的储存位置? win10自带录像保存位置怎么修改 WIN10-屏幕录制(WIN+G)默认保存位置怎么修改修改?