diff --git a/AndroidManifest.template.xml b/AndroidManifest.template.xml
index 10c95df9b9e194e2baed372d05e3b984f4ccef80..a8a61b85b9372923a6ae57aa4506670e6888fb89 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 e4460c4b8a4a86791759366680ea019a880465e0..1869948d6246a763d2c2f34575e8875ba1a591b8 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 370abb60a5a0b2351a3c18c6e0aa2ce7f22e534a..c312331fc6a94ab471ad0cd249a5f7ac6152789e 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 20b9d18996727c299dd89b8a474824d7fc28bb8b..8629fe96bbc2da2abaf0debab7c772f54d115663 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 87aaa3cdb55450d07045e2d4e0aeeec089c71c61..d7b07705e89d8b0a912b6023fc7dd28b768e12b5 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 09c662221d13f05646856c76334e4cf87ab0487b..4cfac1faf9db04b74593e6ae52cc4cf246de76c9 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 @@
fmx
-
- Cfg_2
- Base
-
Base
@@ -244,6 +241,10 @@
Cfg_1
Base
+
+ Cfg_2
+ Base
+
Delphi.Personality.12
@@ -254,64 +255,113 @@
- 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 6f6be501b587bf11df787a7e27abd1121dd34aa3..9542185c34750e25eca2661d12bdad585c575acf 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
+
+
+