Skip to content
This repository has been archived by the owner on Jun 3, 2021. It is now read-only.

Commit

Permalink
[WEEX-552][iOS] apm for ios (#1412)
Browse files Browse the repository at this point in the history
* [iOS] more info
use new protocol WXApmProtocol to record weex page performance
    record stage (download -> success/falied -> renderStart -> fsRenderTime -> interactionTime -> destroy)
    record property , such as wxInstanceType(page/embed) ,wxParentPage(for embed) ...
    record stats : wxBundleSize、wxMaxDeepVDomLayer、wxCellUnReUseCount
    reord event : gc、press home  and so on (not impl now)
deprecated WXMonitor
more performance point
add WXApmGeneratorImpl (WXApmProtocol impl case ) in demo
  • Loading branch information
lucky-chen authored and cxfeng1 committed Aug 9, 2018
1 parent 6e680c2 commit 539621f
Show file tree
Hide file tree
Showing 28 changed files with 810 additions and 19 deletions.
12 changes: 12 additions & 0 deletions ios/playground/WeexDemo.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@
objects = {

/* Begin PBXBuildFile section */
17036A5720FDF9AA0029AE3D /* WXApmGeneratorImpl.m in Sources */ = {isa = PBXBuildFile; fileRef = 17036A5620FDF9AA0029AE3D /* WXApmGeneratorImpl.m */; };
17036A5A20FDF9DF0029AE3D /* WXApmImpl.m in Sources */ = {isa = PBXBuildFile; fileRef = 17036A5920FDF9DF0029AE3D /* WXApmImpl.m */; };
17C1DB57206B675D000E0CEB /* DebugAnzlyzer.m in Sources */ = {isa = PBXBuildFile; fileRef = 17C1DB56206B675D000E0CEB /* DebugAnzlyzer.m */; };
2AE88A2C1C8544E6003329DE /* WXScannerVC.m in Sources */ = {isa = PBXBuildFile; fileRef = 2AE88A2B1C8544E6003329DE /* WXScannerVC.m */; };
564B94671DD9C65000441C8D /* WeexUITestDemo-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = 564B94661DD9C65000441C8D /* WeexUITestDemo-Info.plist */; };
Expand Down Expand Up @@ -67,6 +69,10 @@
/* End PBXContainerItemProxy section */

/* Begin PBXFileReference section */
17036A5520FDF9AA0029AE3D /* WXApmGeneratorImpl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = WXApmGeneratorImpl.h; path = extend/handler/WXApmGeneratorImpl.h; sourceTree = "<group>"; };
17036A5620FDF9AA0029AE3D /* WXApmGeneratorImpl.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = WXApmGeneratorImpl.m; path = extend/handler/WXApmGeneratorImpl.m; sourceTree = "<group>"; };
17036A5820FDF9DF0029AE3D /* WXApmImpl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = WXApmImpl.h; path = extend/handler/WXApmImpl.h; sourceTree = "<group>"; };
17036A5920FDF9DF0029AE3D /* WXApmImpl.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = WXApmImpl.m; path = extend/handler/WXApmImpl.m; sourceTree = "<group>"; };
17C1DB55206B6729000E0CEB /* DebugAnalyzer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = DebugAnalyzer.h; path = debug/DebugAnalyzer.h; sourceTree = "<group>"; };
17C1DB56206B675D000E0CEB /* DebugAnzlyzer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = DebugAnzlyzer.m; path = debug/DebugAnzlyzer.m; sourceTree = "<group>"; };
1888E2C5769382461DEDC97D /* Pods-WeexUITestDemo.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-WeexUITestDemo.release.xcconfig"; path = "Pods/Target Support Files/Pods-WeexUITestDemo/Pods-WeexUITestDemo.release.xcconfig"; sourceTree = "<group>"; };
Expand Down Expand Up @@ -336,6 +342,10 @@
DC20B8E51ECADA2500845F39 /* WXConfigCenterDefaultImpl.m */,
DCABAFFC1D029753001C8592 /* WXImgLoaderDefaultImpl.h */,
DCABAFFD1D029753001C8592 /* WXImgLoaderDefaultImpl.m */,
17036A5520FDF9AA0029AE3D /* WXApmGeneratorImpl.h */,
17036A5620FDF9AA0029AE3D /* WXApmGeneratorImpl.m */,
17036A5820FDF9DF0029AE3D /* WXApmImpl.h */,
17036A5920FDF9DF0029AE3D /* WXApmImpl.m */,
);
name = handler;
sourceTree = "<group>";
Expand Down Expand Up @@ -625,6 +635,7 @@
DCABAFF31D029685001C8592 /* WXATLoggerPlugin.m in Sources */,
DC15A3D0200E30FC009C8977 /* WXNavigationHandlerImpl.m in Sources */,
2AE88A2C1C8544E6003329DE /* WXScannerVC.m in Sources */,
17036A5720FDF9AA0029AE3D /* WXApmGeneratorImpl.m in Sources */,
775BEE861C1E8ECC008D1629 /* WXDemoViewController.m in Sources */,
DC5B53691E8CED9400E02125 /* WXScannerHistoryVC.m in Sources */,
74CC79EB1C2B9E4700829368 /* UIViewController+WXDemoNaviBar.m in Sources */,
Expand All @@ -633,6 +644,7 @@
775BEE831C1E8ECC008D1629 /* AppDelegate.m in Sources */,
847CAF311F39E3F100551725 /* WXExtModule.m in Sources */,
DC15A3C7200C505C009C8977 /* WXTitleBarModule.m in Sources */,
17036A5A20FDF9DF0029AE3D /* WXApmImpl.m in Sources */,
DC20B8E61ECADA2500845F39 /* WXConfigCenterDefaultImpl.m in Sources */,
DCABAFF41D029685001C8592 /* WXATViewHierarchyPlugin.m in Sources */,
775BEE801C1E8ECC008D1629 /* main.m in Sources */,
Expand Down
2 changes: 2 additions & 0 deletions ios/playground/WeexDemo/AppDelegate.m
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@
#import "WXConfigCenterDefaultImpl.h"
#import "WXNavigationHandlerImpl.h"
//#import "WXAnalyzerCenter.h"
#import "WXApmGeneratorImpl.h"


#ifdef DEBUG
Expand Down Expand Up @@ -123,6 +124,7 @@ - (void)initWeexSDK
[WXSDKEngine registerHandler:[WXEventModule new] withProtocol:@protocol(WXEventModuleProtocol)];
[WXSDKEngine registerHandler:[WXConfigCenterDefaultImpl new] withProtocol:@protocol(WXConfigCenterProtocol)];
[WXSDKEngine registerHandler:[WXNavigationHandlerImpl new] withProtocol:@protocol(WXNavigationProtocol)];
[WXSDKEngine registerHandler:[WXApmGeneratorImpl new] withProtocol:@protocol(WXApmGeneratorProtocol)];

[WXSDKEngine registerComponent:@"select" withClass:NSClassFromString(@"WXSelectComponent")];
[WXSDKEngine registerModule:@"event" withClass:[WXEventModule class]];
Expand Down
6 changes: 6 additions & 0 deletions ios/playground/WeexDemo/extend/handler/WXApmGeneratorImpl.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
#import <Foundation/Foundation.h>
#import "WXApmProtocol.h"

@interface WXApmGeneratorImpl : NSObject <WXApmGeneratorProtocol>

@end
12 changes: 12 additions & 0 deletions ios/playground/WeexDemo/extend/handler/WXApmGeneratorImpl.m
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
#import "WXApmGeneratorImpl.h"
#import "WXApmImpl.h"

@implementation WXApmGeneratorImpl

- (id<WXApmProtocol>)gengratorApmInstance:(NSString *) type
{
id<WXApmProtocol> instance = [[WXApmImpl alloc] init];
return instance;
}

@end
6 changes: 6 additions & 0 deletions ios/playground/WeexDemo/extend/handler/WXApmImpl.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
#import <Foundation/Foundation.h>
#import "WXApmProtocol.h"

@interface WXApmImpl : NSObject <WXApmProtocol>

@end
110 changes: 110 additions & 0 deletions ios/playground/WeexDemo/extend/handler/WXApmImpl.m
Original file line number Diff line number Diff line change
@@ -0,0 +1,110 @@

#import "WXApmImpl.h"
#import "WXUtility.h"

@interface WXApmImpl()
@property(nonatomic,strong) NSMutableDictionary<NSString*,NSNumber*>* stageMap;
@property(nonatomic,strong) NSMutableDictionary<NSString*,id>* propertyMap;
@property(nonatomic,strong) NSMutableDictionary<NSString*,NSNumber*>* statisticMap;
@property(nonatomic,strong) NSMutableDictionary<NSString*,id>* eventMap;

@end

@implementation WXApmImpl

- (instancetype)init
{
self = [super init];
if (self) {
_stageMap = [[NSMutableDictionary alloc] init];
_propertyMap = [[NSMutableDictionary alloc] init];
_statisticMap = [[NSMutableDictionary alloc] init];
_eventMap = [[NSMutableDictionary alloc] init];
}
return self;
}


- (void) onStart:(NSString *)instanceId topic:(NSString *)topic
{

}

- (void) onEnd
{
[self _printApmInfo];
}

- (void) onEvent:(NSString *)name withValue:(id)value
{
[self.eventMap setObject:value forKey:name];
}

- (void) onStage:(NSString *)name withValue:(long)timestamp
{
[self.stageMap setObject:[NSNumber numberWithLong:timestamp] forKey:name];
}

- (void) addProperty:(NSString *)name withValue:(id)value
{
[self.propertyMap setObject:value forKey:name];
}

- (void) addStatistic:(NSString *)name withValue:(double)value
{
[self.statisticMap setObject:[NSNumber numberWithDouble:value] forKey:name];
}

- (void) addBiz:(NSString *)bizID withValue:(NSDictionary *)properties
{

}

- (void) addBizAbTest:(NSString *)bizID withValue:(NSDictionary *)abTest
{

}

- (void) addBizStage:(NSString *)bizID withValue:(NSDictionary *)stage
{

}

- (void) onSubProcedureBegin:(NSString *)subProcedureName
{

}

- (void) onSubProcedureEndFailed:(NSString *)subProcedureName
{

}

- (void) onSubProcedureEndSucceed:(NSString *)subProcedureName
{

}

- (void)pauseApmRecord {

}


- (void)resumeApmRecord {

}


- (void) _printApmInfo
{
NSDictionary* InfoMap = @{
@"stage":self.stageMap,
@"property":self.propertyMap,
@"statistic":self.statisticMap,
@"event":self.eventMap
};
NSString* jsonStr = [WXUtility JSONString:InfoMap];
NSLog(@"wxApmForInstance :%@",jsonStr);
}

@end
38 changes: 38 additions & 0 deletions ios/playground/WeexDemo/extend/handler/WXImgLoaderDefaultImpl.m
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,8 @@

#import "WXImgLoaderDefaultImpl.h"
#import <SDWebImage/UIImageView+WebCache.h>
#import "WXLog.h"
#import "WXSDKManager.h"

#define MIN_IMAGE_WIDTH 36
#define MIN_IMAGE_HEIGHT 36
Expand Down Expand Up @@ -48,6 +50,7 @@ @implementation WXImgLoaderDefaultImpl

- (id<WXImageOperationProtocol>)downloadImageWithURL:(NSString *)url imageFrame:(CGRect)imageFrame userInfo:(NSDictionary *)userInfo completed:(void(^)(UIImage *image, NSError *error, BOOL finished))completedBlock
{
[self _recoredImgLoad:url options:userInfo];
if ([url hasPrefix:@"//"]) {
url = [@"http:" stringByAppendingString:url];
}
Expand All @@ -57,11 +60,13 @@ @implementation WXImgLoaderDefaultImpl
if (completedBlock) {
completedBlock(image, error, finished);
}
[self _recoredFinish:imageURL error:error loadOptions:userInfo];
}];
}

