diff --git a/Demos/GenerateSwaggerJsonFromCode/GenerateSwagger.res b/Demos/GenerateSwaggerJsonFromCode/GenerateSwagger.res index 59895be..3f5197d 100644 Binary files a/Demos/GenerateSwaggerJsonFromCode/GenerateSwagger.res and b/Demos/GenerateSwaggerJsonFromCode/GenerateSwagger.res differ diff --git a/Demos/GenerateUnitFileForMVCFramework/GenerateUnitFileForMVCFramework.res b/Demos/GenerateUnitFileForMVCFramework/GenerateUnitFileForMVCFramework.res new file mode 100644 index 0000000..050cfa1 Binary files /dev/null and b/Demos/GenerateUnitFileForMVCFramework/GenerateUnitFileForMVCFramework.res differ diff --git a/Demos/GenerateUnitFileForMVCFramework/Sample.DelphiUnit.Generate.pas b/Demos/GenerateUnitFileForMVCFramework/Sample.DelphiUnit.Generate.pas index f58e94f..2c3020b 100644 --- a/Demos/GenerateUnitFileForMVCFramework/Sample.DelphiUnit.Generate.pas +++ b/Demos/GenerateUnitFileForMVCFramework/Sample.DelphiUnit.Generate.pas @@ -204,7 +204,11 @@ function DelphiVarName(const pVarName: string):string; procedure TDelphiUnit.AddImplementationConstant(const pName, pValue: string); begin + {$IF COMPILERVERSION <= 27} + fImplementationConstant.Add(pName + ' : ' + pValue); + {$ELSE} fImplementationConstant.AddPair(pName, pValue); + {$ENDIF} end; procedure TDelphiUnit.AddImplementationUnit(const pFilename: string); @@ -221,12 +225,20 @@ procedure TDelphiUnit.AddImplementationUnit(const pFilename: string); procedure TDelphiUnit.AddInterfaceVar(const pName: string; pTypeInfo: TUnitTypeDefinition); begin + {$IF COMPILERVERSION <= 27} + fInterfaceVar.Add(pName + ':' + pTypeInfo.TypeName); + {$ELSE} fInterfaceVar.AddPair(pName, pTypeInfo.TypeName); + {$ENDIF} end; procedure TDelphiUnit.AddInterfaceConstant(const pName, pValue: string); begin + {$IF COMPILERVERSION <= 27} + fInterfaceConstant.Add(pName + ':' + pValue); + {$ELSE} fInterfaceConstant.AddPair(pName, pValue); + {$ENDIF} end; procedure TDelphiUnit.AddInterfaceUnit(const pFilename: string); diff --git a/Demos/GenerateUnitFileForMVCFramework/Sample.Main.fmx b/Demos/GenerateUnitFileForMVCFramework/Sample.Main.fmx index af8788e..68b3f33 100644 --- a/Demos/GenerateUnitFileForMVCFramework/Sample.Main.fmx +++ b/Demos/GenerateUnitFileForMVCFramework/Sample.Main.fmx @@ -7,80 +7,61 @@ object Form1: TForm1 FormFactor.Width = 320 FormFactor.Height = 480 FormFactor.Devices = [Desktop] - DesignerMasterStyle = 0 + DesignerMobile = False + DesignerWidth = 0 + DesignerHeight = 0 + DesignerDeviceName = '' + DesignerOrientation = 0 + DesignerOSVersion = '' object TabControl1: TTabControl Align = Bottom + Height = 200.000000000000000000 Position.Y = 40.000000000000000000 - Size.Width = 605.000000000000000000 - Size.Height = 645.000000000000000000 - Size.PlatformDefault = False TabIndex = 1 TabOrder = 2 - TabPosition = PlatformDefault - Sizes = ( - 605s - 619s - 605s - 619s) + Width = 200.000000000000000000 object TabItem1: TTabItem CustomIcon = < item end> + Height = 24.000000000000000000 IsSelected = False - Size.Width = 98.000000000000000000 - Size.Height = 26.000000000000000000 - Size.PlatformDefault = False - StyleLookup = '' TabOrder = 0 Text = 'Swagger JSON' - ExplicitSize.cx = 98.000000000000000000 - ExplicitSize.cy = 26.000000000000000000 + Width = 94.000000000000000000 object Memo1: TMemo Touch.InteractiveGestures = [Pan, LongTap, DoubleTap] - DataDetectorTypes = [] Align = Client - Size.Width = 605.000000000000000000 - Size.Height = 619.000000000000000000 - Size.PlatformDefault = False + Height = 176.000000000000000000 TabOrder = 0 - Viewport.Width = 601.000000000000000000 - Viewport.Height = 615.000000000000000000 + Width = 200.000000000000000000 end end object TabItem2: TTabItem CustomIcon = < item end> + Height = 24.000000000000000000 IsSelected = True - Size.Width = 89.000000000000000000 - Size.Height = 26.000000000000000000 - Size.PlatformDefault = False - StyleLookup = '' TabOrder = 0 Text = 'Delphi Client' - ExplicitSize.cx = 136.000000000000000000 - ExplicitSize.cy = 26.000000000000000000 + Width = 85.000000000000000000 object Memo2: TMemo Touch.InteractiveGestures = [Pan, LongTap, DoubleTap] - DataDetectorTypes = [] Align = Client - Size.Width = 605.000000000000000000 - Size.Height = 619.000000000000000000 - Size.PlatformDefault = False + Height = 176.000000000000000000 TabOrder = 0 - Viewport.Width = 601.000000000000000000 - Viewport.Height = 615.000000000000000000 + Width = 200.000000000000000000 end end end object btnGenerateClient: TButton + Height = 22.000000000000000000 Position.X = 24.000000000000000000 Position.Y = 8.000000000000000000 - Size.Width = 121.000000000000000000 - Size.Height = 22.000000000000000000 - Size.PlatformDefault = False TabOrder = 3 Text = 'Generate Client' + Width = 80.000000000000000000 OnClick = btnGenerateClientClick end end diff --git a/Demos/GenerateUnitFileForMVCFramework/Sample.Main.pas b/Demos/GenerateUnitFileForMVCFramework/Sample.Main.pas index 49c7e70..bfa6f88 100644 --- a/Demos/GenerateUnitFileForMVCFramework/Sample.Main.pas +++ b/Demos/GenerateUnitFileForMVCFramework/Sample.Main.pas @@ -37,11 +37,14 @@ interface FMX.Forms, FMX.Graphics, FMX.Dialogs, + {$IF COMPILERVERSION >= 28} FMX.Controls.Presentation, - FMX.StdCtrls, FMX.ScrollBox, + {$ENDIF} + FMX.StdCtrls, FMX.Memo, - FMX.TabControl; + FMX.TabControl, + FMX.Layouts; type TForm1 = class(TForm) diff --git a/Demos/GenerateUnitFileForMVCFramework/Sample.MvcControllerClientFileBuilder.pas b/Demos/GenerateUnitFileForMVCFramework/Sample.MvcControllerClientFileBuilder.pas index 3ff7db4..5d61ebf 100644 --- a/Demos/GenerateUnitFileForMVCFramework/Sample.MvcControllerClientFileBuilder.pas +++ b/Demos/GenerateUnitFileForMVCFramework/Sample.MvcControllerClientFileBuilder.pas @@ -247,9 +247,9 @@ procedure TSwagDocToDelphiRESTClientBuilder.HandleArray(pField : TUnitFieldDefin end else begin - OutputDebugString(PChar(pJson.ToJSON)); + OutputDebugString(PChar(pJson.ToString)); vJsonVal := (pJson.JsonValue as TJSONObject).Values['items'] as TJSONObject; - OutputDebugString(PChar(vJsonVal.ToJSON)); + OutputDebugString(PChar(vJsonVal.ToString)); vJsonObj := vJsonVal as TJSONObject; vJsonVal := vJsonObj.Values['$ref']; OutputDebugString(PChar(vJsonVal.Value)); @@ -267,14 +267,14 @@ procedure TSwagDocToDelphiRESTClientBuilder.ChildType(pDelphiUnit : TDelphiUnit; vJsonPropIndex: Integer; vValue : string; begin - OutputDebugString(PChar('Child: ' + pJson.ToJSON)); + OutputDebugString(PChar('Child: ' + pJson.ToString)); vTypeInfo := TUnitTypeDefinition.Create; vTypeInfo.TypeName := 'T' + CapitalizeFirstLetter(pJson.JSONString.Value); vJsonProps := (pJson.JSONValue as TJSONObject).Values['properties'] as TJSONObject; for vJsonPropIndex := 0 to vJsonProps.Count - 1 do begin - OutputDebugString(PChar(vJsonProps.Pairs[vJsonPropIndex].ToJSON)); + OutputDebugString(PChar(vJsonProps.Pairs[vJsonPropIndex].ToString)); vFieldInfo := TUnitFieldDefinition.Create; vFieldInfo.FieldName := vJsonProps.Pairs[vJsonPropIndex].JsonString.Value; vTypeObj := vJsonProps.Pairs[vJsonPropIndex].JsonValue as TJSONObject; @@ -319,7 +319,7 @@ procedure TSwagDocToDelphiRESTClientBuilder.ConvertSwaggerDefinitionsToTypeDefin vJsonProps := fSwagDoc.Definitions[DefinitionIndex].JsonSchema.Values['properties'] as TJSONObject; for vJsonPropIndex := 0 to vJsonProps.Count - 1 do begin - OutputDebugString(PChar(vJsonProps.Pairs[vJsonPropIndex].ToJSON)); + OutputDebugString(PChar(vJsonProps.Pairs[vJsonPropIndex].ToString)); vFieldInfo := TUnitFieldDefinition.Create; vFieldInfo.FieldName := vJsonProps.Pairs[vJsonPropIndex].JsonString.Value; vTypeObj := vJsonProps.Pairs[vJsonPropIndex].JsonValue as TJSONObject; @@ -394,7 +394,7 @@ function TSwagDocToDelphiRESTClientBuilder.ConvertSwaggerTypeToDelphiType(pSwagg vJson := pSwaggerType.Schema.JsonSchema; if Assigned(vJson) then begin - OutputDebugString(PChar('TYPE: ' + vJson.ToJson)); + OutputDebugString(PChar('TYPE: ' + vJson.ToString)); Result.TypeName := 'array of ' + pSwaggerType.Schema.JsonSchema.Values['type'].Value; end else diff --git a/Demos/LoadSwaggerJsonToObject/LoadSwaggerJsonToObject.res b/Demos/LoadSwaggerJsonToObject/LoadSwaggerJsonToObject.res index c6928c6..ce01c2d 100644 Binary files a/Demos/LoadSwaggerJsonToObject/LoadSwaggerJsonToObject.res and b/Demos/LoadSwaggerJsonToObject/LoadSwaggerJsonToObject.res differ diff --git a/Demos/SampleApi/Sample.Main.fmx b/Demos/SampleApi/Sample.Main.fmx index 65d42ba..ce5b414 100644 --- a/Demos/SampleApi/Sample.Main.fmx +++ b/Demos/SampleApi/Sample.Main.fmx @@ -7,25 +7,28 @@ object Form1: TForm1 FormFactor.Width = 320 FormFactor.Height = 480 FormFactor.Devices = [Desktop] - DesignerMasterStyle = 0 + DesignerMobile = False + DesignerWidth = 0 + DesignerHeight = 0 + DesignerDeviceName = '' + DesignerOrientation = 0 + DesignerOSVersion = '' object Button1: TButton + Height = 22.000000000000000000 Position.X = 16.000000000000000000 Position.Y = 8.000000000000000000 TabOrder = 1 Text = 'Generate' + Width = 80.000000000000000000 OnClick = Button1Click end object Memo1: TMemo Touch.InteractiveGestures = [Pan, LongTap, DoubleTap] - DataDetectorTypes = [] Anchors = [akLeft, akTop, akRight, akBottom] + Height = 633.000000000000000000 Position.X = 16.000000000000000000 Position.Y = 40.000000000000000000 - Size.Width = 574.000000000000000000 - Size.Height = 630.000000000000000000 - Size.PlatformDefault = False TabOrder = 2 - Viewport.Width = 570.000000000000000000 - Viewport.Height = 626.000000000000000000 + Width = 577.000000000000000000 end end diff --git a/Demos/SampleApi/Sample.Main.pas b/Demos/SampleApi/Sample.Main.pas index b483e54..85c4d9c 100644 --- a/Demos/SampleApi/Sample.Main.pas +++ b/Demos/SampleApi/Sample.Main.pas @@ -35,8 +35,13 @@ interface FMX.Forms, FMX.Graphics, FMX.Dialogs, + {$IF COMPILERVERSION >= 28} FMX.Controls.Presentation, - FMX.StdCtrls, FMX.ScrollBox, FMX.Memo; + FMX.ScrollBox, + {$ENDIF} + FMX.StdCtrls, + FMX.Memo, + FMX.Layouts; type TForm1 = class(TForm) diff --git a/Demos/SampleApi/SampleApi.res b/Demos/SampleApi/SampleApi.res index f0c3bd3..dedd156 100644 Binary files a/Demos/SampleApi/SampleApi.res and b/Demos/SampleApi/SampleApi.res differ diff --git a/Deploy/swagger.json b/Deploy/swagger.json index 9d49c4e..4121952 100644 --- a/Deploy/swagger.json +++ b/Deploy/swagger.json @@ -5,23 +5,23 @@ "version":"v1", "title":"Sample API", "description":"Sample API Description", - "termsOfService":"http:\/\/www.apache.org\/licenses\/LICENSE-2.0.txt", + "termsOfService":"http://www.apache.org/licenses/LICENSE-2.0.txt", "contact": { "name":"Marcelo Jaloto", "email":"marcelojaloto@gmail.com", - "url":"https:\/\/github.com\/marcelojaloto\/SwagDoc" + "url":"https://github.com/marcelojaloto/SwagDoc" } , "license": { "name":"Apache License - Version 2.0, January 2004", - "url":"http:\/\/www.apache.org\/licenses\/LICENSE-2.0" + "url":"http://www.apache.org/licenses/LICENSE-2.0" } } , "host":"localhost", - "basePath":"\/api", + "basePath":"/api", "schemes": [ "http" @@ -29,17 +29,17 @@ , "consumes": [ - "application\/json" + "application/json" ] , "produces": [ - "application\/json" + "application/json" ] , "paths": { - "\/employees": + "/employees": { "get": { @@ -190,7 +190,7 @@ "required":true, "schema": { - "$ref":"#\/definitions\/employee" + "$ref":"#/definitions/employee" } } ] @@ -307,7 +307,7 @@ } } , - "\/employees\/{id}": + "/employees/{id}": { "get": { @@ -464,7 +464,7 @@ "required":true, "schema": { - "$ref":"#\/definitions\/employee" + "$ref":"#/definitions/employee" } } ] diff --git a/Source/Json.Schema.Field.Objects.pas b/Source/Json.Schema.Field.Objects.pas index 83fb6f2..b483bb2 100644 --- a/Source/Json.Schema.Field.Objects.pas +++ b/Source/Json.Schema.Field.Objects.pas @@ -89,18 +89,11 @@ function TJsonFieldObject.GetField(const pFieldIndex: Integer): TJsonField; end; function TJsonFieldObject.GetFieldByName(const pName: string): TJsonField; -var - I: Integer; begin Result := nil; - for I := 0 to Pred(fFields.Count) do - begin - if (UpperCase(fFields[I].Name) = UpperCase(pName)) then - begin - Result := fFields[I]; + for Result in fFields do + if (UpperCase(Result.Name) = UpperCase(pName)) then Break; - end; - end; end; function TJsonFieldObject.GetFieldsCount: Integer; diff --git a/Source/Json.Schema.pas b/Source/Json.Schema.pas index 7892cc4..e08653d 100644 --- a/Source/Json.Schema.pas +++ b/Source/Json.Schema.pas @@ -100,7 +100,7 @@ function TJsonSchema.GetJsonFieldClass: TJsonFieldClass; case vSchemaKind of skObject: begin - vClass := FindClass(string(PTypeInfo(System.TypeInfo(T))^.NameFld.ToString)); + vClass := FindClass(string(PTypeInfo(System.TypeInfo(T))^.Name)); if not vClass.InheritsFrom(TJsonField) then raise ETypeNotSupportedByAField.Create(c_ErrorTypeNotSupportedByAField); Result := TJsonFieldClass(vClass); @@ -142,25 +142,25 @@ function TJsonSchema.GetSchemaKind: TSchemaKind; tkString, tkUString, tkChar: Result := skString; tkRecord: begin - if vTypeInfo = System.TypeInfo(TGuid) then + if (LowerCase(string(vTypeInfo^.Name)) = 'tguid') then Result := skGuid end; tkInteger: Result := skInteger; tkInt64: Result := skInt64; tkEnumeration: begin - if vTypeInfo = System.TypeInfo(Boolean) then + if (LowerCase(string(vTypeInfo^.Name)) = 'boolean') then Result := skBoolean else Result := skEnumeration; end; tkFloat: begin - if vTypeInfo = System.TypeInfo(TDateTime) then + if (LowerCase(string(vTypeInfo^.Name)) = 'tdatetime') then Result := skDateTime - else if vTypeInfo = System.TypeInfo(TDate) then + else if (LowerCase(string(vTypeInfo^.Name)) = 'tdate') then Result := skDate - else if vTypeInfo = System.TypeInfo(TTime) then + else if (LowerCase(string(vTypeInfo^.Name)) = 'ttime') then Result := skTime else Result := skNumber; diff --git a/Source/Swag.Doc.Path.Operation.RequestParameter.pas b/Source/Swag.Doc.Path.Operation.RequestParameter.pas index 318b9ec..0cdc77b 100644 --- a/Source/Swag.Doc.Path.Operation.RequestParameter.pas +++ b/Source/Swag.Doc.Path.Operation.RequestParameter.pas @@ -195,10 +195,18 @@ function TSwagRequestParameter.GenerateJsonObject: TJSONObject; vJsonObject.AddPair(c_SwagRequestParameterDefault, fDefault); if fRequired or (fInLocation = rpiPath) then + {$IF COMPILERVERSION <= 27} + vJsonObject.AddPair(c_SwagRequestParameterRequired, TJSONTrue.Create); + {$ELSE} vJsonObject.AddPair(c_SwagRequestParameterRequired, TJSONBool.Create(True)); + {$ENDIF} if fAllowEmptyValue and (fInLocation = rpiQuery) or (fInLocation = rpiFormData) then + {$IF COMPILERVERSION <= 27} + vJsonObject.AddPair(c_SwagRequestParameterAllowEmptyValue, TJSONTrue.Create); + {$ELSE} vJsonObject.AddPair(c_SwagRequestParameterAllowEmptyValue, TJSONBool.Create(True)); + {$ENDIF} if fInLocation = rpiBody then // schema only allow in body parameters begin @@ -242,10 +250,18 @@ procedure TSwagRequestParameter.Load(pJson: TJSONObject); if Assigned(pJson.Values[c_SwagRequestParameterAllowEmptyValue]) and ((fInLocation = rpiQuery) or (fInLocation = rpiFormData)) then + {$IF COMPILERVERSION <= 27} + fAllowEmptyValue := True; + {$ELSE} fAllowEmptyValue := (pJson.Values[c_SwagRequestParameterAllowEmptyValue] as TJSONBool).AsBoolean; + {$ENDIF} if Assigned(pJson.Values[c_SwagRequestParameterRequired]) then + {$IF COMPILERVERSION <= 27} + fRequired := True + {$ELSE} fRequired := (pJson.Values[c_SwagRequestParameterRequired] as TJSONBool).AsBoolean + {$ENDIF} else fRequired := False; diff --git a/Source/Swag.Doc.Path.Operation.pas b/Source/Swag.Doc.Path.Operation.pas index 51ef4a1..8ec29bc 100644 --- a/Source/Swag.Doc.Path.Operation.pas +++ b/Source/Swag.Doc.Path.Operation.pas @@ -256,7 +256,11 @@ function TSwagPathOperation.GenerateJsonObject: TJSONObject; vJsonObject.AddPair(c_SwagPathOperationExternalDocs, fExternalDocs.GenerateJsonObject); if fDeprecated then + {$IF COMPILERVERSION <= 27} + vJsonObject.AddPair(c_SwagPathOperationDeprecated, TJSONTrue.Create); + {$ELSE} vJsonObject.AddPair(c_SwagPathOperationDeprecated, TJSONBool.Create(fDeprecated)); + {$ENDIF} if not fOperationId.IsEmpty then vJsonObject.AddPair(c_SwagPathOperationOperationId, fOperationId); if (fConsumes.Count > 0) then diff --git a/Source/Swag.Doc.Path.pas b/Source/Swag.Doc.Path.pas index cc32685..f77496e 100644 --- a/Source/Swag.Doc.Path.pas +++ b/Source/Swag.Doc.Path.pas @@ -169,7 +169,11 @@ procedure TSwagPath.Load(pJson: TJSONObject); vOperation.OperationId := vOperationJson.Values['operationId'].Value; if Assigned(vOperationJson.Values['deprecated']) then + {$IF COMPILERVERSION <= 27} + vOperation.Deprecated := True; + {$ELSE} vOperation.Deprecated := (vOperationJson.Values['deprecated'] as TJSONBool).AsBoolean; + {$ENDIF} LoadTags(vOperation, vOperationJson.Values['tags'] as TJSONArray); LoadProduces(vOperation, vOperationJson.Values['produces'] as TJSONArray); diff --git a/Source/SwagDoc.dpk b/Source/SwagDoc.dpk index cac34e2..b09284f 100644 --- a/Source/SwagDoc.dpk +++ b/Source/SwagDoc.dpk @@ -26,7 +26,6 @@ package SwagDoc; {$DEFINE DEBUG} {$ENDIF IMPLICITBUILDING} {$DESCRIPTION 'SwagDoc Library'} -{$RUNONLY} {$IMPLICITBUILD ON} requires diff --git a/Source/SwagDoc.dproj b/Source/SwagDoc.dproj index 4e2d693..4f4c05b 100644 --- a/Source/SwagDoc.dproj +++ b/Source/SwagDoc.dproj @@ -2,7 +2,7 @@ {5B9408E7-46AC-4431-9716-C9EB9F8589B1} SwagDoc.dpk - 18.6 + 19.5 None True Debug @@ -18,23 +18,13 @@ Base true - - true - Base - true - - - true + + true Base true - - true - Base - true - - - true + + true Base true @@ -55,7 +45,6 @@ true - ..\Lib .\$(Platform)\$(Config) false false @@ -67,35 +56,29 @@ System;Xml;Data;Datasnap;Web;Soap;$(DCC_Namespace) All SwagDoc - ..\Lib - ..\Lib true 3 1046 CompanyName=Jaloto Software;FileDescription=$(MSBuildProjectName);FileVersion=1.0.3.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProgramID=com.embarcadero.$(MSBuildProjectName);ProductName=$(MSBuildProjectName);ProductVersion=1.0.0.0;Comments= SwagDoc Library - true + rtl;$(DCC_UsePackage) None android-support-v4.dex.jar;cloud-messaging.dex.jar;fmx.dex.jar;google-analytics-v2.dex.jar;google-play-billing.dex.jar;google-play-licensing.dex.jar;google-play-services.dex.jar - - - None - - - None - - - None + $(BDS)\bin\Artwork\Android\FM_LauncherIcon_192x192.png + rtl;$(DCC_UsePackage) Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace) Debug - true CompanyName=;FileDescription=$(MSBuildProjectName);FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProgramID=com.embarcadero.$(MSBuildProjectName);ProductName=$(MSBuildProjectName);ProductVersion=1.0.0.0;Comments= + 0 1033 + + rtl;$(DCC_UsePackage) + DEBUG;$(DCC_Define) true @@ -169,79 +152,88 @@ - Microsoft Office 2000 Sample Automation Server Wrapper Components - Microsoft Office XP Sample Automation Server Wrapper Components + Microsoft Office 2000 Sample Automation Server Wrapper Components + Microsoft Office XP Sample Automation Server Wrapper Components SwagDoc.dpk - + true - - - - SwagDoc.bpl + true - - + + + true - - + + + true + + true - - - true + + + res\drawable-normal + 1 - - - - true + + res\drawable-normal + 1 - - + + 1 + .dylib 0 + .dll;.bpl - - - classes + + + ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset 1 - - - - res\xml + + ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset 1 - - - library\lib\armeabi-v7a + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 1 - - - library\lib\armeabi + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 1 @@ -251,58 +243,48 @@ 1 - + - library\lib\armeabi-v7a + library\lib\x86 1 - - - res\drawable + + 1 - - - - res\values + 1 - - - res\values-v21 + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 1 - - - - res\drawable + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 1 - - - res\drawable-xxhdpi + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 1 - - - - res\drawable-ldpi + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 1 - - - res\drawable-mdpi - 1 + + + classes + 64 - - - res\drawable-hdpi - 1 + classes + 64 @@ -311,37 +293,67 @@ 1 - + - res\drawable-small + res\drawable-xxhdpi 1 - - - res\drawable-normal + + + res\drawable-xhdpi 1 - - - res\drawable-large + res\drawable-xhdpi 1 + + res\drawable-xlarge + 1 + res\drawable-xlarge 1 - + + + Assets + 1 + + + Assets + 1 + + + + + Assets + 1 + + + Assets + 1 + + + + + 1 + 1 + + 1 + + 1 + 0 @@ -351,267 +363,520 @@ 1 .framework - - 1 - .framework - 0 - - + + + res\drawable-small 1 - .dylib - + + res\drawable-small + 1 + + + + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + + 1 - .dylib + Contents\MacOS 0 - .dll;.bpl - - + + + classes + 1 + + + + + + + ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset 1 - .dylib + ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset 1 - .dylib - + + + + res\values 1 - .dylib - + + res\values 1 - .dylib - + + + + library\lib\arm64-v8a 1 - .dylib - - 0 - .bpl + + library\lib\armeabi-v7a + 1 - + - 0 + res\drawable + 1 - - 0 + + + + res\drawable-xxxhdpi + 1 + + + res\drawable-xxxhdpi + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 - 0 + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 - - 0 + + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + + Contents\Resources + 1 + + + + + + 0 - + 0 0 + + 0 + + + 0 + - - + + + res\drawable-ldpi 1 - + + + 1 1 - - + + + res\drawable-mdpi 1 - + + + 1 - + 1 - - + + + res\drawable-hdpi 1 - + + res\drawable-hdpi 1 - + + + + res\drawable-mdpi + 1 + + + res\drawable-mdpi 1 - - + + 1 + .dylib - + + 0 + .bpl + + 1 + .dylib 1 + .dylib + + + + + + ..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF + 1 - - + + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 1 + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + + 1 1 + + + library\lib\armeabi-v7a + 1 + + + + + + res\values + 1 + + + res\values + 1 + + - + + 1 + + + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset 1 + ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset 1 - + + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 1 - - + + + res\drawable + 1 + + + res\drawable + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset 1 + ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset 1 - + + + + library\lib\armeabi-v7a 1 - + + + res\values-v21 + 1 + + res\values-v21 1 - - - ..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF + + + library\lib\armeabi-v7a + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 1 - ..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 1 - - - - - + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 1 + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + + 1 1 - - - - - - Contents\Resources + + + + library\lib\armeabi-v7a 1 - - Contents\Resources + + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + + + 1 + + + 1 + + + + + library\lib\armeabi 1 + + 1 + library\lib\armeabi-v7a 1 - + + 0 + + + 1 + + + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset + 1 + + + + + res\drawable-large + 1 + + + res\drawable-large + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset 1 + ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset + 1 + + + + 1 1 - + + + + res\values 1 - + + res\values 1 - + + + + res\xml 1 - - 0 + + res\xml + 1 - - + + + res\drawable-xxxhdpi 1 - + + res\drawable-xxxhdpi 1 - - - Assets + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 1 - - Assets + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 1 - - - Assets + + + res\drawable-hdpi 1 - - Assets + + + + res\drawable-xxhdpi + 1 + + + res\drawable-xxhdpi 1 - - - - + + + 1 + + + + + + + - + + + + False - False - False - False - False True False