iOS

打包子工程为framework嵌入的另一个工程

2022-04-20  本文已影响0人  菠萝吹雪xs

首先创建framework工程:


image.png
image.png

如果有pod依赖,把podfile文件复制到该工程目录,pod install一下
打开工程,将子工程添加到新建的工程中

image.png
然后调整如下配置:
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有几个,然后按照以下修复:

image.png
错误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

image.png
上一篇下一篇

猜你喜欢

热点阅读