- (void)setImageViewWithURL:(UIImageView *)imageView url:(NSURL *)url placeholderImage:(UIImage *)placeholder options:(NSDictionary *)options progress:(void (^)(NSInteger, NSInteger))progressBlock completed:(void (^)(UIImage *, NSError *, WXImageLoaderCacheType, NSURL *))completedBlock
{
[self _recoredImgLoad:url.absoluteString options:options];
SDWebImageOptions sdWebimageOption = SDWebImageRetryFailed;
if (options && options[@"sdWebimageOption"]) {
[options[@"sdWebimageOption"] intValue];
Expand All @@ -75,7 +80,40 @@ - (void)setImageViewWithURL:(UIImageView *)imageView url:(NSURL *)url placeholde
if (completedBlock) {
completedBlock(image, error, (WXImageLoaderCacheType)cacheType, imageURL);
}
[self _recoredFinish:imageURL error:error loadOptions:options];
}];
}

- (void) _recoredImgLoad:(NSString *)url options:(NSDictionary *)options
{
if (nil == url) {
return;
}
NSString* instanceId = [options objectForKey:@"instanceId"];
if (nil == instanceId) {
WXLogWarning(@"please set instanceId in userInfo,for url %@:",url);
return;
}
WXSDKInstance* instance =[WXSDKManager instanceForID:instanceId];
if (nil == instance) {
return;
}
[instance.apmInstance updateDiffStats:KEY_PAGE_STATS_IMG_LOAD_NUM withDiffValue:1];
}

- (void) _recoredFinish:(NSURL*)imgUrl error:(NSError*)error loadOptions:(NSDictionary*)options
{
NSString* instanceId = [options objectForKey:@"instanceId"];
if (nil == instanceId) {
WXLogWarning(@"please set instanceId in userInfo,for url %@:",imgUrl.absoluteString);
return;
}
WXSDKInstance* instance =[WXSDKManager instanceForID:instanceId];
if (nil == instance) {
return;
}
bool loadSucceed = error == nil;
[instance.apmInstance actionImgLoadResult:loadSucceed withErrorCode:nil];
}

@end
36 changes: 36 additions & 0 deletions ios/sdk/WeexSDK.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,12 @@

/* Begin PBXBuildFile section */
042013AD1E66CD6A001FC79C /* WXValidateProtocol.h in Headers */ = {isa = PBXBuildFile; fileRef = 042013AC1E66CD6A001FC79C /* WXValidateProtocol.h */; settings = {ATTRIBUTES = (Public, ); }; };
17036A4E20FDE72F0029AE3D /* WXApmForInstance.h in Headers */ = {isa = PBXBuildFile; fileRef = 17036A4C20FDE72F0029AE3D /* WXApmForInstance.h */; settings = {ATTRIBUTES = (Public, ); }; };
17036A4F20FDE72F0029AE3D /* WXApmForInstance.h in Headers */ = {isa = PBXBuildFile; fileRef = 17036A4C20FDE72F0029AE3D /* WXApmForInstance.h */; settings = {ATTRIBUTES = (Public, ); }; };
17036A5020FDE72F0029AE3D /* WXInstanceApm.m in Sources */ = {isa = PBXBuildFile; fileRef = 17036A4D20FDE72F0029AE3D /* WXInstanceApm.m */; };
17036A5120FDE72F0029AE3D /* WXInstanceApm.m in Sources */ = {isa = PBXBuildFile; fileRef = 17036A4D20FDE72F0029AE3D /* WXInstanceApm.m */; };
17036A5320FDE7490029AE3D /* WXApmProtocol.h in Headers */ = {isa = PBXBuildFile; fileRef = 17036A5220FDE7490029AE3D /* WXApmProtocol.h */; settings = {ATTRIBUTES = (Public, ); }; };
17036A5420FDE7490029AE3D /* WXApmProtocol.h in Headers */ = {isa = PBXBuildFile; fileRef = 17036A5220FDE7490029AE3D /* WXApmProtocol.h */; settings = {ATTRIBUTES = (Public, ); }; };
170B4664208733AF00562666 /* WXAnalyzerCenter.h in Headers */ = {isa = PBXBuildFile; fileRef = 17C74F092072145000AB4CAB /* WXAnalyzerCenter.h */; settings = {ATTRIBUTES = (Public, ); }; };
170B4665208733BF00562666 /* WXAnalyzerCenter+Transfer.h in Headers */ = {isa = PBXBuildFile; fileRef = 17C74F082072145000AB4CAB /* WXAnalyzerCenter+Transfer.h */; };
170B4668208733E500562666 /* WXAnalyzerCenter.m in Sources */ = {isa = PBXBuildFile; fileRef = 17C74F0A2072145100AB4CAB /* WXAnalyzerCenter.m */; };
Expand Down Expand Up @@ -647,6 +653,9 @@
/* Begin PBXFileReference section */
042013AC1E66CD6A001FC79C /* WXValidateProtocol.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WXValidateProtocol.h; sourceTree = "<group>"; };
1746EA7220E9D253007E55BD /* WXComponent_performance.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WXComponent_performance.h; sourceTree = "<group>"; };
17036A4C20FDE72F0029AE3D /* WXApmForInstance.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WXApmForInstance.h; sourceTree = "<group>"; };
17036A4D20FDE72F0029AE3D /* WXInstanceApm.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WXInstanceApm.m; sourceTree = "<group>"; };
17036A5220FDE7490029AE3D /* WXApmProtocol.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WXApmProtocol.h; sourceTree = "<group>"; };
176BE43B209172330086B6AF /* WXComponent+Layout.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = "WXComponent+Layout.mm"; path = "Layout/WXComponent+Layout.mm"; sourceTree = "<group>"; };
17B1221F2090AA9300387E33 /* WXSDKInstance_performance.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WXSDKInstance_performance.m; sourceTree = "<group>"; };
17B122202090AA9300387E33 /* WXSDKInstance_performance.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WXSDKInstance_performance.h; sourceTree = "<group>"; };
Expand Down Expand Up @@ -1022,6 +1031,25 @@
/* End PBXFrameworksBuildPhase section */

