Commit 1da105e4 authored by 陈业泓's avatar 陈业泓

docs(文档):私有库步骤

parent 6b048fba
步骤一:
在gitlab新建两个仓库:
1.SYCSDKSpec,作为索引仓,记得开放Public权限
2.SYCSDK,作为sdk仓,记得开放Public权限
步骤二:
执行命令行:git clone http://139.159.244.151:2900/chenyehong/SYCSDK.git
把空的SDK仓clone到本地
步骤三:
1.在其它位置新建tmp文件夹
2.在tmp文件夹里面执行命令:pod lib create SYCSDK
(失败就使用代理)
3.依照填写
What platform do you want to use?? [ iOS / macOS ]
> iOS
What language do you want to use?? [ Swift / ObjC ]
> ObjC
Would you like to include a demo application with your library? [ Yes / No ]
> Yes
Which testing frameworks will you use? [ Specta / Kiwi / None ]
> None
Would you like to do view based testing? [ Yes / No ]
> No
What is your class prefix?
> SLM
步骤四:
1.进入tmp/SYCSDK里面,把里面的文件(.git文件夹除外)全部剪切到刚clone到本地的SYCSDK文件夹里面
2.此时可以把tmp文件夹删掉
3.打开SYCSDK/SYCSDK.podspec编辑重点修改:
s.homepage = 'http://www.shengyc.com/'
s.source = { :git => 'http://139.159.244.151:2900/chenyehong/SYCSDK.git', :tag => s.version.to_s }
(其它根据情况修改)
步骤五:
1.把SDK的.h.m文件拷贝到SYCSDK/SYCSDK/Classes
2.进入SYCSDK/Example,执行命令pod install
3.SYCSDK.xcworkspace,尝试调用SDK的文件,看看是否有问题
步骤六:
1.回到SYCSDK目录,执行命令pod lib lint --allow-warnings
2.如果没问题,会打印SYCSDK passed validation.
步骤七:
1.在SYCSDK目录,执行命令:
(其中一个操作可能要输入gitlab账号和密码)
git add .
git commit -m "提交SDK代码"
git tag -a 0.1.0 -m "和podspec文件的s.version 保持一致"
git push origin --tags
git push
步骤八:
在当前目录下,执行命令pod repo add SYCSDKSpec http://139.159.244.151:2900/chenyehong/SYCSDKSpec.git
如果成功 ,会在隐藏目录 ~/.cocoapods/repos目录下生成SYCSDKSpec文件
步骤九:
在当前目录下,执行命令pod repo push SYCSDKSpec SYCSDK.podspec --allow-warnings --verbose
直到打印** BUILD SUCCEEDED **
步骤十:
执行命令pod search SYCSDK
查看验证,第一次时间可能有点久
步骤十一:
1.在自己的项目里,编辑Podfile文件:
source 'http://139.159.244.151:2900/chenyehong/SYCSDKSpec.git'
source 'https://github.com/CocoaPods/Specs.git'
# Uncomment the next line to define a global platform for your project
# platform :ios, '9.0'
target 'DemoTest' do
# Comment the next line if you don't want to use dynamic frameworks
use_frameworks!
# Pods for DemoTest
pod 'SYCSDK', '~> 0.1.0'
2.执行pod install
别人第一次使用这个私有库:
1.执行命令pod repo add SYCSDKSpec http://139.159.244.151:2900/chenyehong/SYCSDKSpec.git
2.执行命令pod repo update SYCSDKSpec
别人如果要使用你私有库的,就给对方上面的这2条命令 ,让对方把你的spec索引目录下载到本地 ,就可以pod search SYCSDK了
3.修改Podfile文件:
source 'http://139.159.244.151:2900/chenyehong/SYCSDKSpec.git'
source 'https://github.com/CocoaPods/Specs.git'
pod 'SYCSDK', '~> 0.1.0'
4.执行命令pod install
其他人更新私有库版本:
1.执行命令pod repo update SYCSDKSpec
2.修改Podfile文件:
source 'http://139.159.244.151:2900/chenyehong/SYCSDKSpec.git'
source 'https://github.com/CocoaPods/Specs.git'
pod 'SYCSDK', '~> 0.1.1'
3.执行命令pod install
\ No newline at end of file
更新之前:
1.进入SYCSDK/Classes修改里面的sdk代码
2.打开SYCSDK.podspec看看是否需要修改目录结构,第三方依赖等
3.进入Example执行命令pod install
4.打开SYCSDK.xcworkspace尝试调用刚刚修改的sdk代码
步骤一:
1.修改podspec文件的版本号
例如:s.version = '0.1.0' -> s.version = '0.1.1'
步骤二:
在SYCSDK目录,执行命令:
git add .
git commit -m "更新了SDK代码"
git tag -a 0.1.1 -m "添加0.1.1tag"
git push origin --tags
git push
步骤三:
pod repo push SYCSDKSpec SYCSDK.podspec --allow-warnings --verbose
** BUILD SUCCEEDED **
...(看看有没有错误信息)
步骤四:
pod repo update SYCSDKSpec
看看是否更新到最新tag
步骤五:
修改Podfile文件:
pod 'SYCSDK', '~> 0.1.1'
步骤六:
pod install
\ No newline at end of file
//
// UMAPMConfig.h
// UMAPM
//
// Created by zhangjunhua on 2021/6/21.
// Copyright © 2021 wangkai. All rights reserved.
//
#import <Foundation/Foundation.h>
NS_ASSUME_NONNULL_BEGIN
@interface UMAPMConfig : NSObject<NSCopying>
+(UMAPMConfig*)defaultConfig;
/**
* crash&卡顿监控开关,默认开启
*/
@property (nonatomic,assign) BOOL crashAndBlockMonitorEnable;
/**
* 启动模块监控开关,默认开启
*/
@property (nonatomic,assign) BOOL launchMonitorEnable;
/**
* 内存模块监控开关,默认开启
*/
@property (nonatomic,assign) BOOL memMonitorEnable;
/**
* OOM模块监控开关,默认开启
*/
@property (nonatomic,assign) BOOL oomMonitorEnable;
/**
* 网络模块监控开关,默认开启
*/
@property (nonatomic,assign) BOOL networkEnable;
/**
*集成测试。
*/
+ (BOOL)handleUrl:(NSURL *)url;
@end
NS_ASSUME_NONNULL_END
//
// UMCrashConfigure.h
// UMCrash
//
// Created by wangkai on 2020/9/3.
// Copyright © 2020 wangkai. All rights reserved.
//
#import <Foundation/Foundation.h>
typedef NSString *_Nullable(^CallbackBlock)(void);
FOUNDATION_EXPORT NSString * _Nonnull const UMReportExceptionNameForCSharp;
@class UMAPMConfig;
@interface UMCrashConfigure : NSObject
//获取sdk版本号
+ (NSString *_Nonnull)getVersion;
//return字符串不能大于256字节,大于部分将被截取
+ (void)setCrashCBBlock:(CallbackBlock _Nullable )cbBlock;
/**
* 设置自定义版本号和build版本号即子版本号 (需要在初始化appkey方法之前调用)
*/
+ (void)setAppVersion:( NSString * __nonnull )appVersion buildVersion:(NSString* __nullable)buildVersion;
/**
* 设置APM的各个模块的开启/关闭配置(需要在初始化appkey方法之前调用)
*/
+(void)setAPMConfig:(UMAPMConfig*_Nonnull)config;
/**
* @brief 设置APM的网络模块针对iOS13及以下系统的单独开关,以避免在同时集成NSURLProtocol和APM的网络模块的本身冲突引起崩溃。
* 如果需要调用,在初始化UAPM网络模块前调用。
*
* @param enable 指定开关。YES:(捕获iOS13及以下特定网络请求,默认开启)。NO:不捕获iOS13及以下特定网络请求。
*
* @note 问题原因:同时集成NSURLProtocol和APM的网络模块的场景,先初始化APM的网络模块,再初始化NSURLProtocol的registerClass,会导致崩溃在iOS13及以下版本会崩溃,目前可以确定为iOS系统API引起的问题,iOS14无此问题。(先初始化NSURLProtocol的registerClass,再初始化APM的网络模块,是不会出现问题的)
* 兼容iOS13及以下的初始化代码如下:
* @example:
* //确保NSURLProtocol的初始化在UMAPM的上面
* [NSURLProtocol registerClass:[UMURLProtocol class]];
* UMAPMConfig* config = [UMAPMConfig defaultConfig];
* config.networkEnable = YES;
* [UMCrashConfigure setAPMConfig:config];
* [UMConfigure initWithAppkey:UMAPPKEY channel:@"App Store"];
*
* @note
* 此开关默认打开,在同时集成NSURLProtocol和APM的网络模块的场景时候,根据需要调用,如果按照上述初始化顺序,不需要调用。
*
* @note 此函数关闭生效后,不会完全关闭网络模块,只是针对特定网络请求不再捕获,如果开发者能知道同时集成NSURLProtocol和APM的网络模块的场景的时候,最好通过调整初始化顺利来兼容所有场景,并在iOS13及以下版本测试兼容性。
* @note:其他场景下,不需要调用此函数。
*/
+(void)enableNetworkForProtocol:(BOOL)enable;
/**
* 上报自定义错误
* 用户可以用SDK预定义的字符串UMReportExceptionNameForCSharp来传递csharp类型的自定义异常
* @name 名称 长度限制256字节以内,超过截断。
* @reason 错误原因 长度限制256字节以内,超过截断。
* @stackTrace 堆栈 长度限制100*1024字节以内,超过截断。
*
* @example:
* // 日志类型唯一标识
NSString* name = @"csharp";
NSString* reason = @"csharp exception";
NSArray* stackTrace = [NSArray arrayWithObjects:
@"msg: Exception: Exception, Attempted to divide by zero.",
@"UnityDemo+ExceptionProbe.NormalException () (at <unknown>:0)",
@"UnityDemo.TrigException (System.Int32 selGridInt) (at <unknown>:0)",
@"UnityDemo.OnGUI () (at <unknown>:0)",
nil];
*
*[UMCrashConfigure reportExceptionWithName:name reason:reason stackTrace:stackTrace];
*
*
*/
+(void)reportExceptionWithName:(NSString* _Nonnull)name
reason:(NSString* _Nonnull)reason
stackTrace:(NSArray* _Nonnull)stackTrace;
@end
//
// UMLaunch.h
// WPKCore
//
// Created by zhangjunhua on 2021/4/20.
// Copyright © 2021 uc. All rights reserved.
//
#import <Foundation/Foundation.h>
NS_ASSUME_NONNULL_BEGIN
//冷启动的预定义类型
typedef NS_ENUM(NSInteger,UMPredefineLaunchType){
UMPredefineLaunchType_DidFinishLaunchingEnd,//在didFinishLaunchingWithOptions的最后一句设置
UMPredefineLaunchType_ViewDidLoadEnd,//在第一个ViewController的viewDidLoad函数的最后调用
UMPredefineLaunchType_ViewDidAppearEnd//在第一个ViewController的viewDidAppear函数的最后调用
};
@interface UMLaunch : NSObject
+(instancetype)shareInstance;
+(void)setRootVCCls:(Class)cls;//在DidFinishLaunching第一句代码提前设置RootViewController
/*
* 手动设置三个预定义时间结束时间(初始化耗时结束,应用构建耗时结束,页面加载耗时结束)
*/
+(void)setPredefineLaunchType:(UMPredefineLaunchType)predefineLaunchType;
/*
* 用户在冷启动阶段设置自己的自定义阶段
* @note beginLaunch和endLaunch必须要配对调用
* 如果调用时间段,不在页面加载耗时结束前调用,是不会上报的
*/
+ (void)beginLaunch:(NSString *)methodName;
+ (void)endLaunch:(NSString *)methodName;
/*
* 开启关闭启动模块采集
*/
+(void)setLaunchEnable:(BOOL)enable;
@end
NS_ASSUME_NONNULL_END
Versions/Current/Headers
\ No newline at end of file
Versions/Current/UMCommon
\ No newline at end of file
//
// MobClick.h
// Analytics
//
// Copyright (C) 2010-2017 Umeng.com . All rights reserved.
#import <UIKit/UIKit.h>
#import <Foundation/Foundation.h>
@class CLLocation;
@interface MobClick : NSObject
#pragma mark basics
///---------------------------------------------------------------------------------------
/// @name 设置
///---------------------------------------------------------------------------------------
#pragma mark event logs
///---------------------------------------------------------------------------------------
/// @name 页面计时
///---------------------------------------------------------------------------------------
/** 手动页面时长统计, 记录某个页面展示的时长.
@param pageName 统计的页面名称.
@param seconds 单位为秒,int型.
@return void.
*/
+ (void)logPageView:(NSString *)pageName seconds:(int)seconds;
/** 自动页面时长统计, 开始记录某个页面展示时长.
使用方法:必须配对调用beginLogPageView:和endLogPageView:两个函数来完成自动统计,若只调用某一个函数不会生成有效数据。
在该页面展示时调用beginLogPageView:,当退出该页面时调用endLogPageView:
@param pageName 统计的页面名称.
@return void.
*/
+ (void)beginLogPageView:(NSString *)pageName;
/** 自动页面时长统计, 结束记录某个页面展示时长.
使用方法:必须配对调用beginLogPageView:和endLogPageView:两个函数来完成自动统计,若只调用某一个函数不会生成有效数据。
在该页面展示时调用beginLogPageView:,当退出该页面时调用endLogPageView:
@param pageName 统计的页面名称.
@return void.
*/
+ (void)endLogPageView:(NSString *)pageName;
///---------------------------------------------------------------------------------------
/// @name 事件统计
///---------------------------------------------------------------------------------------
/** 自定义事件,数量统计.
使用前,请先到友盟App管理后台的设置->编辑自定义事件 中添加相应的事件ID,然后在工程中传入相应的事件ID
@param eventId 网站上注册的事件Id.
@param label 分类标签。不同的标签会分别进行统计,方便同一事件的不同标签的对比,为nil或空字符串时后台会生成和eventId同名的标签.
@param accumulation 累加值。为减少网络交互,可以自行对某一事件ID的某一分类标签进行累加,再传入次数作为参数。
@return void.
*/
+ (void)event:(NSString *)eventId; //等同于 event:eventId label:eventId;
/** 自定义事件,数量统计.
使用前,请先到友盟App管理后台的设置->编辑自定义事件 中添加相应的事件ID,然后在工程中传入相应的事件ID
*/
+ (void)event:(NSString *)eventId label:(NSString *)label; // label为nil或@""时,等同于 event:eventId label:eventId;
/** 自定义事件,数量统计.
使用前,请先到友盟App管理后台的设置->编辑自定义事件 中添加相应的事件ID,然后在工程中传入相应的事件ID
*/
+ (void)event:(NSString *)eventId attributes:(NSDictionary *)attributes;
+ (void)event:(NSString *)eventId attributes:(NSDictionary *)attributes counter:(int)number;
/** 自定义事件,时长统计.
使用前,请先到友盟App管理后台的设置->编辑自定义事件 中添加相应的事件ID,然后在工程中传入相应的事件ID.
beginEvent,endEvent要配对使用,也可以自己计时后通过durations参数传递进来
@param eventId 网站上注册的事件Id.
@param label 分类标签。不同的标签会分别进行统计,方便同一事件的不同标签的对比,为nil或空字符串时后台会生成和eventId同名的标签.
@param primarykey 这个参数用于和event_id一起标示一个唯一事件,并不会被统计;对于同一个事件在beginEvent和endEvent 中要传递相同的eventId 和 primarykey
@param millisecond 自己计时需要的话需要传毫秒进来
@return void.
@warning 每个event的attributes不能超过100个
eventId、attributes中key和value都不能使用空格和特殊字符,必须是NSString,且长度不能超过255个字符(否则将截取前255个字符)
id, ts, du是保留字段,不能作为eventId及key的名称
*/
+ (void)beginEvent:(NSString *)eventId;
/** 自定义事件,时长统计.
使用前,请先到友盟App管理后台的设置->编辑自定义事件 中添加相应的事件ID,然后在工程中传入相应的事件ID.
*/
+ (void)endEvent:(NSString *)eventId;
/** 自定义事件,时长统计.
使用前,请先到友盟App管理后台的设置->编辑自定义事件 中添加相应的事件ID,然后在工程中传入相应的事件ID.
*/
+ (void)beginEvent:(NSString *)eventId label:(NSString *)label;
/** 自定义事件,时长统计.
使用前,请先到友盟App管理后台的设置->编辑自定义事件 中添加相应的事件ID,然后在工程中传入相应的事件ID.
*/
+ (void)endEvent:(NSString *)eventId label:(NSString *)label;
/** 自定义事件,时长统计.
使用前,请先到友盟App管理后台的设置->编辑自定义事件 中添加相应的事件ID,然后在工程中传入相应的事件ID.
*/
+ (void)beginEvent:(NSString *)eventId primarykey :(NSString *)keyName attributes:(NSDictionary *)attributes;
/** 自定义事件,时长统计.
使用前,请先到友盟App管理后台的设置->编辑自定义事件 中添加相应的事件ID,然后在工程中传入相应的事件ID.
*/
+ (void)endEvent:(NSString *)eventId primarykey:(NSString *)keyName;
/** 自定义事件,时长统计.
使用前,请先到友盟App管理后台的设置->编辑自定义事件 中添加相应的事件ID,然后在工程中传入相应的事件ID.
*/
+ (void)event:(NSString *)eventId durations:(int)millisecond;
/** 自定义事件,时长统计.
使用前,请先到友盟App管理后台的设置->编辑自定义事件 中添加相应的事件ID,然后在工程中传入相应的事件ID.
*/
+ (void)event:(NSString *)eventId label:(NSString *)label durations:(int)millisecond;
/** 自定义事件,时长统计.
使用前,请先到友盟App管理后台的设置->编辑自定义事件 中添加相应的事件ID,然后在工程中传入相应的事件ID.
*/
+ (void)event:(NSString *)eventId attributes:(NSDictionary *)attributes durations:(int)millisecond;
#pragma mark - user methods
/** active user sign-in.
使用sign-In函数后,如果结束该PUID的统计,需要调用sign-Off函数
@param puid : user's ID
@param provider : 不能以下划线"_"开头,使用大写字母和数字标识; 如果是上市公司,建议使用股票代码。
@return void.
*/
+ (void)profileSignInWithPUID:(NSString *)puid;
+ (void)profileSignInWithPUID:(NSString *)puid provider:(NSString *)provider;
/** active user sign-off.
停止sign-in PUID的统计
@return void.
*/
+ (void)profileSignOff;
///---------------------------------------------------------------------------------------
/// @name 地理位置设置
/// 需要链接 CoreLocation.framework 并且 #import <CoreLocation/CoreLocation.h>
///---------------------------------------------------------------------------------------
/** 设置经纬度信息
@param latitude 纬度.
@param longitude 经度.
@return void
*/
+ (void)setLatitude:(double)latitude longitude:(double)longitude;
/** 设置经纬度信息
@param location CLLocation 经纬度信息
@return void
*/
+ (void)setLocation:(CLLocation *)location;
///---------------------------------------------------------------------------------------
/// @name Utility函数
///---------------------------------------------------------------------------------------
/** 判断设备是否越狱,依据是否存在apt和Cydia.app
*/
+ (BOOL)isJailbroken;
/** 判断App是否被破解
*/
+ (BOOL)isPirated;
/** 设置 app secret
@param secret string
@return void.
*/
+ (void)setSecret:(NSString *)secret;
/**
* 设置预置事件属性 键值对 会覆盖同名的key
*/
+(void) registerPreProperties:(NSDictionary *)property;
/**
*
* 删除指定预置事件属性
@param key
*/
+(void) unregisterPreProperty:(NSString *)propertyName;
/**
* 获取预置事件所有属性;如果不存在,则返回空。
*/
+(NSDictionary *)getPreProperties;
/**
*清空所有预置事件属性。
*/
+(void)clearPreProperties;
/**
* 设置关注事件是否首次触发,只关注eventList前五个合法eventID.只要已经保存五个,此接口无效
*/
+(void)setFirstLaunchEvent:(NSArray *)eventList;
/** 设置是否自动采集页面, 默认NO(不自动采集).
@param value 设置为YES, umeng SDK 会将自动采集页面信息
*/
+ (void)setAutoPageEnabled:(BOOL)value;
@end
//
// UMCommon.h
// UMCommon
//
// Created by San Zhang on 11/2/16.
// Copyright © 2016 UMeng. All rights reserved.
//
#import <UIKit/UIKit.h>
//! Project version number for UMCommon.
FOUNDATION_EXPORT double UMCommonVersionNumber;
//! Project version string for UMCommon.
FOUNDATION_EXPORT const unsigned char UMCommonVersionString[];
// In this header, you should import all the public headers of your framework using statements like #import <UMCommon/PublicHeader.h>
#import <UMCommon/UMConfigure.h>
//
// UMConfigure.h
// UMCommon
//
// Created by San Zhang on 9/6/16.
// Copyright © 2016 UMeng. All rights reserved.
//
#import <Foundation/Foundation.h>
@interface UMConfigure : NSObject
/** 初始化友盟所有组件产品
@param appKey 开发者在友盟官网申请的appkey.
@param channel 渠道标识,可设置nil表示"App Store".
*/
+ (void)initWithAppkey:(NSString *)appKey channel:(NSString *)channel;
/** 设置是否在console输出sdk的log信息.
@param bFlag 默认NO(不输出log); 设置为YES, 输出可供调试参考的log信息. 发布产品时必须设置为NO.
*/
+ (void)setLogEnabled:(BOOL)bFlag;
/** 设置是否对日志信息进行加密, 默认NO(不加密).
@param value 设置为YES, umeng SDK 会将日志信息做加密处理
*/
+ (void)setEncryptEnabled:(BOOL)value;
+ (NSString *)umidString;
/**
集成测试需要device_id
*/
+ (NSString*)deviceIDForIntegration;
/** 是否开启统计,默认为YES(开启状态)
@param value 设置为NO,可关闭友盟统计功能.
@return void.
*/
+ (void)setAnalyticsEnabled:(BOOL)value;
//获取zid
+ (NSString *)getUmengZID;
@end
//
// UMZid.h
// UMZid
//
// Created by UMZid on 8/29/20.
// Copyright © 2020 UMZid. All rights reserved.
// v2.2.1
#import <Foundation/Foundation.h>
@interface UMZid : NSObject
/// SDK初始化,异步请求uToken
/// @param appkey appkey
/// @param completion 请求uToken的回调,uToken为返回值,如果失败,uToken为空字符串@“”
+ (void)initWithAppKey:(NSString *)appkey completion:(void (^)(NSString *uToken))completion;
/// 同步获得uToken,失败返回空字符串@“”
+ (NSString *)getZID;
/// 获取SDK版本号
+ (NSString *)getSDKVersion;
/// 获得resetToken
+ (NSString *)getResetToken;
/// 获得at
+ (NSString *)getATStr;
@end
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment