打包子工程为framework嵌入的另一个工程
首先创建framework工程:
image.png
image.png
如果有pod依赖,把podfile文件复制到该工程目录,pod install
一下
打开工程,将子工程添加到新建的工程中
然后调整如下配置:
pch文件
image.png
改为静态库:
image.png
添加armv7s:
image.png
Build Active Architecture Only修改为NO,yes表示的静态库就只支持当前选择设备的架构
image.png
删除AppDelegate文件:
image.png
如果项目中有swift混编,设置一下swift版本
image.png
如果有混编,要改一下引入的地方:
oc调用swift:
import "工程名/工程名-Swift.h"
image.png
swift调用oc:
import <你的工程名/OC类名.h>
如果有图片:创建****.bundle,然后把图片全部放到这个.bundle目录下
image.png
run改成release模式:
image.png
创建一个文件来调用子工程
//h文件
#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>
#import "BaseViewController.h"
NS_ASSUME_NONNULL_BEGIN
@interface XsWorkHelper : NSObject
- (UIViewController *)getloginControl;
- (void)getConfig;
@end
NS_ASSUME_NONNULL_END
//m文件
#import "XsWorkHelper.h"
#import "client_ios_fm_a//Common/ViewController/MainViewController.h"
#import "client_ios_fm_a/Login/LoginViewController.h"
@implementation XsWorkHelper
- (UITabBarController *)openThisApp {
return (UITabBarController *)[[MainViewController alloc] init];
}
- (UIViewController *)getloginControl {
return (UIViewController *)[[LoginViewController alloc] init];
}
- (void)getConfig {
}
@end
image.png
把文件暴露出来:
image.png
新建一个工程,把framework拖到这个工程里面:
image.png
需要同步的点:
1:把子工程的pod依赖拷过来,pod install一下
2:还有info.plist和子工程的同步一下
3:Project-> Targets-> Build Phases-> Link Binary with Libraries里面把子工程的framework补全一下
4:另外在子工程中APPdelegate中暴露出来的方法,在新的工程中也要添加
5:本地化语言文件,要在新的工程新建一下
然后进行调试就好了。
下面是可能遇到的错误:
错误1和2修复,在项目的targets和pod的project设置都要同步
错误1:
/Users/facilityone/demo/FMVoiceDemo/FMVoiceDemo.xcodeproj The linked and embedded framework 'Pods_FMVoiceDemo.framework' is missing one or more architectures required by this target: armv7, armv7s.
看看后面是armv有几个,然后按照以下修复:
错误2:
2101650421005_.pic.jpg
解决方法:在图中位置添加
EXCLUDED_ARCHS__EFFECTIVE_PLATFORM_SUFFIX_simulator__NATIVE_ARCH_64_BIT_x86_64=arm64 arm64e armv7 armv7s armv6 armv8 EXCLUDED_ARCHS=$(inherited) $(EXCLUDED_ARCHS__EFFECTIVE_PLATFORM_SUFFIX_$(EFFECTIVE_PLATFORM_SUFFIX)__NATIVE_ARCH_64_BIT_$(NATIVE_ARCH_64_BIT))
image.png
错误3:
506 duplicate symbols for architecture arm64
解决方法:
TARGETS -> Build Settings -> No Common Blocks -> No
TARGETS -> Build Settings -> enable testability -> No
错误4:
Library not loaded: @rpath/XCTest.framework/XCTest Referenced from:...Reason: image not found
解决方法:删掉这个xctest.framework