├── screenshot.jpg ├── DelphiParallelBuild.dpr ├── .gitignore ├── .gitattributes ├── README.md ├── uMainForm.vlb ├── uMainForm.pas └── DelphiParallelBuild.dproj /screenshot.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FMXExpress/Delphi-Parallel-Build/HEAD/screenshot.jpg -------------------------------------------------------------------------------- /DelphiParallelBuild.dpr: -------------------------------------------------------------------------------- 1 | program DelphiParallelBuild; 2 | 3 | uses 4 | System.StartUpCopy, 5 | FMX.Forms, 6 | uMainForm in 'uMainForm.pas' {MainForm}; 7 | 8 | {$R *.res} 9 | 10 | begin 11 | Application.Initialize; 12 | Application.CreateForm(TMainForm, MainForm); 13 | Application.Run; 14 | end. 15 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Windows thumbnail cache files 2 | Thumbs.db 3 | ehthumbs.db 4 | ehthumbs_vista.db 5 | 6 | # Folder config file 7 | Desktop.ini 8 | 9 | # Recycle Bin used on file shares 10 | $RECYCLE.BIN/ 11 | 12 | # Windows Installer files 13 | *.cab 14 | *.msi 15 | *.msm 16 | *.msp 17 | 18 | # Windows shortcuts 19 | *.lnk 20 | 21 | # ========================= 22 | # Operating System Files 23 | # ========================= 24 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | # Auto detect text files and perform LF normalization 2 | * text=auto 3 | 4 | # Custom for Visual Studio 5 | *.cs diff=csharp 6 | 7 | # Standard to msysgit 8 | *.doc diff=astextplain 9 | *.DOC diff=astextplain 10 | *.docx diff=astextplain 11 | *.DOCX diff=astextplain 12 | *.dot diff=astextplain 13 | *.DOT diff=astextplain 14 | *.pdf diff=astextplain 15 | *.PDF diff=astextplain 16 | *.rtf diff=astextplain 17 | *.RTF diff=astextplain 18 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Delphi-Parallel-Build 2 | Build massive amount of Delphi and C++Builder projects in parallel. 3 | 4 | --- 5 | 6 | Supports TwineCompile for C++ projects. TwineCompile doesn't support parallel building of multiple projects in parallel though so set the CPU count to 1 if TwineCompile is enabled. 7 | 8 | --- 9 | 10 | Requires MSBuild which can be installed stand alone via: 11 | "The latest (as of Jan 2019) stand-alone MSBuild installers can be found here: https://www.visualstudio.com/downloads/ 12 | 13 | Scroll down to "Tools for Visual Studio 2019" and choose "Build Tools for Visual Studio 2019" (despite the name, it's for users who don't want the full IDE)" - https://stackoverflow.com/questions/25506178/getting-msbuild-exe-without-installing-visual-studio 14 | 15 | ![screenshot](screenshot.jpg) 16 | 17 | --- 18 | Built and programmed in [Delphi](https://www.embarcadero.com/products/delphi/starter). 19 | -------------------------------------------------------------------------------- /uMainForm.vlb: -------------------------------------------------------------------------------- 1 | [Rectangle1] 2 | Coordinates=80,256,69,33 3 | 4 | [Layout1] 5 | Coordinates=10,256,53,33 6 | 7 | [MaterialOxfordBlueSB] 8 | Coordinates=325,111,123,33 9 | 10 | [TabControl1] 11 | Coordinates=440,210,74,33 12 | 13 | [TabItem1] 14 | Coordinates=361,210,59,33 15 | 16 | [Layout3] 17 | Coordinates=291,210,53,33 18 | 19 | [ListView1] 20 | Coordinates=10,10,89,159 21 | Visible=True 22 | 23 | [ProjectsFDMemTable] 24 | Coordinates=127,10,119,33 25 | Visible=False 26 | 27 | [SearchEditButton1] 28 | Coordinates=89,210,107,33 29 | 30 | [TabItem2] 31 | Coordinates=10,210,59,33 32 | 33 | [PathEdit] 34 | Coordinates=481,10,56,51 35 | 36 | [] 37 | Coordinates=170,256,58,33 38 | 39 | [BindSourceDB1] 40 | Coordinates=640,40,105,141 41 | 42 | [BindingsList1] 43 | Coordinates=319,87,82,33 44 | 45 | [BuildButton] 46 | Coordinates=276,10,73,51 47 | 48 | [VertScrollBox1] 49 | Coordinates=284,163,88,33 50 | 51 | [Layout6] 52 | Coordinates=254,281,53,33 53 | 54 | [Layout5] 55 | Coordinates=486,150,53,33 56 | 57 | [Layout2] 58 | Coordinates=486,262,53,33 59 | 60 | [Layout4] 61 | Coordinates=486,314,53,33 62 | 63 | [BindSourceDB2] 64 | Coordinates=650,210,104,87 65 | 66 | [RSVArsComboEdit] 67 | Coordinates=309,262,107,87 68 | Visible=True 69 | 70 | [ErrorLogMemo] 71 | Coordinates=486,80,88,51 72 | 73 | [ExecParamsEdit] 74 | Coordinates=118,152,95,51 75 | 76 | [PlatformFDMemTable] 77 | Coordinates=61,327,120,33 78 | Visible=False 79 | 80 | [PlatformComboEdit] 81 | Coordinates=190,327,111,87 82 | Visible=True 83 | 84 | [BindSourceDB3] 85 | Coordinates=61,327,107,87 86 | 87 | [CPUTB] 88 | Coordinates=486,366,49,33 89 | 90 | [ScanButton] 91 | Coordinates=345,10,72,51 92 | 93 | [RSVarsFDMemTable] 94 | Coordinates=650,210,115,33 95 | Visible=False 96 | 97 | [CleanSwitch] 98 | Coordinates=505,157,75,51 99 | 100 | [Label5] 101 | Coordinates=505,421,46,51 102 | 103 | [Label6] 104 | Coordinates=0,0,46,51 105 | 106 | [Label1] 107 | Coordinates=505,234,46,51 108 | 109 | [Label7] 110 | Coordinates=136,65,46,51 111 | 112 | [StatusBar1] 113 | Coordinates=338,467,68,33 114 | 115 | [Layout7] 116 | Coordinates=269,467,53,33 117 | 118 | [StatusLabel] 119 | Coordinates=304,1,72,51 120 | 121 | [Layout8] 122 | Coordinates=200,467,53,33 123 | 124 | [Label2] 125 | Coordinates=136,142,46,51 126 | 127 | [TwineSwitch] 128 | Coordinates=417,467,76,51 129 | 130 | [Label4] 131 | Coordinates=21,219,46,51 132 | 133 | [Layout10] 134 | Coordinates=131,467,59,33 135 | 136 | [TabItem3] 137 | Coordinates=52,467,59,33 138 | 139 | [Layout9] 140 | Coordinates=629,1,53,33 141 | 142 | [ClearButton] 143 | Coordinates=629,408,73,51 144 | 145 | [ResetButton] 146 | Coordinates=303,563,75,51 147 | 148 | [Label3] 149 | Coordinates=392,563,46,51 150 | 151 | [Layout12] 152 | Coordinates=234,563,59,33 153 | 154 | [ExtFDMemTable] 155 | Coordinates=629,485,94,33 156 | Visible=False 157 | 158 | [BindNavigator1] 159 | Coordinates=629,331,90,51 160 | Visible=True 161 | 162 | [RetrySwitch] 163 | Coordinates=451,563,73,51 164 | 165 | [Layout11] 166 | Coordinates=165,563,59,33 167 | 168 | [BindSourceDB4] 169 | Coordinates=629,485,92,123 170 | 171 | [ExtStringGrid] 172 | Coordinates=540,563,81,51 173 | Visible=True 174 | 175 | -------------------------------------------------------------------------------- /uMainForm.pas: -------------------------------------------------------------------------------- 1 | unit uMainForm; 2 | 3 | interface 4 | 5 | uses 6 | System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants, 7 | FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, FMX.Objects, 8 | FMX.Ani, FMX.Edit, FMX.Filter.Effects, FMX.Layouts, FMX.Effects, FMX.StdCtrls, 9 | FMX.Controls.Presentation, FMX.ListView.Types, FMX.ListView.Appearances, 10 | FMX.ListView.Adapters.Base, FireDAC.Stan.Intf, FireDAC.Stan.Option, 11 | FireDAC.Stan.Param, FireDAC.Stan.Error, FireDAC.DatS, FireDAC.Phys.Intf, 12 | FireDAC.DApt.Intf, Data.DB, FireDAC.Comp.DataSet, FireDAC.Comp.Client, 13 | FMX.ListView, FMX.TabControl, System.Rtti, System.Bindings.Outputs, 14 | Fmx.Bind.Editors, Data.Bind.EngExt, Fmx.Bind.DBEngExt, Data.Bind.Components, 15 | Data.Bind.DBScope, FMX.ScrollBox, FMX.Memo, FireDAC.Stan.StorageBin, FMX.ComboEdit, 16 | FMX.EditBox, FMX.ComboTrackBar, System.Threading 17 | {$IFDEF MSWINDOWS} 18 | , WinApi.Windows, FMX.MultiView, FMX.Memo.Types, FMX.Grid.Style, 19 | Data.Bind.Controls, Fmx.Bind.Grid, Data.Bind.Grid, Fmx.Bind.Navigator, 20 | FMX.Grid 21 | {$ENDIF} 22 | ; 23 | 24 | type 25 | TMainForm = class(TForm) 26 | Rectangle1: TRectangle; 27 | MaterialOxfordBlueSB: TStyleBook; 28 | Layout1: TLayout; 29 | TabControl1: TTabControl; 30 | TabItem1: TTabItem; 31 | TabItem2: TTabItem; 32 | ListView1: TListView; 33 | ProjectsFDMemTable: TFDMemTable; 34 | BuildButton: TButton; 35 | Layout3: TLayout; 36 | PathEdit: TEdit; 37 | SearchEditButton1: TSearchEditButton; 38 | ScanButton: TButton; 39 | BindSourceDB1: TBindSourceDB; 40 | BindingsList1: TBindingsList; 41 | ErrorLogMemo: TMemo; 42 | VertScrollBox1: TVertScrollBox; 43 | Layout2: TLayout; 44 | Layout4: TLayout; 45 | Layout5: TLayout; 46 | Layout6: TLayout; 47 | ExecParamsEdit: TEdit; 48 | RSVarsFDMemTable: TFDMemTable; 49 | RSVArsComboEdit: TComboEdit; 50 | BindSourceDB2: TBindSourceDB; 51 | PlatformFDMemTable: TFDMemTable; 52 | PlatformComboEdit: TComboEdit; 53 | BindSourceDB3: TBindSourceDB; 54 | CPUTB: TComboTrackBar; 55 | LinkFillControlToField: TLinkFillControlToField; 56 | LinkFillControlToField2: TLinkFillControlToField; 57 | LinkListControlToField1: TLinkListControlToField; 58 | StatusLabel: TLabel; 59 | Layout9: TLayout; 60 | Layout10: TLayout; 61 | CleanSwitch: TSwitch; 62 | Label2: TLabel; 63 | Label4: TLabel; 64 | Label5: TLabel; 65 | Label6: TLabel; 66 | Label7: TLabel; 67 | TabItem3: TTabItem; 68 | StatusBar1: TStatusBar; 69 | Layout7: TLayout; 70 | Layout8: TLayout; 71 | TwineSwitch: TSwitch; 72 | Label1: TLabel; 73 | ClearButton: TButton; 74 | ResetButton: TButton; 75 | Layout11: TLayout; 76 | Layout12: TLayout; 77 | RetrySwitch: TSwitch; 78 | Label3: TLabel; 79 | ExtStringGrid: TStringGrid; 80 | BindNavigator1: TBindNavigator; 81 | ExtFDMemTable: TFDMemTable; 82 | BindSourceDB4: TBindSourceDB; 83 | LinkGridToDataSourceBindSourceDB4: TLinkGridToDataSource; 84 | procedure ScanButtonClick(Sender: TObject); 85 | procedure SearchEditButton1Click(Sender: TObject); 86 | procedure BuildButtonClick(Sender: TObject); 87 | procedure FormCreate(Sender: TObject); 88 | procedure ClearButtonClick(Sender: TObject); 89 | procedure ResetButtonClick(Sender: TObject); 90 | private 91 | { Private declarations } 92 | FCancel: Boolean; 93 | function ProcessTask(const AId: Integer): ITask; 94 | procedure BuildProject(const AId: Integer; const APath: String); 95 | procedure BuildEnd(const ATime: String); 96 | {$IFDEF MSWINDOWS} 97 | function ExeAndWait(ExeNameAndParams: string; ncmdShow: Integer = SW_SHOWNORMAL): Integer; 98 | {$ENDIF} 99 | public 100 | { Public declarations } 101 | end; 102 | const 103 | STS_READY = 'Ready'; 104 | STS_BUILDING = 'Building...'; 105 | STS_SUCCESS = 'Complete'; 106 | STS_FAIL = 'Failed'; 107 | 108 | var 109 | MainForm: TMainForm; 110 | 111 | implementation 112 | 113 | {$R *.fmx} 114 | 115 | uses 116 | System.Diagnostics, System.IOUtils; 117 | 118 | procedure TMainForm.ScanButtonClick(Sender: TObject); 119 | var 120 | LList: TStringDynArray; 121 | LSearchOption: TSearchOption; 122 | LItem: String; 123 | begin 124 | LSearchOption := TSearchOption.soAllDirectories; 125 | ExtFDMemTable.First; 126 | while not ExtFDMemTable.Eof do 127 | begin 128 | LList := LList + TDirectory.GetFiles(PathEdit.Text, ExtFDMemTable.FieldByName('Extension').AsWideString, LSearchOption); 129 | ExtFDMemTable.Next; 130 | end; 131 | ProjectsFDMemTable.EmptyDataSet; 132 | ProjectsFDMemTable.BeginBatch; 133 | for LItem in LList do 134 | begin 135 | ProjectsFDMemTable.Append; 136 | ProjectsFDMemTable.Edit; 137 | ProjectsFDMemTable.FieldByName('Filename').AsString := ExtractFileName(LItem); 138 | ProjectsFDMemTable.FieldByName('FullPath').AsString := LItem; 139 | ProjectsFDMemTable.FieldByName('Status').AsString := STS_READY; 140 | ProjectsFDMemTable.Post; 141 | end; 142 | ProjectsFDMemTable.EndBatch; 143 | StatusLabel.Text := ProjectsFDMemTable.RecordCount.ToString + ' projects found.'; 144 | end; 145 | 146 | procedure TMainForm.SearchEditButton1Click(Sender: TObject); 147 | var 148 | LDirectory: String; 149 | begin 150 | if SelectDirectory('Open Projects',ExtractFilePath(ParamStr(0)),LDirectory) then 151 | begin 152 | PathEdit.Text := LDirectory; 153 | end; 154 | end; 155 | 156 | function TMainForm.ProcessTask(const AId: Integer): ITask; 157 | begin 158 | Result := TTask.Create(procedure var LIndex: Integer; LPath: String; begin 159 | for LIndex := 0 to ProjectsFDMemTable.RecordCount-1 do 160 | begin 161 | LPath := ''; 162 | 163 | TThread.Synchronize(nil,procedure begin 164 | if RetrySwitch.IsChecked=True then 165 | if ProjectsFDMemTable.Locate('Status',VarArrayOf([STS_FAIL]),[])=True then 166 | begin 167 | ProjectsFDMemTable.Edit; 168 | ProjectsFDMemTable.FieldByName('Status').AsString := STS_READY; 169 | ProjectsFDMemTable.Post; 170 | end; 171 | 172 | if ProjectsFDMemTable.Locate('Status',VarArrayOf([STS_READY]),[])=True then 173 | begin 174 | LPath := ProjectsFDMemTable.FieldByName('FullPath').AsString; 175 | ProjectsFDMemTable.Edit; 176 | ProjectsFDMemTable.FieldByName('Status').AsString := STS_BUILDING; 177 | ProjectsFDMemTable.Post; 178 | end; 179 | end); 180 | 181 | if LPath='' then Exit; 182 | 183 | BuildProject(AId, LPath); 184 | 185 | if FCancel then 186 | Break; 187 | end; 188 | end); 189 | end; 190 | 191 | procedure TMainForm.ResetButtonClick(Sender: TObject); 192 | begin 193 | ErrorLogMemo.Lines.Clear; 194 | 195 | ProjectsFDMemTable.First; 196 | 197 | while not ProjectsFDMemTable.EOF do 198 | begin 199 | ProjectsFDMemTable.Edit; 200 | ProjectsFDMemTable.FieldByName('Status').AsString := STS_READY; 201 | ProjectsFDMemTable.Post; 202 | ProjectsFDMemTable.Next; 203 | end; 204 | end; 205 | 206 | procedure TMainForm.BuildEnd(const ATime: String); 207 | begin 208 | if FCancel=False then 209 | StatusLabel.Text := 'Completed in '+ATime+'ms' 210 | else 211 | StatusLabel.Text := 'Canceled'; 212 | 213 | BuildButton.Tag := 0; 214 | BuildButton.Text := BuildButton.Hint; 215 | 216 | FCancel := False; 217 | end; 218 | 219 | procedure TMainForm.BuildButtonClick(Sender: TObject); 220 | var 221 | LTasks: array of ITask; 222 | LThreadCount: Integer; 223 | LIndex: Integer; 224 | begin 225 | case BuildButton.Tag of 226 | 0: begin 227 | FCancel := False; 228 | 229 | BuildButton.Tag := 1; 230 | BuildButton.Text := 'Cancel'; 231 | 232 | StatusLabel.Text := ''; 233 | 234 | LThreadCount := Trunc(CPUTB.Value); 235 | 236 | var StopWatch := TStopWatch.Create; 237 | 238 | StopWatch.Start; 239 | 240 | for LIndex := 1 to LThreadCount do 241 | begin 242 | LTasks := LTasks + [ProcessTask(LIndex)]; 243 | LTasks[High(LTasks)].Start; 244 | end; 245 | 246 | TTask.Run(procedure begin 247 | TTask.WaitForAll(LTasks); 248 | TThread.Synchronize(nil,procedure begin 249 | StopWatch.Stop; 250 | BuildEnd(StopWatch.ElapsedMilliseconds.ToString); 251 | end); 252 | end); 253 | end; 254 | 1: begin 255 | FCancel := True; 256 | end; 257 | end; 258 | 259 | end; 260 | 261 | procedure TMainForm.BuildProject(const AId: Integer; const APath: String); 262 | var 263 | LCurrentFile: String; 264 | LReturnCode: integer; 265 | SL: TStringList; 266 | OutBat: TStringList; 267 | LAdditionalPath: String; 268 | LPlatform: String; 269 | LName: String; 270 | LProject: TStringList; 271 | begin 272 | 273 | SL := TStringList.Create; 274 | SL.LoadFromFile(RSVArsComboEdit.Text); 275 | 276 | LPlatform := 'Win32'; 277 | LName := ExtractFileName(APath).Replace(ExtractFileExt(APath),''); 278 | 279 | if TwineSwitch.IsChecked=True then 280 | begin 281 | LProject := TStringList.Create; 282 | LProject.LoadFromFile(APath); 283 | if LProject.Text.IndexOf('')=-1 then 284 | begin 285 | LProject.Text := LProject.Text.Replace('',''+''); 286 | LProject.SaveToFile(APath); 287 | end; 288 | LProject.Free; 289 | end 290 | else 291 | begin 292 | LProject := TStringList.Create; 293 | LProject.LoadFromFile(APath); 294 | if LProject.Text.IndexOf('')>-1 then 295 | begin 296 | LProject.Text := LProject.Text.Replace('', ''); 297 | LProject.SaveToFile(APath); 298 | end; 299 | LProject.Free; 300 | end; 301 | 302 | OutBat := TStringList.Create; 303 | try 304 | LAdditionalPath := ''; 305 | OutBat.Text := Trim(SL.Text); 306 | 307 | if APath.ToUpper.IndexOf('FLATBOX2D')>0 then 308 | LAdditionalPath := ';DCC_UnitSearchPath=$(DCC_UnitSearchPath)\FlatBox2d;$(DCC_UnitSearchPath)'; 309 | 310 | OutBat.Append(Format(ExecParamsEdit.Text, [APAth, PlatformComboEdit.Text, LAdditionalPath, CPUTB.Text]) + ' > ' + 'list'+AId.ToString + '.log'); 311 | if CleanSwitch.IsChecked then OutBat.Append(Format('msbuild "%s" /t:Clean /p:Platform=%s ', [APath, PlatformComboEdit.Text])); 312 | OutBat.SaveToFile(ExtractFilePath(ParamStr(0)) + 'list'+AId.ToString + '.bat'); 313 | LCurrentFile := 'cmd /c call '+ExtractFilePath(ParamStr(0))+'list'+AId.ToString+'.bat'; 314 | {$IFDEF MSWINDOWS} 315 | LReturnCode := ExeAndWait(LCurrentFile, SW_HIDE); 316 | {$ENDIF} 317 | OutBat.LoadFromFile(ExtractFilePath(ParamStr(0)) + 'list'+AId.ToString + '.log'); 318 | if OutBat.Text.IndexOf('Build succeeded.')>0 then 319 | begin 320 | TThread.Synchronize(nil,procedure begin 321 | if ProjectsFDMemTable.Locate('FullPath',VarArrayOf([APath]),[]) then 322 | begin 323 | ProjectsFDMemTable.Edit; 324 | ProjectsFDMemTable.FieldByName('Status').AsString := STS_SUCCESS; 325 | ProjectsFDMemTable.Post; 326 | end; 327 | end); 328 | end 329 | else 330 | begin 331 | TThread.Synchronize(nil,procedure begin 332 | if ProjectsFDMemTable.Locate('FullPath',VarArrayOf([APath]),[]) then 333 | begin 334 | ProjectsFDMemTable.Edit; 335 | ProjectsFDMemTable.FieldByName('Status').AsString := STS_FAIL; 336 | ProjectsFDMemTable.Post; 337 | end; 338 | ErrorLogMemo.Lines.Append(OutBat.Text); 339 | end); 340 | end; 341 | TThread.Synchronize(nil,procedure begin 342 | Application.ProcessMessages; 343 | end); 344 | 345 | if TwineSwitch.IsChecked=True then 346 | begin 347 | LProject := TStringList.Create; 348 | LProject.LoadFromFile(APath); 349 | if LProject.Text.IndexOf('')>-1 then 350 | begin 351 | LProject.Text := LProject.Text.Replace('', ''); 352 | LProject.SaveToFile(APath); 353 | end; 354 | LProject.Free; 355 | end; 356 | 357 | finally 358 | OutBat.Free; 359 | SL.Free; 360 | end; 361 | 362 | end; 363 | 364 | procedure TMainForm.ClearButtonClick(Sender: TObject); 365 | begin 366 | ProjectsFDMemTable.EmptyDataSet; 367 | end; 368 | 369 | {$IFDEF MSWINDOWS} 370 | function TMainForm.ExeAndWait(ExeNameAndParams: string; ncmdShow: Integer = SW_SHOWNORMAL): Integer; 371 | var 372 | StartupInfo: TStartupInfo; 373 | ProcessInformation: TProcessInformation; 374 | Res: Bool; 375 | lpExitCode: DWORD; 376 | begin 377 | with StartupInfo do //you can play with this structure 378 | begin 379 | cb := SizeOf(TStartupInfo); 380 | lpReserved := nil; 381 | lpDesktop := nil; 382 | lpTitle := nil; 383 | dwFlags := STARTF_USESHOWWINDOW; 384 | wShowWindow := ncmdShow; 385 | cbReserved2 := 0; 386 | lpReserved2 := nil; 387 | end; 388 | Res := CreateProcess(nil, PChar(ExeNameAndParams), nil, nil, True, 389 | CREATE_DEFAULT_ERROR_MODE 390 | or NORMAL_PRIORITY_CLASS, nil, nil, StartupInfo, ProcessInformation); 391 | while True do 392 | begin 393 | GetExitCodeProcess(ProcessInformation.hProcess, lpExitCode); 394 | if lpExitCode <> STILL_ACTIVE then 395 | Break; 396 | Application.ProcessMessages; 397 | end; 398 | Result := Integer(lpExitCode); 399 | end; 400 | {$ENDIF} 401 | 402 | procedure TMainForm.FormCreate(Sender: TObject); 403 | begin 404 | BuildButton.Hint := BuildButton.Text; 405 | 406 | CPUTB.Text := System.CPUCount.ToString; 407 | TLinkObservers.ControlChanged(CPUTB); 408 | end; 409 | 410 | end. 411 | -------------------------------------------------------------------------------- /DelphiParallelBuild.dproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | {8D31E955-FB52-46A5-A7B5-2B09FA5513B8} 4 | 19.1 5 | FMX 6 | DelphiParallelBuild.dpr 7 | True 8 | Release 9 | Win64 10 | 37915 11 | Application 12 | 13 | 14 | true 15 | 16 | 17 | true 18 | Base 19 | true 20 | 21 | 22 | true 23 | Base 24 | true 25 | 26 | 27 | true 28 | Base 29 | true 30 | 31 | 32 | true 33 | Base 34 | true 35 | 36 | 37 | true 38 | Base 39 | true 40 | 41 | 42 | true 43 | Base 44 | true 45 | 46 | 47 | true 48 | Base 49 | true 50 | 51 | 52 | true 53 | Base 54 | true 55 | 56 | 57 | true 58 | Cfg_1 59 | true 60 | true 61 | 62 | 63 | true 64 | Cfg_1 65 | true 66 | true 67 | 68 | 69 | true 70 | Base 71 | true 72 | 73 | 74 | true 75 | Cfg_2 76 | true 77 | true 78 | 79 | 80 | true 81 | Cfg_2 82 | true 83 | true 84 | 85 | 86 | true 87 | Cfg_2 88 | true 89 | true 90 | 91 | 92 | true 93 | Cfg_2 94 | true 95 | true 96 | 97 | 98 | .\$(Platform)\$(Config) 99 | .\$(Platform)\$(Config) 100 | false 101 | false 102 | false 103 | false 104 | false 105 | System;Xml;Data;Datasnap;Web;Soap;$(DCC_Namespace) 106 | true 107 | true 108 | true 109 | true 110 | true 111 | true 112 | true 113 | true 114 | $(BDS)\bin\delphi_PROJECTICON.ico 115 | $(BDS)\bin\delphi_PROJECTICNS.icns 116 | DelphiParallelBuild 117 | 118 | 119 | DBXSqliteDriver;RESTComponents;DBXInterBaseDriver;emsclientfiredac;tethering;DataSnapFireDAC;bindcompfmx;FmxTeeUI;fmx;FireDACIBDriver;RadiantShapesFmx;FireDACDBXDriver;dbexpress;IndyCore;dsnap;emsclient;DataSnapCommon;FireDACCommon;RESTBackendComponents;soapserver;TMSLoggingPkgFMXDXE12;SampleListViewRatingsAppearancePackage;bindengine;CloudService;FireDACCommonDriver;DataSnapClient;inet;IndyIPCommon;bindcompdbx;IndyIPServer;IndySystem;fmxFireDAC;FireDAC;FireDACSqliteDriver;FMXTee;soaprtl;DbxCommonDriver;xmlrtl;soapmidas;DataSnapNativeClient;FireDACDSDriver;rtl;DbxClientDriver;CustomIPTransport;bindcomp;IndyIPClient;TMSLoggingPkgCoreDXE12;dbxcds;RadiantShapesFmx_Design;dsnapxml;DataSnapProviderClient;dbrtl;IndyProtocols;$(DCC_UsePackage) 120 | package=com.embarcadero.$(MSBuildProjectName);label=$(MSBuildProjectName);versionCode=1;versionName=1.0.0;persistent=False;restoreAnyVersion=False;installLocation=auto;largeHeap=False;theme=TitleBar;hardwareAccelerated=true;apiKey= 121 | Debug 122 | true 123 | $(BDS)\bin\Artwork\Android\FM_LauncherIcon_36x36.png 124 | $(BDS)\bin\Artwork\Android\FM_LauncherIcon_48x48.png 125 | $(BDS)\bin\Artwork\Android\FM_LauncherIcon_72x72.png 126 | $(BDS)\bin\Artwork\Android\FM_LauncherIcon_96x96.png 127 | $(BDS)\bin\Artwork\Android\FM_LauncherIcon_144x144.png 128 | $(BDS)\bin\Artwork\Android\FM_SplashImage_426x320.png 129 | $(BDS)\bin\Artwork\Android\FM_SplashImage_470x320.png 130 | $(BDS)\bin\Artwork\Android\FM_SplashImage_640x480.png 131 | $(BDS)\bin\Artwork\Android\FM_SplashImage_960x720.png 132 | $(BDS)\bin\Artwork\Android\FM_NotificationIcon_24x24.png 133 | $(BDS)\bin\Artwork\Android\FM_NotificationIcon_36x36.png 134 | $(BDS)\bin\Artwork\Android\FM_NotificationIcon_48x48.png 135 | $(BDS)\bin\Artwork\Android\FM_NotificationIcon_72x72.png 136 | $(BDS)\bin\Artwork\Android\FM_NotificationIcon_96x96.png 137 | android-support-v4.dex.jar;cloud-messaging.dex.jar;com-google-android-gms.play-services-ads-base.17.2.0.dex.jar;com-google-android-gms.play-services-ads-identifier.16.0.0.dex.jar;com-google-android-gms.play-services-ads-lite.17.2.0.dex.jar;com-google-android-gms.play-services-ads.17.2.0.dex.jar;com-google-android-gms.play-services-analytics-impl.16.0.8.dex.jar;com-google-android-gms.play-services-analytics.16.0.8.dex.jar;com-google-android-gms.play-services-base.16.0.1.dex.jar;com-google-android-gms.play-services-basement.16.2.0.dex.jar;com-google-android-gms.play-services-gass.17.2.0.dex.jar;com-google-android-gms.play-services-identity.16.0.0.dex.jar;com-google-android-gms.play-services-maps.16.1.0.dex.jar;com-google-android-gms.play-services-measurement-base.16.4.0.dex.jar;com-google-android-gms.play-services-measurement-sdk-api.16.4.0.dex.jar;com-google-android-gms.play-services-stats.16.0.1.dex.jar;com-google-android-gms.play-services-tagmanager-v4-impl.16.0.8.dex.jar;com-google-android-gms.play-services-tasks.16.0.1.dex.jar;com-google-android-gms.play-services-wallet.16.0.1.dex.jar;com-google-firebase.firebase-analytics.16.4.0.dex.jar;com-google-firebase.firebase-common.16.1.0.dex.jar;com-google-firebase.firebase-iid-interop.16.0.1.dex.jar;com-google-firebase.firebase-iid.17.1.1.dex.jar;com-google-firebase.firebase-measurement-connector.17.0.1.dex.jar;com-google-firebase.firebase-messaging.17.5.0.dex.jar;fmx.dex.jar;google-play-billing.dex.jar;google-play-licensing.dex.jar 138 | 139 | 140 | DBXSqliteDriver;RESTComponents;DBXInterBaseDriver;emsclientfiredac;tethering;DataSnapFireDAC;bindcompfmx;FmxTeeUI;fmx;FireDACIBDriver;RadiantShapesFmx;FireDACDBXDriver;dbexpress;IndyCore;dsnap;emsclient;DataSnapCommon;FireDACCommon;RESTBackendComponents;soapserver;bindengine;CloudService;FireDACCommonDriver;DataSnapClient;inet;IndyIPCommon;bindcompdbx;IndyIPServer;IndySystem;fmxFireDAC;FireDAC;FireDACSqliteDriver;FMXTee;soaprtl;DbxCommonDriver;xmlrtl;soapmidas;DataSnapNativeClient;FireDACDSDriver;rtl;DbxClientDriver;CustomIPTransport;bindcomp;ClassBrowsing;IndyIPClient;dbxcds;RadiantShapesFmx_Design;dsnapxml;DataSnapProviderClient;dbrtl;IndyProtocols;$(DCC_UsePackage) 141 | package=com.embarcadero.$(MSBuildProjectName);label=$(MSBuildProjectName);versionCode=1;versionName=1.0.0;persistent=False;restoreAnyVersion=False;installLocation=auto;largeHeap=False;theme=TitleBar;hardwareAccelerated=true;apiKey= 142 | Debug 143 | true 144 | $(BDS)\bin\Artwork\Android\FM_LauncherIcon_36x36.png 145 | $(BDS)\bin\Artwork\Android\FM_LauncherIcon_48x48.png 146 | $(BDS)\bin\Artwork\Android\FM_LauncherIcon_72x72.png 147 | $(BDS)\bin\Artwork\Android\FM_LauncherIcon_96x96.png 148 | $(BDS)\bin\Artwork\Android\FM_LauncherIcon_144x144.png 149 | $(BDS)\bin\Artwork\Android\FM_SplashImage_426x320.png 150 | $(BDS)\bin\Artwork\Android\FM_SplashImage_470x320.png 151 | $(BDS)\bin\Artwork\Android\FM_SplashImage_640x480.png 152 | $(BDS)\bin\Artwork\Android\FM_SplashImage_960x720.png 153 | $(BDS)\bin\Artwork\Android\FM_NotificationIcon_24x24.png 154 | $(BDS)\bin\Artwork\Android\FM_NotificationIcon_36x36.png 155 | $(BDS)\bin\Artwork\Android\FM_NotificationIcon_48x48.png 156 | $(BDS)\bin\Artwork\Android\FM_NotificationIcon_72x72.png 157 | $(BDS)\bin\Artwork\Android\FM_NotificationIcon_96x96.png 158 | android-support-v4.dex.jar;cloud-messaging.dex.jar;com-google-android-gms.play-services-ads-base.17.2.0.dex.jar;com-google-android-gms.play-services-ads-identifier.16.0.0.dex.jar;com-google-android-gms.play-services-ads-lite.17.2.0.dex.jar;com-google-android-gms.play-services-ads.17.2.0.dex.jar;com-google-android-gms.play-services-analytics-impl.16.0.8.dex.jar;com-google-android-gms.play-services-analytics.16.0.8.dex.jar;com-google-android-gms.play-services-base.16.0.1.dex.jar;com-google-android-gms.play-services-basement.16.2.0.dex.jar;com-google-android-gms.play-services-gass.17.2.0.dex.jar;com-google-android-gms.play-services-identity.16.0.0.dex.jar;com-google-android-gms.play-services-maps.16.1.0.dex.jar;com-google-android-gms.play-services-measurement-base.16.4.0.dex.jar;com-google-android-gms.play-services-measurement-sdk-api.16.4.0.dex.jar;com-google-android-gms.play-services-stats.16.0.1.dex.jar;com-google-android-gms.play-services-tagmanager-v4-impl.16.0.8.dex.jar;com-google-android-gms.play-services-tasks.16.0.1.dex.jar;com-google-android-gms.play-services-wallet.16.0.1.dex.jar;com-google-firebase.firebase-analytics.16.4.0.dex.jar;com-google-firebase.firebase-common.16.1.0.dex.jar;com-google-firebase.firebase-iid-interop.16.0.1.dex.jar;com-google-firebase.firebase-iid.17.1.1.dex.jar;com-google-firebase.firebase-measurement-connector.17.0.1.dex.jar;com-google-firebase.firebase-messaging.17.5.0.dex.jar;fmx.dex.jar;google-play-billing.dex.jar;google-play-licensing.dex.jar 159 | 160 | 161 | DBXSqliteDriver;RESTComponents;fmxase;DBXInterBaseDriver;emsclientfiredac;tethering;DataSnapFireDAC;bindcompfmx;FmxTeeUI;fmx;FireDACIBDriver;RadiantShapesFmx;FireDACDBXDriver;dbexpress;IndyCore;dsnap;emsclient;DataSnapCommon;FireDACCommon;RESTBackendComponents;soapserver;TMSLoggingPkgFMXDXE12;SampleListViewRatingsAppearancePackage;bindengine;CloudService;FireDACCommonDriver;TMSFMXWebGMapsPkgDXE12;DataSnapClient;inet;IndyIPCommon;bindcompdbx;IndyIPServer;TMSFMXCloudPackPkgDXE12;IndySystem;fmxFireDAC;FireDAC;TMSFMXChartPkgDXE12;FireDACSqliteDriver;FMXTee;soaprtl;DbxCommonDriver;xmlrtl;soapmidas;DataSnapNativeClient;FireDACDSDriver;rtl;DbxClientDriver;CustomIPTransport;bindcomp;fgx;ClassBrowsing;IndyIPClient;TMSLoggingPkgCoreDXE12;dbxcds;TMSFMXPackPkgDXE12;RadiantShapesFmx_Design;dsnapxml;DataSnapProviderClient;dbrtl;IndyProtocols;$(DCC_UsePackage) 162 | CFBundleName=$(MSBuildProjectName);CFBundleDevelopmentRegion=en;CFBundleDisplayName=$(MSBuildProjectName);CFBundleIdentifier=$(MSBuildProjectName);CFBundleInfoDictionaryVersion=7.1;CFBundleVersion=1.0.0;CFBundleShortVersionString=1.0.0;CFBundlePackageType=APPL;CFBundleSignature=????;LSRequiresIPhoneOS=true;CFBundleAllowMixedLocalizations=YES;CFBundleExecutable=$(MSBuildProjectName);UIDeviceFamily=iPhone & iPad;NSLocationAlwaysUsageDescription=The reason for accessing the location information of the user;NSLocationWhenInUseUsageDescription=The reason for accessing the location information of the user;NSLocationAlwaysAndWhenInUseUsageDescription=The reason for accessing the location information of the user;UIBackgroundModes=;NSContactsUsageDescription=The reason for accessing the contacts;NSPhotoLibraryUsageDescription=The reason for accessing the photo library;NSPhotoLibraryAddUsageDescription=The reason for adding to the photo library;NSCameraUsageDescription=The reason for accessing the camera;NSFaceIDUsageDescription=The reason for accessing the face id;NSMicrophoneUsageDescription=The reason for accessing the microphone;NSSiriUsageDescription=The reason for accessing Siri;ITSAppUsesNonExemptEncryption=false;NSBluetoothAlwaysUsageDescription=The reason for accessing bluetooth;NSBluetoothPeripheralUsageDescription=The reason for accessing bluetooth peripherals;NSCalendarsUsageDescription=The reason for accessing the calendar data;NSRemindersUsageDescription=The reason for accessing the reminders;NSMotionUsageDescription=The reason for accessing the accelerometer;NSSpeechRecognitionUsageDescription=The reason for requesting to send user data to Apple's speech recognition servers 163 | iPhoneAndiPad 164 | true 165 | Debug 166 | $(MSBuildProjectName) 167 | $(BDS)\bin\Artwork\iOS\iPhone\FM_ApplicationIcon_120x120.png 168 | $(BDS)\bin\Artwork\iOS\iPhone\FM_ApplicationIcon_180x180.png 169 | $(BDS)\bin\Artwork\iOS\iPhone\FM_SpotlightSearchIcon_80x80.png 170 | $(BDS)\bin\Artwork\iOS\iPhone\FM_SpotlightSearchIcon_120x120.png 171 | $(BDS)\bin\Artwork\iOS\iPad\FM_ApplicationIcon_152x152.png 172 | $(BDS)\bin\Artwork\iOS\iPad\FM_ApplicationIcon_167x167.png 173 | $(BDS)\bin\Artwork\iOS\iPad\FM_SpotlightSearchIcon_80x80.png 174 | $(BDS)\bin\Artwork\iOS\iPad\FM_SettingIcon_58x58.png 175 | $(BDS)\bin\Artwork\iOS\iPhone\FM_LaunchImage_2x.png 176 | $(BDS)\bin\Artwork\iOS\iPhone\FM_LaunchImageDark_2x.png 177 | $(BDS)\bin\Artwork\iOS\iPhone\FM_LaunchImage_3x.png 178 | $(BDS)\bin\Artwork\iOS\iPhone\FM_LaunchImageDark_3x.png 179 | $(BDS)\bin\Artwork\iOS\iPad\FM_LaunchImage_2x.png 180 | $(BDS)\bin\Artwork\iOS\iPad\FM_LaunchImageDark_2x.png 181 | $(BDS)\bin\Artwork\iOS\iPhone\FM_ApplicationIcon_1024x1024.png 182 | $(BDS)\bin\Artwork\iOS\iPhone\FM_NotificationIcon_60x60.png 183 | $(BDS)\bin\Artwork\iOS\iPhone\FM_SettingIcon_87x87.png 184 | $(BDS)\bin\Artwork\iOS\iPhone\FM_NotificationIcon_40x40.png 185 | $(BDS)\bin\Artwork\iOS\iPhone\FM_SettingIcon_58x58.png 186 | $(BDS)\bin\Artwork\iOS\iPad\FM_NotificationIcon_40x40.png 187 | 188 | 189 | DBXSqliteDriver;RESTComponents;fmxase;DBXInterBaseDriver;emsclientfiredac;tethering;DataSnapFireDAC;bindcompfmx;FmxTeeUI;fmx;FireDACIBDriver;RadiantShapesFmx;FireDACDBXDriver;dbexpress;IndyCore;dsnap;emsclient;DataSnapCommon;FireDACCommon;RESTBackendComponents;soapserver;TMSLoggingPkgFMXDXE12;SampleListViewRatingsAppearancePackage;bindengine;CloudService;FireDACCommonDriver;DataSnapClient;inet;IndyIPCommon;bindcompdbx;IndyIPServer;TMSFMXCloudPackPkgDXE12;IndySystem;fmxFireDAC;FireDAC;FireDACSqliteDriver;FMXTee;soaprtl;DbxCommonDriver;xmlrtl;soapmidas;DataSnapNativeClient;FireDACDSDriver;rtl;DbxClientDriver;CustomIPTransport;bindcomp;IndyIPClient;TMSLoggingPkgCoreDXE12;dbxcds;RadiantShapesFmx_Design;dsnapxml;DataSnapProviderClient;dbrtl;IndyProtocols;$(DCC_UsePackage) 190 | CFBundleName=$(MSBuildProjectName);CFBundleDevelopmentRegion=en;CFBundleDisplayName=$(MSBuildProjectName);CFBundleIdentifier=$(MSBuildProjectName);CFBundleInfoDictionaryVersion=7.1;CFBundleVersion=1.0.0;CFBundleShortVersionString=1.0.0;CFBundlePackageType=APPL;CFBundleSignature=????;LSRequiresIPhoneOS=true;CFBundleAllowMixedLocalizations=YES;CFBundleExecutable=$(MSBuildProjectName);UIDeviceFamily=iPhone & iPad;NSLocationAlwaysUsageDescription=The reason for accessing the location information of the user;NSLocationWhenInUseUsageDescription=The reason for accessing the location information of the user;NSLocationAlwaysAndWhenInUseUsageDescription=The reason for accessing the location information of the user;UIBackgroundModes=;NSContactsUsageDescription=The reason for accessing the contacts;NSPhotoLibraryUsageDescription=The reason for accessing the photo library;NSPhotoLibraryAddUsageDescription=The reason for adding to the photo library;NSCameraUsageDescription=The reason for accessing the camera;NSFaceIDUsageDescription=The reason for accessing the face id;NSMicrophoneUsageDescription=The reason for accessing the microphone;NSSiriUsageDescription=The reason for accessing Siri;ITSAppUsesNonExemptEncryption=false;NSBluetoothAlwaysUsageDescription=The reason for accessing bluetooth;NSBluetoothPeripheralUsageDescription=The reason for accessing bluetooth peripherals;NSCalendarsUsageDescription=The reason for accessing the calendar data;NSRemindersUsageDescription=The reason for accessing the reminders;NSMotionUsageDescription=The reason for accessing the accelerometer;NSSpeechRecognitionUsageDescription=The reason for requesting to send user data to Apple's speech recognition servers 191 | iPhoneAndiPad 192 | true 193 | $(BDS)\bin\Artwork\iOS\iPhone\FM_ApplicationIcon_120x120.png 194 | $(BDS)\bin\Artwork\iOS\iPhone\FM_ApplicationIcon_180x180.png 195 | $(BDS)\bin\Artwork\iOS\iPhone\FM_SpotlightSearchIcon_80x80.png 196 | $(BDS)\bin\Artwork\iOS\iPhone\FM_SpotlightSearchIcon_120x120.png 197 | $(BDS)\bin\Artwork\iOS\iPad\FM_ApplicationIcon_152x152.png 198 | $(BDS)\bin\Artwork\iOS\iPad\FM_ApplicationIcon_167x167.png 199 | $(BDS)\bin\Artwork\iOS\iPad\FM_SpotlightSearchIcon_80x80.png 200 | $(BDS)\bin\Artwork\iOS\iPad\FM_SettingIcon_58x58.png 201 | $(BDS)\bin\Artwork\iOS\iPhone\FM_LaunchImage_2x.png 202 | $(BDS)\bin\Artwork\iOS\iPhone\FM_LaunchImageDark_2x.png 203 | $(BDS)\bin\Artwork\iOS\iPhone\FM_LaunchImage_3x.png 204 | $(BDS)\bin\Artwork\iOS\iPhone\FM_LaunchImageDark_3x.png 205 | $(BDS)\bin\Artwork\iOS\iPad\FM_LaunchImage_2x.png 206 | $(BDS)\bin\Artwork\iOS\iPad\FM_LaunchImageDark_2x.png 207 | 10.0 208 | $(BDS)\bin\Artwork\iOS\iPhone\FM_NotificationIcon_60x60.png 209 | $(BDS)\bin\Artwork\iOS\iPhone\FM_SettingIcon_87x87.png 210 | $(BDS)\bin\Artwork\iOS\iPhone\FM_NotificationIcon_40x40.png 211 | $(BDS)\bin\Artwork\iOS\iPhone\FM_SettingIcon_58x58.png 212 | $(BDS)\bin\Artwork\iOS\iPad\FM_NotificationIcon_40x40.png 213 | 214 | 215 | DBXSqliteDriver;RESTComponents;fmxase;DBXInterBaseDriver;emsclientfiredac;tethering;DataSnapFireDAC;FireDACMSSQLDriver;bindcompfmx;DBXOracleDriver;inetdb;FmxTeeUI;fmx;FireDACIBDriver;fmxdae;RadiantShapesFmx;FireDACDBXDriver;dbexpress;IndyCore;dsnap;emsclient;DataSnapCommon;FireDACCommon;RESTBackendComponents;soapserver;bindengine;DBXMySQLDriver;CloudService;FireDACOracleDriver;FireDACMySQLDriver;DBXFirebirdDriver;FireDACCommonODBC;FireDACCommonDriver;DataSnapClient;inet;IndyIPCommon;bindcompdbx;IndyIPServer;IndySystem;fmxFireDAC;FireDAC;FireDACSqliteDriver;FireDACPgDriver;FireDACASADriver;FireDACTDataDriver;FMXTee;soaprtl;DbxCommonDriver;DataSnapServer;xmlrtl;soapmidas;DataSnapNativeClient;fmxobj;FireDACDSDriver;rtl;DbxClientDriver;DBXSybaseASADriver;CustomIPTransport;bindcomp;DBXInformixDriver;ClassBrowsing;IndyIPClient;dbxcds;FireDACODBCDriver;RadiantShapesFmx_Design;DataSnapIndy10ServerTransport;dsnapxml;DataSnapProviderClient;dbrtl;IndyProtocols;inetdbxpress;FireDACMongoDBDriver;DataSnapServerMidas;$(DCC_UsePackage) 216 | CFBundleName=$(MSBuildProjectName);CFBundleDisplayName=$(MSBuildProjectName);CFBundleIdentifier=$(MSBuildProjectName);CFBundleVersion=1.0.0;CFBundleShortVersionString=1.0.0;CFBundlePackageType=APPL;CFBundleSignature=????;CFBundleAllowMixedLocalizations=YES;CFBundleExecutable=$(MSBuildProjectName);NSHighResolutionCapable=true;LSApplicationCategoryType=public.app-category.utilities;NSLocationUsageDescription=The reason for accessing the location information of the user;NSContactsUsageDescription=The reason for accessing the contacts;NSCalendarsUsageDescription=The reason for accessing the calendar data;NSRemindersUsageDescription=The reason for accessing the reminders;NSCameraUsageDescription=The reason for accessing the camera;NSMicrophoneUsageDescription=The reason for accessing the microphone;NSMotionUsageDescription=The reason for accessing the accelerometer;NSDesktopFolderUsageDescription=The reason for accessing the Desktop folder;NSDocumentsFolderUsageDescription=The reason for accessing the Documents folder;NSDownloadsFolderUsageDescription=The reason for accessing the Downloads folder;NSNetworkVolumesUsageDescription=The reason for accessing files on a network volume;NSRemovableVolumesUsageDescription=The reason for accessing files on a removable volume;NSSpeechRecognitionUsageDescription=The reason for requesting to send user data to Apple's speech recognition servers 217 | Debug 218 | true 219 | 220 | 221 | DBXSqliteDriver;RESTComponents;fmxase;DBXDb2Driver;DBXInterBaseDriver;vclactnband;vclFireDAC;TMSmCLPkgDXE12;emsclientfiredac;TMSiCLPkgDXE12;tethering;svnui;DataSnapFireDAC;FireDACADSDriver;DBXMSSQLDriver;DatasnapConnectorsFreePascal;FireDACMSSQLDriver;vcltouch;vcldb;bindcompfmx;svn;TMSWEBCorePkgLibDXE12;DBXOracleDriver;inetdb;TMSFMXCloudPackPkgDEDXE12;FmxTeeUI;emsedge;fmx;FireDACIBDriver;fmxdae;RadiantShapesFmx;FireDACDBXDriver;dbexpress;IndyCore;vclx;dsnap;emsclient;DataSnapCommon;FireDACCommon;RESTBackendComponents;DataSnapConnectors;VCLRESTComponents;soapserver;TMSLoggingPkgFMXDXE12;SampleListViewRatingsAppearancePackage;vclie;bindengine;DBXMySQLDriver;CloudService;FireDACOracleDriver;FireDACMySQLDriver;DBXFirebirdDriver;CData.Salesforce.D26;FireDACCommonODBC;FireDACCommonDriver;TMSFMXWebGMapsPkgDXE12;DataSnapClient;inet;IndyIPCommon;bindcompdbx;vcl;IndyIPServer;DBXSybaseASEDriver;TMSFMXCloudPackPkgDXE12;IndySystem;FireDACDb2Driver;dsnapcon;FireDACMSAccDriver;fmxFireDAC;FireDACInfxDriver;vclimg;TeeDB;FireDAC;TMSFMXChartPkgDXE12;emshosting;FireDACSqliteDriver;FireDACPgDriver;FireDACASADriver;DBXOdbcDriver;FireDACTDataDriver;FMXTee;soaprtl;DbxCommonDriver;Tee;DataSnapServer;xmlrtl;soapmidas;DataSnapNativeClient;fmxobj;vclwinx;FireDACDSDriver;rtl;emsserverresource;DbxClientDriver;DBXSybaseASADriver;CustomIPTransport;vcldsnap;SynEditDR;bindcomp;appanalytics;fgx;DBXInformixDriver;ClassBrowsing;TMSLoggingPkgVCLDXE12;IndyIPClient;TMSWEBCorePkgDXE12;bindcompvcl;TMSLoggingPkgCoreDXE12;TeeUI;dbxcds;VclSmp;TMSFMXPackPkgDXE12;adortl;FireDACODBCDriver;RadiantShapesFmx_Design;DataSnapIndy10ServerTransport;TMSFMXWebOSMapsPkgDXE12;dsnapxml;DataSnapProviderClient;dbrtl;IndyProtocols;inetdbxpress;FireDACMongoDBDriver;DataSnapServerMidas;$(DCC_UsePackage) 222 | Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace) 223 | Debug 224 | true 225 | CompanyName=;FileDescription=$(MSBuildProjectName);FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProgramID=com.embarcadero.$(MSBuildProjectName);ProductName=$(MSBuildProjectName);ProductVersion=1.0.0.0;Comments= 226 | 1033 227 | $(BDS)\bin\default_app.manifest 228 | $(BDS)\bin\Artwork\Windows\UWP\delphi_UwpDefault_44.png 229 | $(BDS)\bin\Artwork\Windows\UWP\delphi_UwpDefault_150.png 230 | 231 | 232 | DBXSqliteDriver;RESTComponents;fmxase;DBXDb2Driver;DBXInterBaseDriver;vclactnband;vclFireDAC;emsclientfiredac;tethering;DataSnapFireDAC;FireDACADSDriver;DBXMSSQLDriver;DatasnapConnectorsFreePascal;FireDACMSSQLDriver;vcltouch;vcldb;bindcompfmx;DBXOracleDriver;inetdb;FmxTeeUI;emsedge;fmx;FireDACIBDriver;fmxdae;RadiantShapesFmx;FireDACDBXDriver;dbexpress;IndyCore;vclx;dsnap;emsclient;DataSnapCommon;FireDACCommon;RESTBackendComponents;DataSnapConnectors;VCLRESTComponents;soapserver;TMSLoggingPkgFMXDXE12;vclie;bindengine;DBXMySQLDriver;CloudService;FireDACOracleDriver;FireDACMySQLDriver;DBXFirebirdDriver;CData.Salesforce.D26;FireDACCommonODBC;FireDACCommonDriver;DataSnapClient;inet;IndyIPCommon;bindcompdbx;vcl;IndyIPServer;DBXSybaseASEDriver;IndySystem;FireDACDb2Driver;dsnapcon;FireDACMSAccDriver;fmxFireDAC;FireDACInfxDriver;vclimg;TeeDB;FireDAC;emshosting;FireDACSqliteDriver;FireDACPgDriver;FireDACASADriver;DBXOdbcDriver;FireDACTDataDriver;FMXTee;soaprtl;DbxCommonDriver;Tee;DataSnapServer;xmlrtl;soapmidas;DataSnapNativeClient;fmxobj;vclwinx;FireDACDSDriver;rtl;emsserverresource;DbxClientDriver;DBXSybaseASADriver;CustomIPTransport;vcldsnap;SynEditDR;bindcomp;appanalytics;DBXInformixDriver;TMSLoggingPkgVCLDXE12;IndyIPClient;bindcompvcl;TMSLoggingPkgCoreDXE12;TeeUI;dbxcds;VclSmp;adortl;FireDACODBCDriver;RadiantShapesFmx_Design;DataSnapIndy10ServerTransport;dsnapxml;DataSnapProviderClient;dbrtl;IndyProtocols;inetdbxpress;FireDACMongoDBDriver;DataSnapServerMidas;$(DCC_UsePackage) 233 | Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;$(DCC_Namespace) 234 | Debug 235 | true 236 | CompanyName=;FileDescription=$(MSBuildProjectName);FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProgramID=com.embarcadero.$(MSBuildProjectName);ProductName=$(MSBuildProjectName);ProductVersion=1.0.0.0;Comments= 237 | 1033 238 | $(BDS)\bin\default_app.manifest 239 | $(BDS)\bin\Artwork\Windows\UWP\delphi_UwpDefault_44.png 240 | $(BDS)\bin\Artwork\Windows\UWP\delphi_UwpDefault_150.png 241 | 242 | 243 | DEBUG;$(DCC_Define) 244 | true 245 | false 246 | true 247 | true 248 | true 249 | 250 | 251 | false 252 | true 253 | PerMonitorV2 254 | 255 | 256 | true 257 | PerMonitorV2 258 | 259 | 260 | false 261 | RELEASE;$(DCC_Define) 262 | 0 263 | 0 264 | 265 | 266 | $(BDS)\bin\Artwork\iOS\iPhone\FM_NotificationIcon_60x60.png 267 | $(BDS)\bin\Artwork\iOS\iPhone\FM_SettingIcon_87x87.png 268 | $(BDS)\bin\Artwork\iOS\iPhone\FM_NotificationIcon_40x40.png 269 | $(BDS)\bin\Artwork\iOS\iPhone\FM_SettingIcon_58x58.png 270 | $(BDS)\bin\Artwork\iOS\iPad\FM_NotificationIcon_40x40.png 271 | 272 | 273 | $(BDS)\bin\Artwork\iOS\iPhone\FM_NotificationIcon_60x60.png 274 | $(BDS)\bin\Artwork\iOS\iPhone\FM_SettingIcon_87x87.png 275 | $(BDS)\bin\Artwork\iOS\iPhone\FM_NotificationIcon_40x40.png 276 | $(BDS)\bin\Artwork\iOS\iPhone\FM_SettingIcon_58x58.png 277 | $(BDS)\bin\Artwork\iOS\iPad\FM_NotificationIcon_40x40.png 278 | 279 | 280 | true 281 | PerMonitorV2 282 | 283 | 284 | true 285 | PerMonitorV2 286 | 287 | 288 | 289 | MainSource 290 | 291 | 292 |
MainForm
293 | fmx 294 |
295 | 296 | Cfg_2 297 | Base 298 | 299 | 300 | Base 301 | 302 | 303 | Cfg_1 304 | Base 305 | 306 |
307 | 308 | Delphi.Personality.12 309 | Application 310 | 311 | 312 | 313 | DelphiParallelBuild.dpr 314 | 315 | 316 | 317 | 318 | 319 | true 320 | 321 | 322 | 323 | 324 | true 325 | 326 | 327 | 328 | 329 | true 330 | 331 | 332 | 333 | 334 | DelphiParallelBuild.exe 335 | true 336 | 337 | 338 | 339 | 340 | DelphiParallelBuild.exe 341 | true 342 | 343 | 344 | 345 | 346 | 1 347 | 348 | 349 | Contents\MacOS 350 | 1 351 | 352 | 353 | 0 354 | 355 | 356 | 357 | 358 | classes 359 | 1 360 | 361 | 362 | classes 363 | 1 364 | 365 | 366 | 367 | 368 | res\xml 369 | 1 370 | 371 | 372 | res\xml 373 | 1 374 | 375 | 376 | 377 | 378 | library\lib\armeabi-v7a 379 | 1 380 | 381 | 382 | 383 | 384 | library\lib\armeabi 385 | 1 386 | 387 | 388 | library\lib\armeabi 389 | 1 390 | 391 | 392 | 393 | 394 | library\lib\armeabi-v7a 395 | 1 396 | 397 | 398 | 399 | 400 | library\lib\mips 401 | 1 402 | 403 | 404 | library\lib\mips 405 | 1 406 | 407 | 408 | 409 | 410 | library\lib\armeabi-v7a 411 | 1 412 | 413 | 414 | library\lib\arm64-v8a 415 | 1 416 | 417 | 418 | 419 | 420 | library\lib\armeabi-v7a 421 | 1 422 | 423 | 424 | 425 | 426 | res\drawable 427 | 1 428 | 429 | 430 | res\drawable 431 | 1 432 | 433 | 434 | 435 | 436 | res\values 437 | 1 438 | 439 | 440 | res\values 441 | 1 442 | 443 | 444 | 445 | 446 | res\values-v21 447 | 1 448 | 449 | 450 | res\values-v21 451 | 1 452 | 453 | 454 | 455 | 456 | res\values 457 | 1 458 | 459 | 460 | res\values 461 | 1 462 | 463 | 464 | 465 | 466 | res\drawable 467 | 1 468 | 469 | 470 | res\drawable 471 | 1 472 | 473 | 474 | 475 | 476 | res\drawable-xxhdpi 477 | 1 478 | 479 | 480 | res\drawable-xxhdpi 481 | 1 482 | 483 | 484 | 485 | 486 | res\drawable-ldpi 487 | 1 488 | 489 | 490 | res\drawable-ldpi 491 | 1 492 | 493 | 494 | 495 | 496 | res\drawable-mdpi 497 | 1 498 | 499 | 500 | res\drawable-mdpi 501 | 1 502 | 503 | 504 | 505 | 506 | res\drawable-hdpi 507 | 1 508 | 509 | 510 | res\drawable-hdpi 511 | 1 512 | 513 | 514 | 515 | 516 | res\drawable-xhdpi 517 | 1 518 | 519 | 520 | res\drawable-xhdpi 521 | 1 522 | 523 | 524 | 525 | 526 | res\drawable-mdpi 527 | 1 528 | 529 | 530 | res\drawable-mdpi 531 | 1 532 | 533 | 534 | 535 | 536 | res\drawable-hdpi 537 | 1 538 | 539 | 540 | res\drawable-hdpi 541 | 1 542 | 543 | 544 | 545 | 546 | res\drawable-xhdpi 547 | 1 548 | 549 | 550 | res\drawable-xhdpi 551 | 1 552 | 553 | 554 | 555 | 556 | res\drawable-xxhdpi 557 | 1 558 | 559 | 560 | res\drawable-xxhdpi 561 | 1 562 | 563 | 564 | 565 | 566 | res\drawable-xxxhdpi 567 | 1 568 | 569 | 570 | res\drawable-xxxhdpi 571 | 1 572 | 573 | 574 | 575 | 576 | res\drawable-small 577 | 1 578 | 579 | 580 | res\drawable-small 581 | 1 582 | 583 | 584 | 585 | 586 | res\drawable-normal 587 | 1 588 | 589 | 590 | res\drawable-normal 591 | 1 592 | 593 | 594 | 595 | 596 | res\drawable-large 597 | 1 598 | 599 | 600 | res\drawable-large 601 | 1 602 | 603 | 604 | 605 | 606 | res\drawable-xlarge 607 | 1 608 | 609 | 610 | res\drawable-xlarge 611 | 1 612 | 613 | 614 | 615 | 616 | res\values 617 | 1 618 | 619 | 620 | res\values 621 | 1 622 | 623 | 624 | 625 | 626 | 1 627 | 628 | 629 | Contents\MacOS 630 | 1 631 | 632 | 633 | 0 634 | 635 | 636 | 637 | 638 | Contents\MacOS 639 | 1 640 | .framework 641 | 642 | 643 | Contents\MacOS 644 | 1 645 | .framework 646 | 647 | 648 | 0 649 | 650 | 651 | 652 | 653 | 1 654 | .dylib 655 | 656 | 657 | 1 658 | .dylib 659 | 660 | 661 | 1 662 | .dylib 663 | 664 | 665 | Contents\MacOS 666 | 1 667 | .dylib 668 | 669 | 670 | Contents\MacOS 671 | 1 672 | .dylib 673 | 674 | 675 | 0 676 | .dll;.bpl 677 | 678 | 679 | 680 | 681 | 1 682 | .dylib 683 | 684 | 685 | 1 686 | .dylib 687 | 688 | 689 | 1 690 | .dylib 691 | 692 | 693 | Contents\MacOS 694 | 1 695 | .dylib 696 | 697 | 698 | Contents\MacOS 699 | 1 700 | .dylib 701 | 702 | 703 | 0 704 | .bpl 705 | 706 | 707 | 708 | 709 | 0 710 | 711 | 712 | 0 713 | 714 | 715 | 0 716 | 717 | 718 | 0 719 | 720 | 721 | 0 722 | 723 | 724 | Contents\Resources\StartUp\ 725 | 0 726 | 727 | 728 | Contents\Resources\StartUp\ 729 | 0 730 | 731 | 732 | 0 733 | 734 | 735 | 736 | 737 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 738 | 1 739 | 740 | 741 | 742 | 743 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 744 | 1 745 | 746 | 747 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 748 | 1 749 | 750 | 751 | 752 | 753 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 754 | 1 755 | 756 | 757 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 758 | 1 759 | 760 | 761 | 762 | 763 | 1 764 | 765 | 766 | 1 767 | 768 | 769 | 1 770 | 771 | 772 | 773 | 774 | 1 775 | 776 | 777 | 1 778 | 779 | 780 | 1 781 | 782 | 783 | 784 | 785 | 1 786 | 787 | 788 | 1 789 | 790 | 791 | 1 792 | 793 | 794 | 795 | 796 | 1 797 | 798 | 799 | 1 800 | 801 | 802 | 1 803 | 804 | 805 | 806 | 807 | 1 808 | 809 | 810 | 1 811 | 812 | 813 | 1 814 | 815 | 816 | 817 | 818 | 1 819 | 820 | 821 | 1 822 | 823 | 824 | 1 825 | 826 | 827 | 828 | 829 | 1 830 | 831 | 832 | 1 833 | 834 | 835 | 1 836 | 837 | 838 | 839 | 840 | 1 841 | 842 | 843 | 1 844 | 845 | 846 | 1 847 | 848 | 849 | 850 | 851 | 1 852 | 853 | 854 | 1 855 | 856 | 857 | 1 858 | 859 | 860 | 861 | 862 | ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset 863 | 1 864 | 865 | 866 | ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset 867 | 1 868 | 869 | 870 | 871 | 872 | 1 873 | 874 | 875 | 1 876 | 877 | 878 | 1 879 | 880 | 881 | 882 | 883 | ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset 884 | 1 885 | 886 | 887 | ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset 888 | 1 889 | 890 | 891 | 892 | 893 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 894 | 1 895 | 896 | 897 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 898 | 1 899 | 900 | 901 | 902 | 903 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 904 | 1 905 | 906 | 907 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 908 | 1 909 | 910 | 911 | 912 | 913 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 914 | 1 915 | 916 | 917 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 918 | 1 919 | 920 | 921 | 922 | 923 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 924 | 1 925 | 926 | 927 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 928 | 1 929 | 930 | 931 | 932 | 933 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 934 | 1 935 | 936 | 937 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 938 | 1 939 | 940 | 941 | 942 | 943 | 1 944 | 945 | 946 | 1 947 | 948 | 949 | 1 950 | 951 | 952 | 953 | 954 | 1 955 | 956 | 957 | 1 958 | 959 | 960 | 1 961 | 962 | 963 | 964 | 965 | 1 966 | 967 | 968 | 1 969 | 970 | 971 | 1 972 | 973 | 974 | 975 | 976 | 1 977 | 978 | 979 | 1 980 | 981 | 982 | 1 983 | 984 | 985 | 986 | 987 | 1 988 | 989 | 990 | 1 991 | 992 | 993 | 1 994 | 995 | 996 | 997 | 998 | 1 999 | 1000 | 1001 | 1 1002 | 1003 | 1004 | 1 1005 | 1006 | 1007 | 1008 | 1009 | 1 1010 | 1011 | 1012 | 1 1013 | 1014 | 1015 | 1 1016 | 1017 | 1018 | 1019 | 1020 | 1 1021 | 1022 | 1023 | 1 1024 | 1025 | 1026 | 1 1027 | 1028 | 1029 | 1030 | 1031 | 1 1032 | 1033 | 1034 | 1 1035 | 1036 | 1037 | 1 1038 | 1039 | 1040 | 1041 | 1042 | ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset 1043 | 1 1044 | 1045 | 1046 | ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset 1047 | 1 1048 | 1049 | 1050 | 1051 | 1052 | 1 1053 | 1054 | 1055 | 1 1056 | 1057 | 1058 | 1 1059 | 1060 | 1061 | 1062 | 1063 | ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset 1064 | 1 1065 | 1066 | 1067 | ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset 1068 | 1 1069 | 1070 | 1071 | 1072 | 1073 | 1 1074 | 1075 | 1076 | 1 1077 | 1078 | 1079 | 1 1080 | 1081 | 1082 | 1083 | 1084 | 1 1085 | 1086 | 1087 | 1 1088 | 1089 | 1090 | 1 1091 | 1092 | 1093 | 1094 | 1095 | 1 1096 | 1097 | 1098 | 1 1099 | 1100 | 1101 | 1 1102 | 1103 | 1104 | 1105 | 1106 | 1 1107 | 1108 | 1109 | 1 1110 | 1111 | 1112 | 1 1113 | 1114 | 1115 | 1116 | 1117 | ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset 1118 | 1 1119 | 1120 | 1121 | ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset 1122 | 1 1123 | 1124 | 1125 | 1126 | 1127 | ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset 1128 | 1 1129 | 1130 | 1131 | ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset 1132 | 1 1133 | 1134 | 1135 | 1136 | 1137 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 1138 | 1 1139 | 1140 | 1141 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 1142 | 1 1143 | 1144 | 1145 | 1146 | 1147 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 1148 | 1 1149 | 1150 | 1151 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 1152 | 1 1153 | 1154 | 1155 | 1156 | 1157 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 1158 | 1 1159 | 1160 | 1161 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 1162 | 1 1163 | 1164 | 1165 | 1166 | 1167 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 1168 | 1 1169 | 1170 | 1171 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 1172 | 1 1173 | 1174 | 1175 | 1176 | 1177 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 1178 | 1 1179 | 1180 | 1181 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 1182 | 1 1183 | 1184 | 1185 | 1186 | 1187 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 1188 | 1 1189 | 1190 | 1191 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 1192 | 1 1193 | 1194 | 1195 | 1196 | 1197 | 1 1198 | 1199 | 1200 | 1 1201 | 1202 | 1203 | 1204 | 1205 | ..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF 1206 | 1 1207 | 1208 | 1209 | ..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF 1210 | 1 1211 | 1212 | 1213 | 1214 | 1215 | 1 1216 | 1217 | 1218 | 1 1219 | 1220 | 1221 | 1222 | 1223 | ..\ 1224 | 1 1225 | 1226 | 1227 | ..\ 1228 | 1 1229 | 1230 | 1231 | 1232 | 1233 | 1 1234 | 1235 | 1236 | 1 1237 | 1238 | 1239 | 1 1240 | 1241 | 1242 | 1243 | 1244 | ..\$(PROJECTNAME).launchscreen 1245 | 64 1246 | 1247 | 1248 | ..\$(PROJECTNAME).launchscreen 1249 | 64 1250 | 1251 | 1252 | 1253 | 1254 | 1 1255 | 1256 | 1257 | 1 1258 | 1259 | 1260 | 1 1261 | 1262 | 1263 | 1264 | 1265 | ..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF 1266 | 1 1267 | 1268 | 1269 | 1270 | 1271 | ..\ 1272 | 1 1273 | 1274 | 1275 | ..\ 1276 | 1 1277 | 1278 | 1279 | 1280 | 1281 | Contents 1282 | 1 1283 | 1284 | 1285 | Contents 1286 | 1 1287 | 1288 | 1289 | 1290 | 1291 | Contents\Resources 1292 | 1 1293 | 1294 | 1295 | Contents\Resources 1296 | 1 1297 | 1298 | 1299 | 1300 | 1301 | library\lib\armeabi-v7a 1302 | 1 1303 | 1304 | 1305 | library\lib\arm64-v8a 1306 | 1 1307 | 1308 | 1309 | 1 1310 | 1311 | 1312 | 1 1313 | 1314 | 1315 | 1 1316 | 1317 | 1318 | 1 1319 | 1320 | 1321 | Contents\MacOS 1322 | 1 1323 | 1324 | 1325 | Contents\MacOS 1326 | 1 1327 | 1328 | 1329 | 0 1330 | 1331 | 1332 | 1333 | 1334 | library\lib\armeabi-v7a 1335 | 1 1336 | 1337 | 1338 | 1339 | 1340 | 1 1341 | 1342 | 1343 | 1 1344 | 1345 | 1346 | 1347 | 1348 | Assets 1349 | 1 1350 | 1351 | 1352 | Assets 1353 | 1 1354 | 1355 | 1356 | 1357 | 1358 | Assets 1359 | 1 1360 | 1361 | 1362 | Assets 1363 | 1 1364 | 1365 | 1366 | 1367 | 1368 | 1369 | 1370 | 1371 | 1372 | 1373 | 1374 | 1375 | 1376 | 1377 | 1378 | True 1379 | True 1380 | True 1381 | True 1382 | True 1383 | True 1384 | True 1385 | 1386 | 1387 | 12 1388 | 1389 | 1390 | 1391 | 1392 |
1393 | --------------------------------------------------------------------------------