/* Begin PBXGroup section */
17036A4B20FDE7090029AE3D /* Performance */ = {
isa = PBXGroup;
children = (
17036A4C20FDE72F0029AE3D /* WXApmForInstance.h */,
17036A4D20FDE72F0029AE3D /* WXInstanceApm.m */,
);
path = Performance;
sourceTree = "<group>";
};
17B12228209170CF00387E33 /* Recovered References */ = {
isa = PBXGroup;
children = (
8431F8DD1F9EFCC100C76E1E /* WXScrollerComponent+Layout.mm */,
59D3CA461CFC3CC0008835DC /* WXSliderComponent.mm */,
847E1DE01F9A1BCF00A48124 /* WXCoreStyle.h */,
);
name = "Recovered References";
sourceTree = "<group>";
};
2A42AF861C23B33E00818EA6 /* WeexSDK_MTL */ = {
isa = PBXGroup;
children = (
Expand Down Expand Up @@ -1303,6 +1331,7 @@
77D161181C02DCB90010B15B /* Sources */ = {
isa = PBXGroup;
children = (
17036A4B20FDE7090029AE3D /* Performance */,
DCA446261EFA5DAF00D0CFA8 /* WeexSDK.h */,
C4F012711E1502A6003378D0 /* WebSocket */,
2AF626C61C191E2200E71A38 /* Layout */,
Expand Down Expand Up @@ -1405,6 +1434,7 @@
77D1611C1C02DD3C0010B15B /* Protocol */ = {
isa = PBXGroup;
children = (
17036A5220FDE7490029AE3D /* WXApmProtocol.h */,
17C74F0E2072147A00AB4CAB /* WXAnalyzerProtocol.h */,
59A596171CB630E50012CD52 /* WXNavigationProtocol.h */,
DCDFED001E68238F00C228D7 /* WXJSExceptionProtocol.h */,
Expand Down Expand Up @@ -1637,6 +1667,7 @@
775BEE711C1BD977008D1629 /* WXModuleProtocol.h in Headers */,
7469869F1C4E2C000054A57E /* NSArray+Weex.h in Headers */,
74CC7A201C2BF9DC00829368 /* WXListComponent.h in Headers */,
17036A5320FDE7490029AE3D /* WXApmProtocol.h in Headers */,
7423EB511F4ADE30001662D1 /* WXComponent+DataBinding.h in Headers */,
74FD6E041C7C0E9600DBEB6D /* WXScrollerProtocol.h in Headers */,
74CFDD3D1F459400007A1A66 /* WXRecycleListDataManager.h in Headers */,
Expand Down Expand Up @@ -1764,6 +1795,7 @@
74A4BA851CAD453400195969 /* WXNetworkProtocol.h in Headers */,
7461F8A81CFC33A800F62D44 /* WXThreadSafeMutableArray.h in Headers */,
D33451081D3E19480083598A /* WXCanvasComponent.h in Headers */,
17036A4E20FDE72F0029AE3D /* WXApmForInstance.h in Headers */,
74B8BEFE1DC47B72004A6027 /* WXRootView.h in Headers */,
77E65A111C155EA8008B8775 /* WXImageComponent.h in Headers */,
745B2D6C1E5A8E1E0092D38A /* WXRecyclerDataController.h in Headers */,
Expand Down Expand Up @@ -1844,6 +1876,7 @@
DCA445B11EFA576800D0CFA8 /* WXLog.h in Headers */,
DCA4459D1EFA56DB00D0CFA8 /* WXValidateProtocol.h in Headers */,
DCA445B81EFA579800D0CFA8 /* WXEventModuleProtocol.h in Headers */,
17036A5420FDE7490029AE3D /* WXApmProtocol.h in Headers */,
DCA445AE1EFA575700D0CFA8 /* WXMonitor.h in Headers */,
DCA445BD1EFA57B500D0CFA8 /* WXConfigCenterProtocol.h in Headers */,
DCA445A11EFA56FA00D0CFA8 /* WXScrollerProtocol.h in Headers */,
Expand Down Expand Up @@ -1907,6 +1940,7 @@
74B81AE31F73C3E300D3A61D /* WXRecycleListComponent.h in Headers */,
DCA445DA1EFA59A600D0CFA8 /* WXMultiColumnLayout.h in Headers */,
DCA445E01EFA59CD00D0CFA8 /* WXLoadingIndicator.h in Headers */,
17036A4F20FDE72F0029AE3D /* WXApmForInstance.h in Headers */,
DCA445E61EFA59E500D0CFA8 /* WXImageComponent.h in Headers */,
DCA4461B1EFA5AA200D0CFA8 /* WXDatePickerManager.h in Headers */,
DCA445D71EFA598D00D0CFA8 /* WXComponent+ViewManagement.h in Headers */,
Expand Down Expand Up @@ -2290,6 +2324,7 @@
74862F821E03A24500B7A041 /* WXComponentMethod.m in Sources */,
77E65A121C155EA8008B8775 /* WXImageComponent.m in Sources */,
74CFDD3E1F459400007A1A66 /* WXRecycleListDataManager.m in Sources */,
17036A5020FDE72F0029AE3D /* WXInstanceApm.m in Sources */,
2A837AB31CD9DE9200AEDF03 /* WXLoadingComponent.mm in Sources */,
2AE5B7531CAB7DBD0082FDDB /* WXAComponent.m in Sources */,
176BE43C209172330086B6AF /* WXComponent+Layout.mm in Sources */,
Expand Down Expand Up @@ -2380,6 +2415,7 @@
DCA445511EFA55B300D0CFA8 /* WXCycleSliderComponent.mm in Sources */,
DCE2CF9D1F46D4370021BDC4 /* WXVoiceOverModule.m in Sources */,
DCA445531EFA55B300D0CFA8 /* WXCellComponent.mm in Sources */,
17036A5120FDE72F0029AE3D /* WXInstanceApm.m in Sources */,
DCA445541EFA55B300D0CFA8 /* WXListComponent.mm in Sources */,
DCA445551EFA55B300D0CFA8 /* WXIndicatorComponent.m in Sources */,
17E5ACDB2091F05700EE81F1 /* WXComponent+Layout.mm in Sources */,
Expand Down
Loading

0 comments on commit 539621f

Please sign in to comment.