From f989abc5e4cc3924876885a9059d64d1a935c33d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=A5=E8=8B=97=E7=9E=AC?= Date: Sat, 20 Nov 2021 01:39:35 +0800 Subject: [PATCH] upd: for rad11, but still can't open txt file. --- AndroidManifest.template.xml | 56 +++--- README.md | 12 +- Unit1.fmx | 15 +- Unit1.pas | 166 ++++++++++------ pro_Lottery.deployproj | 358 +++++++++++++++++++++++++++-------- pro_Lottery.dproj | 322 ++++++++++++++++++++++++------- pro_Lottery.dproj.local | 3 + 7 files changed, 676 insertions(+), 256 deletions(-) diff --git a/AndroidManifest.template.xml b/AndroidManifest.template.xml index 10c95df..a8a61b8 100644 --- a/AndroidManifest.template.xml +++ b/AndroidManifest.template.xml @@ -1,45 +1,49 @@ - + package="%package%" + android:versionCode="%versionCode%" + android:versionName="%versionName%" + android:installLocation="%installLocation%"> - <%uses-permission%> - - + + +<%queries-child-elements%> + + - - <%provider%> - <%application-meta-data%> - <%uses-libraries%> - <%services%> +<%provider%> +<%application-meta-data%> +<%uses-libraries%> +<%services%> - + - - + + + + - + - <%activity%> - <%receivers%> +<%activity%> +<%receivers%> diff --git a/README.md b/README.md index e4460c4..1869948 100644 --- a/README.md +++ b/README.md @@ -1,17 +1,17 @@ # AC Lottery -#### 介绍 +## 介绍 奥诚科技年会抽奖程序(功能非常简单)。 -#### 软件架构 +## 软件架构 Windows & Android -#### 安装教程 +## 安装教程 1. Windows下直接运行exe程序。 2. 安卓下安装APK并运行。 -#### 使用说明 +## 使用说明 1. 打开程序。 2. 按钮1)选择抽奖名单(安卓下预设在/storage/emulated/0/抽奖名单.txt) 3. 按钮2)选择背景音乐(安卓下固定在/storage/emulated/0/背景音乐.mp3) @@ -19,14 +19,14 @@ Windows & Android 5. 抽中的人不会参与下一次抽奖,但在预览界面仍会被随机显示和选中。 6. 无奖项设置等其它功能,适合小型抽奖。 -#### 参与贡献 +## 参与贡献 1. Fork 本仓库 2. 新建 Feat_xxx 分支 3. 提交代码 4. 新建 Pull Request -#### MISC +## MISC 2. 博客 [DDRFAN](https://blog.csdn.net/ddrfan) 3. 你可以 [https://gitee.com/explore](https://gitee.com/explore) 这个地址来了解 Gitee 上的优秀开源项目 diff --git a/Unit1.fmx b/Unit1.fmx index 370abb6..c312331 100644 --- a/Unit1.fmx +++ b/Unit1.fmx @@ -2,7 +2,7 @@ object Form5: TForm5 Left = 0 Top = 0 Caption = #22885#35802#31185#25216#26032#26149#22823#25277#22870 - ClientHeight = 591 + ClientHeight = 592 ClientWidth = 1000 Position = ScreenCenter Quality = HighPerformance @@ -41697,7 +41697,7 @@ object Form5: TForm5 HitTest = False Opacity = 0.400000005960464500 Size.Width = 1000.000000000000000000 - Size.Height = 591.000000000000000000 + Size.Height = 592.000000000000000000 Size.PlatformDefault = False WrapMode = Stretch end @@ -81783,7 +81783,7 @@ object Form5: TForm5 end object Panel1: TPanel Align = Bottom - Position.Y = 541.000000000000000000 + Position.Y = 542.000000000000000000 Size.Width = 1000.000000000000000000 Size.Height = 50.000000000000000000 Size.PlatformDefault = False @@ -81822,7 +81822,6 @@ object Form5: TForm5 Touch.InteractiveGestures = [LongTap, DoubleTap] Align = Left TabOrder = 0 - Text = '/storage/emulated/0/'#25277#22870#21517#21333'.txt' Position.Y = 9.000000000000000000 Size.Width = 353.000000000000000000 Size.Height = 32.000000000000000000 @@ -81932,7 +81931,7 @@ object Form5: TForm5 Enabled = False Hint = #25277#22870#21517#21333 Size.Width = 200.000000000000000000 - Size.Height = 541.000000000000000000 + Size.Height = 542.000000000000000000 Size.PlatformDefault = False StyleLookup = 'listboxstyle' TabOrder = 5 @@ -81950,7 +81949,7 @@ object Form5: TForm5 DefaultItemStyles.GroupHeaderStyle = 'listboxgroupheader' DefaultItemStyles.GroupFooterStyle = '' Viewport.Width = 200.000000000000000000 - Viewport.Height = 541.000000000000000000 + Viewport.Height = 542.000000000000000000 object ListBoxItem1: TListBoxItem IsSelected = True ItemData.Bitmap.PNG = { @@ -82063,14 +82062,14 @@ object Form5: TForm5 HitTest = False Position.X = 922.000000000000000000 Size.Width = 78.000000000000000000 - Size.Height = 541.000000000000000000 + Size.Height = 542.000000000000000000 Size.PlatformDefault = False StyleLookup = 'memostyle' TabOrder = 3 ParentShowHint = False ShowHint = True Viewport.Width = 68.000000000000000000 - Viewport.Height = 531.000000000000000000 + Viewport.Height = 532.000000000000000000 end object opd_names: TOpenDialog DefaultExt = '*.txt' diff --git a/Unit1.pas b/Unit1.pas index 20b9d18..8629fe9 100644 --- a/Unit1.pas +++ b/Unit1.pas @@ -5,21 +5,14 @@ interface uses System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants, System.Permissions, - {$IFDEF ANDROID} - FMX.Platform.Android, - Androidapi.JNI.Net, FMX.Platform, - Androidapi.JNI.GraphicsContentViewText, - Androidapi.JNI.JavaTypes, - Androidapi.JNIBridge, - Androidapi.Helpers, - Androidapi.JNI.Telephony ,FMX.PhoneDialer, Androidapi.JNI.Os, - {$ENDIF} FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, FMX.Controls.Presentation, FMX.StdCtrls, FMX.ListView.Types, FMX.ListView.Appearances, FMX.ListView.Adapters.Base, FMX.ListView, - FMX.ScrollBox, FMX.Memo,FMX.DialogService, FMX.Layouts, FMX.ListBox, + FMX.ScrollBox, FMX.Memo,FMX.Layouts, FMX.ListBox, System.ImageList, FMX.ImgList, FMX.Ani, FMX.Objects, FMX.Effects, - FMX.Memo.Types, FMX.Edit, FMX.Media; + FMX.Memo.Types, FMX.Edit, FMX.Media, + FMX.MediaLibrary.Actions, + FMX.Filter.Effects, FMX.Filter; type TForm5 = class(TForm) @@ -55,7 +48,14 @@ type private tmpi:Integer; musicName:String; + FPermissionReadExternalStorage, + FPermissionWriteExternalStorage: string; + procedure DisplayRationale(Sender: TObject; const APermissions: TClassicStringDynArray; const APostRationaleProc: TProc); + procedure LoadListPermissionRequestResult(Sender: TObject; const APermissions: TClassicStringDynArray; const AGrantResults: TClassicPermissionStatusDynArray); + procedure LoadSongPermissionRequestResult(Sender: TObject; const APermissions: TClassicStringDynArray; const AGrantResults: TClassicPermissionStatusDynArray); public + constructor Create(AOwner: TComponent); override; + destructor Destroy; override; procedure LoadList(); end; @@ -64,19 +64,66 @@ var implementation +uses +{$IFDEF ANDROID} + Androidapi.Helpers, + Androidapi.JNI.JavaTypes, + Androidapi.JNI.Os, +{$ENDIF} + FMX.DialogService; {$R *.fmx} +constructor TForm5.Create(AOwner: TComponent); +begin + inherited Create(AOwner); +{$IFDEF ANDROID} + FPermissionReadExternalStorage := JStringToString(TJManifest_permission.JavaClass.READ_EXTERNAL_STORAGE); + FPermissionWriteExternalStorage := JStringToString(TJManifest_permission.JavaClass.WRITE_EXTERNAL_STORAGE); +{$ENDIF} +end; + +destructor TForm5.Destroy; +begin + inherited Destroy; +end; + +// Optional rationale display routine to display permission requirement rationale to the user +procedure TForm5.DisplayRationale(Sender: TObject; const APermissions: TClassicStringDynArray; const APostRationaleProc: TProc); +var + I: Integer; + RationaleMsg: string; +begin + for I := 0 to High(APermissions) do + begin + if APermissions[I] = FPermissionWriteExternalStorage then + RationaleMsg := RationaleMsg + 'The app needs to save files to your device' + SLineBreak + else if APermissions[I] = FPermissionReadExternalStorage then + RationaleMsg := RationaleMsg + 'The app needs to load files from your device' + SLineBreak; + end; + + // Show an explanation to the user *asynchronously* - don't block this thread waiting for the user's response! + // After the user sees the explanation, invoke the post-rationale routine to request the permissions + TDialogService.ShowMessage(RationaleMsg, + procedure(const AResult: TModalResult) + begin + APostRationaleProc; + end) +end; + procedure TForm5.LoadList(); var i:Integer; + aFStream:TFileStream; begin - if FileExists(edit1.Text.Trim) then + if FileExists(Edit1.Text) then begin FloatAnimation3.Enabled:=false; lbl_winner.Visible:=false; + aFStream:=TFileStream.Create(Edit1.Text,fmOpenRead); mem_names.Lines.Clear; - mem_names.Lines.LoadFromFile(edit1.Text.Trim,TEncoding.UTF8); + mem_names.Lines.LoadFromStream(aFStream,TEncoding.UTF8); mem_names.Text:= mem_names.Text.Trim; + FreeAndNil(aFStream); lsb_names.Items.Clear; mem_winners.Lines.Clear; GlowEffect1.Enabled:=false; @@ -95,42 +142,7 @@ begin end; procedure TForm5.FormCreate(Sender: TObject); -{$IFDEF ANDROID} -var - FPermissionReadExternalStorage,FPermissionWriteExternalStorage:String; -{$ENDIF} begin - {$IFDEF ANDROID} - //FPermissionCamera := JStringToString(TJManifest_permission.JavaClass.CAMERA); - FPermissionReadExternalStorage := JStringToString(TJManifest_permission.JavaClass.READ_EXTERNAL_STORAGE); - FPermissionWriteExternalStorage := JStringToString(TJManifest_permission.JavaClass.WRITE_EXTERNAL_STORAGE); - - PermissionsService.RequestPermissions([FPermissionReadExternalStorage,FPermissionWriteExternalStorage], - procedure(const APermissions: TArray; const AGrantResults: TArray) - var - i:Integer; - allok:Boolean; - begin - allok:=true; - for i:=0 to Length(AGrantResults)-1 do - begin - if (AGrantResults[i] <> TPermissionStatus.Granted) then - begin - allok:=false; - break; - end - end; - - if allok then - begin - TDialogService.ShowMessage('STORAGE permission granted, OK.'); - end - else - begin - TDialogService.ShowMessage('STORAGE permission not granted !!!'); - end; - end); - {$ENDIF} mem_names.Lines.Clear; mem_winners.Lines.Clear; @@ -139,7 +151,8 @@ begin GlowEffect1.Enabled:=false; ShadowEffect1.Enabled:=false; FloatAnimation3.Enabled:=false; - musicName:='/storage/emulated/0/.mp3'; + musicName:='/storage/emulated/0/ACMusic.mp3'; + Edit1.Text :='/storage/emulated/0/ACList.txt'; end; procedure TForm5.spb_goClick(Sender: TObject); @@ -211,24 +224,12 @@ end; procedure TForm5.spb_loadmusicClick(Sender: TObject); begin - if opd_music.Execute then - begin - musicName:=opd_music.FileName; - end; - if FileExists(musicName) then - begin - MediaPlayer1.Stop; - MediaPlayer1.FileName:=musicName; - end; + PermissionsService.RequestPermissions([FPermissionReadExternalStorage, FPermissionWriteExternalStorage], LoadSongPermissionRequestResult, DisplayRationale); end; procedure TForm5.spb_loadnameClick(Sender: TObject); begin - if opd_names.Execute then - begin - edit1.Text:=opd_names.FileName; - end; - LoadList(); + PermissionsService.RequestPermissions([FPermissionReadExternalStorage, FPermissionWriteExternalStorage], LoadListPermissionRequestResult, DisplayRationale); end; procedure TForm5.Timer1Timer(Sender: TObject); @@ -240,4 +241,43 @@ begin Application.ProcessMessages; end; +procedure TForm5.LoadListPermissionRequestResult(Sender: TObject; const APermissions: TClassicStringDynArray; const AGrantResults: TClassicPermissionStatusDynArray); +begin + // 2 permissions involved: READ_EXTERNAL_STORAGE, WRITE_EXTERNAL_STORAGE + if (Length(AGrantResults) = 2) and + (AGrantResults[0] = TPermissionStatus.Granted) and + (AGrantResults[1] = TPermissionStatus.Granted) then + begin + if opd_names.Execute then + begin + Edit1.Text:=opd_names.FileName; + end; + LoadList(); + end + else + TDialogService.ShowMessage('Cannot load list, the required permissions are not granted'); +end; + +procedure TForm5.LoadSongPermissionRequestResult(Sender: TObject; const APermissions: TClassicStringDynArray; const AGrantResults: TClassicPermissionStatusDynArray); +begin + // 2 permissions involved: READ_EXTERNAL_STORAGE, WRITE_EXTERNAL_STORAGE + if (Length(AGrantResults) = 2) and + (AGrantResults[0] = TPermissionStatus.Granted) and + (AGrantResults[1] = TPermissionStatus.Granted) then + begin + if opd_music.Execute then + begin + musicName:=opd_music.FileName; + end; + if FileExists(musicName) then + begin + MediaPlayer1.Stop; + MediaPlayer1.FileName:=musicName; + MediaPlayer1.Play; + end; + end + else + TDialogService.ShowMessage('Cannot load song, the required permissions are not granted'); +end; + end. diff --git a/pro_Lottery.deployproj b/pro_Lottery.deployproj index 87aaa3c..d7b0770 100644 --- a/pro_Lottery.deployproj +++ b/pro_Lottery.deployproj @@ -5,18 +5,11 @@ - + dfc480ee + + - - pro_Lottery\Assets\ - Logo150x150.png - UWP_DelphiLogo150 - 1 - - - True - pro_Lottery\ pro_Lottery.exe @@ -27,6 +20,15 @@ True True + + pro_Lottery\Assets\ + Logo150x150.png + UWP_DelphiLogo150 + 1 + + + True + pro_Lottery\Assets\ Logo44x44.png @@ -37,93 +39,143 @@ True - - - - - pro_Lottery\res\drawable-hdpi\ + + pro_Lottery\classes\ + pro_Lottery.classes + AndroidClasses + 64 + + + True + + + pro_Lottery\res\values\ + colors.xml + Android_Colors + 1 + + + True + + + pro_Lottery\res\values\ + strings.xml + Android_Strings + 1 + + + True + + + pro_Lottery\res\drawable-xhdpi\ ic_notification.png - Android_NotificationIcon36 + Android_NotificationIcon48 1 True - - pro_Lottery\library\lib\arm64-v8a\ - libpro_Lottery.so - ProjectOutput + + pro_Lottery\res\values\ + colors.xml + Android_Colors 1 True - True - - pro_Lottery\ - AndroidManifest.xml - ProjectAndroidManifest + + pro_Lottery\res\values\ + strings.xml + Android_Strings 1 True - - pro_Lottery\res\drawable-normal\ + + pro_Lottery\res\drawable-small\ splash_image.png - Android_SplashImage470 + Android_SplashImage426 1 True - - pro_Lottery\res\drawable-xxhdpi\ - ic_launcher.png - Android_LauncherIcon144 + + pro_Lottery\classes\ + pro_Lottery.classes + AndroidClasses + 64 + + + True + + + pro_Lottery\res\drawable-large\ + splash_image.png + Android_SplashImage640 1 True - - pro_Lottery\res\values-v21\ + + pro_Lottery\res\values\ styles.xml - AndroidSplashStylesV21 + AndroidSplashStyles 1 True - - pro_Lottery\classes\ - classes.dex - AndroidClassesDexFile + + pro_Lottery\res\values\ + styles.xml + AndroidSplashStyles 1 True - - pro_Lottery\res\values\ - colors.xml - Android_Colors + + pro_Lottery\res\drawable-xxxhdpi\ + ic_launcher.png + Android_LauncherIcon192 1 True - - pro_Lottery\classes\ - classes.dex - AndroidClassesDexFile + + pro_Lottery\res\drawable-xhdpi\ + ic_notification.png + Android_NotificationIcon48 1 True - + + pro_Lottery\res\drawable-xxxhdpi\ + ic_launcher.png + Android_LauncherIcon192 + 1 + + + True + + + pro_Lottery\res\drawable-small\ + splash_image.png + Android_SplashImage426 + 1 + + + True + + pro_Lottery\res\drawable-large\ splash_image.png Android_SplashImage640 @@ -141,19 +193,19 @@ True - - pro_Lottery\res\drawable-xlarge\ - splash_image.png - Android_SplashImage960 + + pro_Lottery\res\drawable-xxxhdpi\ + ic_notification.png + Android_NotificationIcon96 1 True - - pro_Lottery\res\drawable-xhdpi\ - ic_notification.png - Android_NotificationIcon48 + + pro_Lottery\res\drawable-xxhdpi\ + ic_launcher.png + Android_LauncherIcon144 1 @@ -168,59 +220,61 @@ True - - pro_Lottery\res\drawable-mdpi\ - ic_notification.png - Android_NotificationIcon24 + + pro_Lottery\library\lib\armeabi\ + libpro_Lottery.so + AndroidLibnativeArmeabiFile 1 True - - pro_Lottery\res\drawable\ - splash_image_def.xml - AndroidSplashImageDef + + pro_Lottery\res\drawable-xxhdpi\ + ic_launcher.png + Android_LauncherIcon144 1 True - - pro_Lottery\res\values\ - styles.xml - AndroidSplashStyles + + pro_Lottery\res\drawable-hdpi\ + ic_notification.png + Android_NotificationIcon36 1 True - - pro_Lottery\res\values\ - strings.xml - Android_Strings + + pro_Lottery\res\drawable-hdpi\ + ic_notification.png + Android_NotificationIcon36 1 True - - pro_Lottery\res\drawable-xxxhdpi\ - ic_launcher.png - Android_LauncherIcon192 + + pro_Lottery\library\lib\arm64-v8a\ + libpro_Lottery.so + ProjectOutput 1 True + True - - pro_Lottery\res\drawable-xxhdpi\ - ic_notification.png - Android_NotificationIcon72 + + pro_Lottery\library\lib\arm64-v8a\ + libpro_Lottery.so + ProjectOutput 1 True + True pro_Lottery\library\lib\mips\ @@ -231,10 +285,28 @@ True - - pro_Lottery\res\drawable-small\ - splash_image.png - Android_SplashImage426 + + pro_Lottery\library\lib\mips\ + libpro_Lottery.so + AndroidLibnativeMipsFile + 1 + + + True + + + pro_Lottery\res\values-v21\ + styles.xml + AndroidSplashStylesV21 + 1 + + + True + + + pro_Lottery\res\values-v21\ + styles.xml + AndroidSplashStylesV21 1 @@ -249,5 +321,123 @@ True + + pro_Lottery\library\lib\armeabi-v7a\ + libpro_Lottery.so + AndroidLibnativeArmeabiv7aFile + 1 + + + True + + + pro_Lottery\res\drawable-mdpi\ + ic_notification.png + Android_NotificationIcon24 + 1 + + + True + + + pro_Lottery\res\drawable-mdpi\ + ic_notification.png + Android_NotificationIcon24 + 1 + + + True + + + pro_Lottery\res\drawable-xxhdpi\ + ic_notification.png + Android_NotificationIcon72 + 1 + + + True + + + pro_Lottery\res\drawable-xlarge\ + splash_image.png + Android_SplashImage960 + 1 + + + True + + + pro_Lottery\res\drawable-xxhdpi\ + ic_notification.png + Android_NotificationIcon72 + 1 + + + True + + + pro_Lottery\res\drawable-xlarge\ + splash_image.png + Android_SplashImage960 + 1 + + + True + + + pro_Lottery\res\drawable\ + splash_image_def.xml + AndroidSplashImageDef + 1 + + + True + + + pro_Lottery\res\drawable\ + splash_image_def.xml + AndroidSplashImageDef + 1 + + + True + + + pro_Lottery\res\drawable-normal\ + splash_image.png + Android_SplashImage470 + 1 + + + True + + + pro_Lottery\res\drawable-normal\ + splash_image.png + Android_SplashImage470 + 1 + + + True + + + pro_Lottery\ + AndroidManifest.xml + ProjectAndroidManifest + 1 + + + True + + + pro_Lottery\ + AndroidManifest.xml + ProjectAndroidManifest + 1 + + + True + + diff --git a/pro_Lottery.dproj b/pro_Lottery.dproj index 09c6622..4cfac1f 100644 --- a/pro_Lottery.dproj +++ b/pro_Lottery.dproj @@ -1,7 +1,7 @@  {C012C57E-3192-4D37-8F08-560EEEAFC441} - 19.2 + 19.3 FMX pro_Lottery.dpr True @@ -95,7 +95,6 @@ true true true - true DBXSqliteDriver;RESTComponents;DBXInterBaseDriver;emsclientfiredac;tethering;DataSnapFireDAC;bindcompfmx;FmxTeeUI;fmx;FireDACIBDriver;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;IndyIPClient;dbxcds;dsnapxml;DataSnapProviderClient;dbrtl;IndyProtocols;$(DCC_UsePackage) @@ -120,7 +119,6 @@ $(BDS)\bin\Artwork\Android\FM_LauncherIcon_192x192.png - DBXSqliteDriver;RESTComponents;DBXInterBaseDriver;emsclientfiredac;tethering;DataSnapFireDAC;bindcompfmx;FmxTeeUI;fmx;FireDACIBDriver;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;IndyIPClient;dbxcds;dsnapxml;DataSnapProviderClient;dbrtl;IndyProtocols;$(DCC_UsePackage) package=com.ac.$(MSBuildProjectName);label=奥诚新春大抽奖;versionCode=12;versionName=1.0.12;persistent=False;restoreAnyVersion=False;installLocation=auto;largeHeap=False;theme=No TitleBar;hardwareAccelerated=true;apiKey= Debug true @@ -138,7 +136,7 @@ res\ICON\cia_48.png res\ICON\cia_72.png res\ICON\cia_96.png - 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 + annotation-1.2.0.dex.jar;asynclayoutinflater-1.0.0.dex.jar;billing-4.0.0.dex.jar;browser-1.0.0.dex.jar;cloud-messaging.dex.jar;collection-1.0.0.dex.jar;coordinatorlayout-1.0.0.dex.jar;core-1.5.0-rc02.dex.jar;core-common-2.0.1.dex.jar;core-runtime-2.0.1.dex.jar;cursoradapter-1.0.0.dex.jar;customview-1.0.0.dex.jar;documentfile-1.0.0.dex.jar;drawerlayout-1.0.0.dex.jar;firebase-annotations-16.0.0.dex.jar;firebase-common-20.0.0.dex.jar;firebase-components-17.0.0.dex.jar;firebase-datatransport-18.0.0.dex.jar;firebase-encoders-17.0.0.dex.jar;firebase-encoders-json-18.0.0.dex.jar;firebase-iid-interop-17.1.0.dex.jar;firebase-installations-17.0.0.dex.jar;firebase-installations-interop-17.0.0.dex.jar;firebase-measurement-connector-19.0.0.dex.jar;firebase-messaging-22.0.0.dex.jar;fmx.dex.jar;fragment-1.0.0.dex.jar;google-play-licensing.dex.jar;interpolator-1.0.0.dex.jar;javax.inject-1.dex.jar;legacy-support-core-ui-1.0.0.dex.jar;legacy-support-core-utils-1.0.0.dex.jar;lifecycle-common-2.0.0.dex.jar;lifecycle-livedata-2.0.0.dex.jar;lifecycle-livedata-core-2.0.0.dex.jar;lifecycle-runtime-2.0.0.dex.jar;lifecycle-service-2.0.0.dex.jar;lifecycle-viewmodel-2.0.0.dex.jar;listenablefuture-1.0.dex.jar;loader-1.0.0.dex.jar;localbroadcastmanager-1.0.0.dex.jar;play-services-ads-20.1.0.dex.jar;play-services-ads-base-20.1.0.dex.jar;play-services-ads-identifier-17.0.0.dex.jar;play-services-ads-lite-20.1.0.dex.jar;play-services-base-17.5.0.dex.jar;play-services-basement-17.6.0.dex.jar;play-services-cloud-messaging-16.0.0.dex.jar;play-services-drive-17.0.0.dex.jar;play-services-games-21.0.0.dex.jar;play-services-location-18.0.0.dex.jar;play-services-maps-17.0.1.dex.jar;play-services-measurement-base-18.0.0.dex.jar;play-services-measurement-sdk-api-18.0.0.dex.jar;play-services-places-placereport-17.0.0.dex.jar;play-services-stats-17.0.0.dex.jar;play-services-tasks-17.2.0.dex.jar;print-1.0.0.dex.jar;room-common-2.1.0.dex.jar;room-runtime-2.1.0.dex.jar;slidingpanelayout-1.0.0.dex.jar;sqlite-2.0.1.dex.jar;sqlite-framework-2.0.1.dex.jar;swiperefreshlayout-1.0.0.dex.jar;transport-api-3.0.0.dex.jar;transport-backend-cct-3.0.0.dex.jar;transport-runtime-3.0.0.dex.jar;user-messaging-platform-1.0.0.dex.jar;versionedparcelable-1.1.1.dex.jar;viewpager-1.0.0.dex.jar;work-runtime-2.1.0.dex.jar 12 disabled center @@ -151,6 +149,7 @@ .\$(Platform) .\$(Platform) $(BDS)\bin\Artwork\Android\FM_LauncherIcon_192x192.png + false DBXSqliteDriver;RESTComponents;fmxase;DBXDb2Driver;DBXInterBaseDriver;vclactnband;vclFireDAC;bindcompvclsmp;emsclientfiredac;tethering;svnui;DataSnapFireDAC;FireDACADSDriver;DBXMSSQLDriver;DatasnapConnectorsFreePascal;FireDACMSSQLDriver;unidac270;vcltouch;vcldb;bindcompfmx;svn;crcontrols270;DBXOracleDriver;inetdb;FmxTeeUI;emsedge;fmx;FireDACIBDriver;fmxdae;vcledge;FireDACDBXDriver;dbexpress;IndyCore;vclx;dsnap;emsclient;DataSnapCommon;FireDACCommon;RESTBackendComponents;DataSnapConnectors;VCLRESTComponents;soapserver;dacfmx270;vclie;bindengine;DBXMySQLDriver;CloudService;FireDACOracleDriver;FireDACMySQLDriver;DBXFirebirdDriver;FireDACCommonODBC;FireDACCommonDriver;DataSnapClient;inet;IndyIPCommon;bindcompdbx;vcl;IndyIPServer;DBXSybaseASEDriver;dacvcl270;IndySystem;vquery270;FireDACDb2Driver;dac270;dsnapcon;FireDACMSAccDriver;fmxFireDAC;FireDACInfxDriver;vclimg;unidacfmx270;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;unidacvcl270;bindcomp;appanalytics;DBXInformixDriver;IndyIPClient;bindcompvcl;TeeUI;dbxcds;VclSmp;adortl;FireDACODBCDriver;DataSnapIndy10ServerTransport;dsnapxml;DataSnapProviderClient;dbrtl;IndyProtocols;inetdbxpress;FireDACMongoDBDriver;DataSnapServerMidas;$(DCC_UsePackage) @@ -208,6 +207,8 @@ 12 + true + package=com.ac.$(MSBuildProjectName);label=奥诚新春大抽奖;versionCode=12;versionName=1.0.12;persistent=False;restoreAnyVersion=False;installLocation=auto;largeHeap=False;theme=TitleBar;hardwareAccelerated=true;apiKey= true @@ -216,9 +217,9 @@ 1033 res\ICON\cia.ico 8 - 36 + 38 true - CompanyName=奥诚科技;FileDescription=奥诚科技新春年会大抽奖;FileVersion=1.0.8.36;InternalName=ac_lattery.exe;LegalCopyright=AC;LegalTrademarks=AC;OriginalFilename=pro_lattery.exe;ProgramID=com.ac.$(MSBuildProjectName);ProductName=$(MSBuildProjectName);ProductVersion=1.0;Comments= + CompanyName=奥诚科技;FileDescription=奥诚科技新春年会大抽奖;FileVersion=1.0.8.38;InternalName=ac_lattery.exe;LegalCopyright=AC;LegalTrademarks=AC;OriginalFilename=pro_lattery.exe;ProgramID=com.ac.$(MSBuildProjectName);ProductName=$(MSBuildProjectName);ProductVersion=1.0;Comments= res\ICON\cia_48.icns @@ -233,10 +234,6 @@
Form5
fmx - - Cfg_2 - Base - Base @@ -244,6 +241,10 @@ Cfg_1 Base + + Cfg_2 + Base +
Delphi.Personality.12 @@ -254,64 +255,113 @@ pro_Lottery.dpr - 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 - + + + + 64 + true + + + + + true + + + + + true + + + + + pro_Lottery.exe + true + + + ic_notification.png true - + + + Assets\ + Logo150x150.png + true + + + - libpro_Lottery.so true - + true - + splash_image.png true - + - ic_launcher.png + 64 true - + - styles.xml + splash_image.png true - + + + - classes.dex true - + true - + + - classes.dex + ic_launcher.png true - + + + ic_notification.png + true + + + + + ic_launcher.png + true + + + + + splash_image.png + true + + + splash_image.png true @@ -323,107 +373,202 @@ true - + - splash_image.png + ic_notification.png + true + + + + + + + + + ic_launcher.png + true + + + + + libpro_Lottery.so + true + + + + + + + libpro_Lottery.so true + + + ic_launcher.png + true + + + + + + + ic_notification.png + true + + + + + + ic_notification.png + true + + + + + libpro_Lottery.so + true + + + + + libpro_Lottery.so + true + + + true - - + + + libpro_Lottery.so true - + - ic_notification.png + libpro_Lottery.so true - - - Assets\ - Logo150x150.png + + + styles.xml true - + + + styles.xml + true + + + + + + libpro_Lottery.so + true + + + libpro_Lottery.so true + ic_notification.png true - + + ic_notification.png true - - + + + ic_notification.png true - - - pro_Lottery.exe + + + + splash_image.png true - + + ic_notification.png true - + + splash_image.png true - + - ic_launcher.png true - + - ic_notification.png true - + + + true + + + + + - libpro_Lottery.so + splash_image.png true - + splash_image.png true - - - Assets\ - Logo44x44.png + + true - + + + + + true + + + - libpro_Lottery.so + true + + + + + + + Assets\ + Logo44x44.png true @@ -439,14 +584,14 @@ 0 - + classes - 1 + 64 classes - 1 + 64 @@ -740,6 +885,11 @@ 1 .framework + + Contents\MacOS + 1 + .framework + 0 @@ -767,6 +917,11 @@ 1 .dylib + + Contents\MacOS + 1 + .dylib + 0 .dll;.bpl @@ -795,6 +950,11 @@ 1 .dylib + + Contents\MacOS + 1 + .dylib + 0 .bpl @@ -824,6 +984,10 @@ Contents\Resources\StartUp\ 0 + + Contents\Resources\StartUp\ + 0 + 0 @@ -1089,6 +1253,10 @@ ..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF 1 + + ..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF + 1 + @@ -1099,6 +1267,10 @@ ..\ 1 + + ..\ + 1 + @@ -1109,6 +1281,10 @@ Contents 1 + + Contents + 1 + @@ -1119,6 +1295,10 @@ Contents\Resources 1 + + Contents\Resources + 1 + @@ -1149,6 +1329,10 @@ Contents\MacOS 1 + + Contents\MacOS + 1 + 0 @@ -1187,21 +1371,21 @@ 1 - + + + + + + + - - - - - False True - False True False diff --git a/pro_Lottery.dproj.local b/pro_Lottery.dproj.local index 6f6be50..9542185 100644 --- a/pro_Lottery.dproj.local +++ b/pro_Lottery.dproj.local @@ -5,4 +5,7 @@ 1899-12-30 00:00:00.000.439,=C:\Users\Shion\Documents\Embarcadero\Studio\Projects\Unit1.pas 1899-12-30 00:00:00.000.173,=C:\Users\Shion\Documents\Embarcadero\Studio\Projects\Lottery\Unit1.pas + + + -- GitLab