1、新建工程选择iOS —> Cocoa Touch Framework
语言选择OC
2、 进入创建好的工程删除掉自带的工程同名头文件
3、 添加所需文件
https://www.jianshu.com/p/f2bb038db637
||
||
||
||
新建 framwwork以后,
Header Search Paths 中添加引用:
"$(SRCROOT)/../../SDK/inc"
Build Active Architecture Only 设置为NO的意思是当前打包的.framework支持所有的设备.否则打包时只能用当前版本的模拟器或真机运行.
Build Setting 搜索linking
设置Dead Code Stripping 为NO是编译选项优化,包瘦身,(可不改)
Mach-O Type 选中StaticLibrary (静态库) Xcode默认是动态库.
设置framework最低支持的版本,搜索IOS deployment,最低9.0即可
TARGETS —> Build Phases
将需要呈现给来的头文件,直接从Project拖到Public中. 不想呈现出来的.h文件不建议拖到Private中. 放在project中即可
在进行编译之前应该设置为release模式
开始制作:
第一步、新建weex插件扩展模块类JPushPluginModule,注意命名加前缀防止冲突(和weex官方插件扩展方式一样,https://weex.apache.org/zh/guide/extend/extend-ios.html
- #import <Foundation/Foundation.h>
- #import "WXModuleProtocol.h"
- NS_ASSUME_NONNULL_BEGIN
- @interface YOJPushPluginModule : NSObject <WXModuleProtocol>
- @end
- NS_ASSUME_NONNULL_END
- #import <Foundation/Foundation.h>
- #import "YOJPushPluginModule.h"
- #import "WXUtility.h"
- @implementation YOJPushPluginModule;
- @synthesize weexInstance;
- WX_EXPORT_METHOD(@selector(test))
- - (void)dealloc
- {
- [[NSNotificationCenter defaultCenter] removeObserver:self];
- }
- - (instancetype)init
- {
- if (self = [super init]) {
- /* 监听App停止运行事件,例:如果alert存在,调一下dismiss方法移除 */
- // [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(dismiss) name:@"PDRCoreAppDidStopedKey" object:nil];
- }
- return self;
- }
- - (void)test
- {
- NSLog(@"JPUSH success");
- }
- @end
第二步看情况(有需要在app启动时初始化或者获取系统事件用的,可以有第2步,如果没有则跳过这步)
新建weex插件扩展模块类JPushPluginProxy类(注意命名加前缀防止冲突),继承 NSObject
遵守UniPluginProtocol协议 ,用来在app启动时初始化或者获取系统事件用的,这个类尽量不要有其他的过多代码逻辑。如下图:
- #import <Foundation/Foundation.h>
- #import "UniPluginProtocol.h"
- @interface YOJPushPluginProxy : NSObject<UniPluginProtocol>
- @end
- #import "YOJPushPluginProxy.h"
- @implementation YOJPushPluginProxy
- -(void)onCreateUniPlugin{
- NSLog(@"TestJPushPlugin 有需要初始化的逻辑可以放这里!");
- }
- - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{
- NSLog(@"TestJPushPlugin 有需要didFinishLaunchingWithOptions可以放这里!");
- return YES;
- }
- @end
合并真机模拟器版本
内部分为Debug版本和Release版本,同时两者有分为真机版本和模拟器版本framework(iphoneos后缀代表真机版本,iphonesimulator后缀代表模拟器)
因为以上获取的framework只能在对应的版本上运行(即真机只能在设备上运行模拟器版本只能在模拟器上面运行使用)所以需要合并为通用版本
命令行语句:sudo lipo -create (此处请填写真机JPushPlugin文件路径) (此处填写模拟器JPushPlugin文件路径) -output 自定义合成文件存储路径(合成文件的名字JPushPlugin)
打开终端使用命令行 lipo -info 查看framework架构信息