From 0edc5ba8ac6d6604b1deea525a42548f9dc9ccce Mon Sep 17 00:00:00 2001
From: wxr <464027401@qq.com>
Date: 星期五, 12 一月 2024 09:49:54 +0800
Subject: [PATCH] 增加单元测试项目,更新萤石SDK

---
 NunitTest-Android/Properties/AssemblyInfo.cs                          |   27 
 NunitTest-Android/Resources/mipmap-anydpi-v26/ic_launcher.xml         |    6 
 NunitTest-Android/TestsSample.cs                                      |   44 +
 HDL-ON_Android/Properties/AndroidManifest.xml                         |    2 
 NunitTest-Ios/packages.config                                         |    6 
 NunitTest-Android/Resources/mipmap-xxxhdpi/ic_launcher_foreground.png |    0 
 NunitTest-Android/Resources/mipmap-xxhdpi/ic_launcher_foreground.png  |    0 
 NunitTest-Ios/ApiPostTests.cs                                         |   47 +
 NunitTest-Android/Resources/mipmap-hdpi/ic_launcher.png               |    0 
 NunitTest-Android/Resources/mipmap-mdpi/ic_launcher.png               |    0 
 NunitTest-Ios/Info.plist                                              |   36 +
 NunitTest-Android/Resources/Resource.designer.cs                      |  234 ++++++++
 NunitTest-Android/Resources/mipmap-mdpi/ic_launcher_round.png         |    0 
 NunitTest-Android/Resources/mipmap-xxxhdpi/ic_launcher.png            |    0 
 HDL-ON_Android/HDL-ON_Android.csproj                                  |    2 
 NunitTest-Ios/NunitTest-Ios.csproj                                    |  113 ++++
 NunitTest-Android/NunitTest-Android.csproj                            |  101 +++
 NunitTest-Ios/LaunchScreen.storyboard                                 |   27 
 NunitTest-Android/Resources/mipmap-xxhdpi/ic_launcher_round.png       |    0 
 HDL-ON_Android/Resources/Resource.designer.cs                         |  755 +++++++++++++-------------
 NunitTest-Ios/Main.cs                                                 |   20 
 NunitTest-Android/Assets/AboutAssets.txt                              |   19 
 NunitTest-Android/Resources/mipmap-anydpi-v26/ic_launcher_round.xml   |    6 
 NunitTest-Android/Resources/mipmap-hdpi/ic_launcher_foreground.png    |    0 
 HDL_APP_Project.sln                                                   |   28 +
 NunitTest-Android/Resources/mipmap-xhdpi/ic_launcher.png              |    0 
 NunitTest-Android/Resources/mipmap-xxxhdpi/ic_launcher_round.png      |    0 
 NunitTest-Android/Resources/values/colors.xml                         |    7 
 NunitTest-Android/Resources/values/ic_launcher_background.xml         |    5 
 NunitTest-Android/Resources/mipmap-hdpi/ic_launcher_round.png         |    0 
 DLL/HdlEzvizDroid.dll                                                 |    0 
 NunitTest-Android/Properties/AndroidManifest.xml                      |    6 
 NunitTest-Android/Resources/AboutResources.txt                        |   44 +
 NunitTest-Ios/UnitTestAppDelegate.cs                                  |   46 +
 NunitTest-Android/Resources/mipmap-mdpi/ic_launcher_foreground.png    |    0 
 NunitTest-Android/ApiPostTests.cs                                     |   47 +
 NunitTest-Android/Resources/mipmap-xhdpi/ic_launcher_round.png        |    0 
 NunitTest-Ios/Entitlements.plist                                      |    6 
 NunitTest-Android/MainActivity.cs                                     |   24 
 NunitTest-Android/Resources/mipmap-xxhdpi/ic_launcher.png             |    0 
 NunitTest-Android/Resources/values/strings.xml                        |    4 
 NunitTest-Android/Resources/mipmap-xhdpi/ic_launcher_foreground.png   |    0 
 42 files changed, 1,284 insertions(+), 378 deletions(-)

diff --git a/DLL/HdlEzvizDroid.dll b/DLL/HdlEzvizDroid.dll
index e59d056..6e4edec 100644
--- a/DLL/HdlEzvizDroid.dll
+++ b/DLL/HdlEzvizDroid.dll
Binary files differ
diff --git a/HDL-ON_Android/HDL-ON_Android.csproj b/HDL-ON_Android/HDL-ON_Android.csproj
index e9e4960..74933af 100644
--- a/HDL-ON_Android/HDL-ON_Android.csproj
+++ b/HDL-ON_Android/HDL-ON_Android.csproj
@@ -196,7 +196,7 @@
       <HintPath>..\DLL\Android\Shared.Droid.dll</HintPath>
     </Reference>
     <Reference Include="HdlEzvizDroid">
-      <HintPath>..\..\..\HdlEzvizDroid.dll</HintPath>
+      <HintPath>..\..\App-Pages\2024\On Pro\Android\SDK\ez\2024-01-11\HdlEzvizDroid.dll</HintPath>
     </Reference>
   </ItemGroup>
   <ItemGroup>
diff --git a/HDL-ON_Android/Properties/AndroidManifest.xml b/HDL-ON_Android/Properties/AndroidManifest.xml
index f1a9cb2..e513f6a 100644
--- a/HDL-ON_Android/Properties/AndroidManifest.xml
+++ b/HDL-ON_Android/Properties/AndroidManifest.xml
@@ -1,5 +1,5 @@
 锘�<?xml version="1.0" encoding="utf-8"?>
-<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:versionName="2.4.3" package="com.hdl.onpro" xmlns:tools="http://schemas.android.com/tools" android:versionCode="202401101">
+<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:versionName="2.4.3" package="com.hdl.onpro" xmlns:tools="http://schemas.android.com/tools" android:versionCode="202401111">
 	<uses-sdk android:minSdkVersion="26" android:targetSdkVersion="29" />
 	<uses-permission android:name="android.permission.RECEIVE_SMS" />
 	<!--鍙嬬洘-->
diff --git a/HDL-ON_Android/Resources/Resource.designer.cs b/HDL-ON_Android/Resources/Resource.designer.cs
index e3ce9c8..89fd436 100644
--- a/HDL-ON_Android/Resources/Resource.designer.cs
+++ b/HDL-ON_Android/Resources/Resource.designer.cs
@@ -19735,928 +19735,931 @@
 			public const int please_try_connect_device_hotspot_manually = 2131690306;
 			
 			// aapt resource value: 0x7F0F0343
-			public const int plug = 2131690307;
+			public const int please_try_connect_device_hotspot_manually2 = 2131690307;
 			
 			// aapt resource value: 0x7F0F0344
-			public const int pm = 2131690308;
+			public const int plug = 2131690308;
 			
 			// aapt resource value: 0x7F0F0345
-			public const int press_again_to_exit = 2131690309;
+			public const int pm = 2131690309;
 			
 			// aapt resource value: 0x7F0F0346
-			public const int press_to_talk_release_to_listen = 2131690310;
+			public const int press_again_to_exit = 2131690310;
 			
 			// aapt resource value: 0x7F0F0347
-			public const int privacy_masking = 2131690311;
+			public const int press_to_talk_release_to_listen = 2131690311;
 			
 			// aapt resource value: 0x7F0F0348
-			public const int privacy_policy_and_service_agreement = 2131690312;
+			public const int privacy_masking = 2131690312;
 			
 			// aapt resource value: 0x7F0F0349
-			public const int probe_not_support_tip = 2131690313;
+			public const int privacy_policy_and_service_agreement = 2131690313;
 			
 			// aapt resource value: 0x7F0F034A
-			public const int promptUserToActivate = 2131690314;
+			public const int probe_not_support_tip = 2131690314;
 			
 			// aapt resource value: 0x7F0F034B
-			public const int ptz = 2131690315;
+			public const int promptUserToActivate = 2131690315;
 			
 			// aapt resource value: 0x7F0F034C
-			public const int ptz_control_timeout_cruise_track_failed = 2131690316;
+			public const int ptz = 2131690316;
 			
 			// aapt resource value: 0x7F0F034D
-			public const int ptz_control_timeout_sound_lacalization_failed = 2131690317;
+			public const int ptz_control_timeout_cruise_track_failed = 2131690317;
 			
 			// aapt resource value: 0x7F0F034E
-			public const int ptz_is_preseting = 2131690318;
+			public const int ptz_control_timeout_sound_lacalization_failed = 2131690318;
 			
 			// aapt resource value: 0x7F0F034F
-			public const int ptz_mirroring_failed = 2131690319;
+			public const int ptz_is_preseting = 2131690319;
 			
 			// aapt resource value: 0x7F0F0350
-			public const int ptz_operation_failed = 2131690320;
+			public const int ptz_mirroring_failed = 2131690320;
 			
 			// aapt resource value: 0x7F0F0351
-			public const int ptz_operation_too_frequently = 2131690321;
+			public const int ptz_operation_failed = 2131690321;
 			
 			// aapt resource value: 0x7F0F0352
-			public const int ptz_preset_current_position_failed = 2131690322;
+			public const int ptz_operation_too_frequently = 2131690322;
 			
 			// aapt resource value: 0x7F0F0353
-			public const int ptz_preset_exceed_maxnum_failed = 2131690323;
+			public const int ptz_preset_current_position_failed = 2131690323;
 			
 			// aapt resource value: 0x7F0F0354
-			public const int ptz_preset_invalid_position_failed = 2131690324;
+			public const int ptz_preset_exceed_maxnum_failed = 2131690324;
 			
 			// aapt resource value: 0x7F0F0355
-			public const int ptz_preset_sound_localization_failed = 2131690325;
+			public const int ptz_preset_invalid_position_failed = 2131690325;
 			
 			// aapt resource value: 0x7F0F0356
-			public const int ptz_privacying_failed = 2131690326;
+			public const int ptz_preset_sound_localization_failed = 2131690326;
 			
 			// aapt resource value: 0x7F0F0357
-			public const int pull_to_refresh_from_bottom_pull_label = 2131690327;
+			public const int ptz_privacying_failed = 2131690327;
 			
 			// aapt resource value: 0x7F0F0358
-			public const int pull_to_refresh_from_bottom_refreshing_label = 2131690328;
+			public const int pull_to_refresh_from_bottom_pull_label = 2131690328;
 			
 			// aapt resource value: 0x7F0F0359
-			public const int pull_to_refresh_from_bottom_release_label = 2131690329;
+			public const int pull_to_refresh_from_bottom_refreshing_label = 2131690329;
 			
 			// aapt resource value: 0x7F0F035A
-			public const int pull_to_refresh_pull_label = 2131690330;
+			public const int pull_to_refresh_from_bottom_release_label = 2131690330;
 			
 			// aapt resource value: 0x7F0F035B
-			public const int pull_to_refresh_refreshing_label = 2131690331;
+			public const int pull_to_refresh_pull_label = 2131690331;
 			
 			// aapt resource value: 0x7F0F035C
-			public const int pull_to_refresh_release_label = 2131690332;
+			public const int pull_to_refresh_refreshing_label = 2131690332;
 			
 			// aapt resource value: 0x7F0F035D
-			public const int push_cat_body = 2131690333;
+			public const int pull_to_refresh_release_label = 2131690333;
 			
 			// aapt resource value: 0x7F0F035E
-			public const int push_cat_head = 2131690334;
+			public const int push_cat_body = 2131690334;
 			
 			// aapt resource value: 0x7F0F035F
-			public const int push_event_alarm_title = 2131690335;
+			public const int push_cat_head = 2131690335;
 			
 			// aapt resource value: 0x7F0F0360
-			public const int push_event_from = 2131690336;
+			public const int push_event_alarm_title = 2131690336;
 			
 			// aapt resource value: 0x7F0F0361
-			public const int push_event_get = 2131690337;
+			public const int push_event_from = 2131690337;
 			
 			// aapt resource value: 0x7F0F0362
-			public const int push_event_get_count = 2131690338;
+			public const int push_event_get = 2131690338;
 			
 			// aapt resource value: 0x7F0F0363
-			public const int push_out_event_alarm_title = 2131690339;
+			public const int push_event_get_count = 2131690339;
 			
 			// aapt resource value: 0x7F0F0364
-			public const int pwd_not_contain_chinese = 2131690340;
+			public const int push_out_event_alarm_title = 2131690340;
 			
 			// aapt resource value: 0x7F0F0365
-			public const int qrcode_card = 2131690341;
+			public const int pwd_not_contain_chinese = 2131690341;
 			
 			// aapt resource value: 0x7F0F0366
-			public const int quality_balanced = 2131690342;
+			public const int qrcode_card = 2131690342;
 			
 			// aapt resource value: 0x7F0F0367
-			public const int quality_flunet = 2131690343;
+			public const int quality_balanced = 2131690343;
 			
 			// aapt resource value: 0x7F0F0368
-			public const int quality_hd = 2131690344;
+			public const int quality_flunet = 2131690344;
 			
 			// aapt resource value: 0x7F0F0369
-			public const int quality_super_hd = 2131690345;
-			
-			// aapt resource value: 0x7F0F0370
-			public const int querying_camera_text = 2131690352;
+			public const int quality_hd = 2131690345;
 			
 			// aapt resource value: 0x7F0F036A
-			public const int query_camera_fail = 2131690346;
-			
-			// aapt resource value: 0x7F0F036B
-			public const int query_camera_fail_network_exception = 2131690347;
-			
-			// aapt resource value: 0x7F0F036C
-			public const int query_camera_fail_network_exception_or_server_exception = 2131690348;
-			
-			// aapt resource value: 0x7F0F036D
-			public const int query_camera_fail_not_exit = 2131690349;
-			
-			// aapt resource value: 0x7F0F036E
-			public const int query_camera_fail_repeat_error = 2131690350;
-			
-			// aapt resource value: 0x7F0F036F
-			public const int query_camera_fail_server_exception = 2131690351;
-			
-			// aapt resource value: 0x7F0F0372
-			public const int readed = 2131690354;
+			public const int quality_super_hd = 2131690346;
 			
 			// aapt resource value: 0x7F0F0371
-			public const int read_privacy_policy_and_service_agreement_tip = 2131690353;
+			public const int querying_camera_text = 2131690353;
+			
+			// aapt resource value: 0x7F0F036B
+			public const int query_camera_fail = 2131690347;
+			
+			// aapt resource value: 0x7F0F036C
+			public const int query_camera_fail_network_exception = 2131690348;
+			
+			// aapt resource value: 0x7F0F036D
+			public const int query_camera_fail_network_exception_or_server_exception = 2131690349;
+			
+			// aapt resource value: 0x7F0F036E
+			public const int query_camera_fail_not_exit = 2131690350;
+			
+			// aapt resource value: 0x7F0F036F
+			public const int query_camera_fail_repeat_error = 2131690351;
+			
+			// aapt resource value: 0x7F0F0370
+			public const int query_camera_fail_server_exception = 2131690352;
 			
 			// aapt resource value: 0x7F0F0373
-			public const int realplay = 2131690355;
+			public const int readed = 2131690355;
+			
+			// aapt resource value: 0x7F0F0372
+			public const int read_privacy_policy_and_service_agreement_tip = 2131690354;
 			
 			// aapt resource value: 0x7F0F0374
-			public const int realplay_close_sound_localization_fail = 2131690356;
+			public const int realplay = 2131690356;
 			
 			// aapt resource value: 0x7F0F0375
-			public const int realplay_encrypt_password_error_message = 2131690357;
+			public const int realplay_close_sound_localization_fail = 2131690357;
 			
 			// aapt resource value: 0x7F0F0376
-			public const int realplay_encrypt_password_error_title = 2131690358;
+			public const int realplay_encrypt_password_error_message = 2131690358;
 			
 			// aapt resource value: 0x7F0F0377
-			public const int realplay_fail_connect_device = 2131690359;
+			public const int realplay_encrypt_password_error_title = 2131690359;
 			
 			// aapt resource value: 0x7F0F0378
-			public const int realplay_fail_device_not_exist = 2131690360;
+			public const int realplay_fail_connect_device = 2131690360;
 			
 			// aapt resource value: 0x7F0F0379
-			public const int realplay_full_talk_start_tip = 2131690361;
+			public const int realplay_fail_device_not_exist = 2131690361;
 			
 			// aapt resource value: 0x7F0F037A
-			public const int realplay_loading = 2131690362;
+			public const int realplay_full_talk_start_tip = 2131690362;
 			
 			// aapt resource value: 0x7F0F037B
-			public const int realplay_login_password_error = 2131690363;
+			public const int realplay_loading = 2131690363;
 			
 			// aapt resource value: 0x7F0F037C
-			public const int realplay_login_password_msg = 2131690364;
+			public const int realplay_login_password_error = 2131690364;
 			
 			// aapt resource value: 0x7F0F037D
-			public const int realplay_no_encrypt_password_error = 2131690365;
+			public const int realplay_login_password_msg = 2131690365;
 			
 			// aapt resource value: 0x7F0F037E
-			public const int realplay_no_permission = 2131690366;
+			public const int realplay_no_encrypt_password_error = 2131690366;
 			
 			// aapt resource value: 0x7F0F037F
-			public const int realplay_open_sound_localization_fail = 2131690367;
+			public const int realplay_no_permission = 2131690367;
 			
 			// aapt resource value: 0x7F0F0380
-			public const int realplay_password_error_message1 = 2131690368;
+			public const int realplay_open_sound_localization_fail = 2131690368;
 			
 			// aapt resource value: 0x7F0F0381
-			public const int realplay_password_error_message3 = 2131690369;
+			public const int realplay_password_error_message1 = 2131690369;
 			
 			// aapt resource value: 0x7F0F0382
-			public const int realplay_password_error_message4 = 2131690370;
+			public const int realplay_password_error_message3 = 2131690370;
 			
 			// aapt resource value: 0x7F0F0383
-			public const int realplay_password_error_title = 2131690371;
+			public const int realplay_password_error_message4 = 2131690371;
 			
 			// aapt resource value: 0x7F0F0384
-			public const int realplay_play_fail = 2131690372;
+			public const int realplay_password_error_title = 2131690372;
 			
 			// aapt resource value: 0x7F0F0385
-			public const int realplay_play_fail_becauseof_network = 2131690373;
+			public const int realplay_play_fail = 2131690373;
 			
 			// aapt resource value: 0x7F0F0386
-			public const int realplay_play_no_video_source = 2131690374;
+			public const int realplay_play_fail_becauseof_network = 2131690374;
 			
 			// aapt resource value: 0x7F0F0387
-			public const int realplay_play_talkback_fail = 2131690375;
+			public const int realplay_play_no_video_source = 2131690375;
 			
 			// aapt resource value: 0x7F0F0388
-			public const int realplay_play_talkback_fail_ison = 2131690376;
+			public const int realplay_play_talkback_fail = 2131690376;
 			
 			// aapt resource value: 0x7F0F0389
-			public const int realplay_play_talkback_fail_privacy = 2131690377;
+			public const int realplay_play_talkback_fail_ison = 2131690377;
 			
 			// aapt resource value: 0x7F0F038A
-			public const int realplay_play_talkback_network_exception = 2131690378;
+			public const int realplay_play_talkback_fail_privacy = 2131690378;
 			
 			// aapt resource value: 0x7F0F038B
-			public const int realplay_play_talkback_request_timeout = 2131690379;
+			public const int realplay_play_talkback_network_exception = 2131690379;
 			
 			// aapt resource value: 0x7F0F038C
-			public const int realplay_set_fail_network = 2131690380;
+			public const int realplay_play_talkback_request_timeout = 2131690380;
 			
 			// aapt resource value: 0x7F0F038D
-			public const int realplay_set_fail_status = 2131690381;
+			public const int realplay_set_fail_network = 2131690381;
 			
 			// aapt resource value: 0x7F0F038E
-			public const int realplay_set_vediomode_fail = 2131690382;
+			public const int realplay_set_fail_status = 2131690382;
 			
 			// aapt resource value: 0x7F0F038F
-			public const int realplay_share_no_permission = 2131690383;
+			public const int realplay_set_vediomode_fail = 2131690383;
 			
 			// aapt resource value: 0x7F0F0390
-			public const int realplay_share_time_over = 2131690384;
+			public const int realplay_share_no_permission = 2131690384;
 			
 			// aapt resource value: 0x7F0F0391
-			public const int realplay_verifycode_error_message0 = 2131690385;
+			public const int realplay_share_time_over = 2131690385;
 			
 			// aapt resource value: 0x7F0F0392
-			public const int realplay_verifycode_error_placehold = 2131690386;
+			public const int realplay_verifycode_error_message0 = 2131690386;
 			
 			// aapt resource value: 0x7F0F0393
-			public const int receice_leave_msg_audio = 2131690387;
+			public const int realplay_verifycode_error_placehold = 2131690387;
 			
 			// aapt resource value: 0x7F0F0394
-			public const int receice_leave_msg_video = 2131690388;
+			public const int receice_leave_msg_audio = 2131690388;
 			
 			// aapt resource value: 0x7F0F0395
-			public const int record = 2131690389;
+			public const int receice_leave_msg_video = 2131690389;
 			
 			// aapt resource value: 0x7F0F0396
-			public const int refresh = 2131690390;
-			
-			// aapt resource value: 0x7F0F039A
-			public const int refreshing = 2131690394;
+			public const int record = 2131690390;
 			
 			// aapt resource value: 0x7F0F0397
-			public const int refresh_done = 2131690391;
-			
-			// aapt resource value: 0x7F0F0398
-			public const int refresh_empty_hint = 2131690392;
-			
-			// aapt resource value: 0x7F0F0399
-			public const int refresh_fail_hint = 2131690393;
-			
-			// aapt resource value: 0x7F0F039C
-			public const int remoteplayback_capture_fail = 2131690396;
-			
-			// aapt resource value: 0x7F0F039D
-			public const int remoteplayback_capture_fail_for_memory = 2131690397;
-			
-			// aapt resource value: 0x7F0F039E
-			public const int remoteplayback_connect_device_error = 2131690398;
-			
-			// aapt resource value: 0x7F0F039F
-			public const int remoteplayback_connect_server_error = 2131690399;
-			
-			// aapt resource value: 0x7F0F03A0
-			public const int remoteplayback_fail = 2131690400;
-			
-			// aapt resource value: 0x7F0F03A1
-			public const int remoteplayback_norecordfile = 2131690401;
-			
-			// aapt resource value: 0x7F0F03A2
-			public const int remoteplayback_norecordfile_alarm = 2131690402;
-			
-			// aapt resource value: 0x7F0F03A3
-			public const int remoteplayback_over_link = 2131690403;
-			
-			// aapt resource value: 0x7F0F03A4
-			public const int remoteplayback_record_fail = 2131690404;
-			
-			// aapt resource value: 0x7F0F03A5
-			public const int remoteplayback_record_fail_for_memory = 2131690405;
+			public const int refresh = 2131690391;
 			
 			// aapt resource value: 0x7F0F039B
-			public const int remoteplayback_SDCard_disable_use = 2131690395;
+			public const int refreshing = 2131690395;
+			
+			// aapt resource value: 0x7F0F0398
+			public const int refresh_done = 2131690392;
+			
+			// aapt resource value: 0x7F0F0399
+			public const int refresh_empty_hint = 2131690393;
+			
+			// aapt resource value: 0x7F0F039A
+			public const int refresh_fail_hint = 2131690394;
+			
+			// aapt resource value: 0x7F0F039D
+			public const int remoteplayback_capture_fail = 2131690397;
+			
+			// aapt resource value: 0x7F0F039E
+			public const int remoteplayback_capture_fail_for_memory = 2131690398;
+			
+			// aapt resource value: 0x7F0F039F
+			public const int remoteplayback_connect_device_error = 2131690399;
+			
+			// aapt resource value: 0x7F0F03A0
+			public const int remoteplayback_connect_server_error = 2131690400;
+			
+			// aapt resource value: 0x7F0F03A1
+			public const int remoteplayback_fail = 2131690401;
+			
+			// aapt resource value: 0x7F0F03A2
+			public const int remoteplayback_norecordfile = 2131690402;
+			
+			// aapt resource value: 0x7F0F03A3
+			public const int remoteplayback_norecordfile_alarm = 2131690403;
+			
+			// aapt resource value: 0x7F0F03A4
+			public const int remoteplayback_over_link = 2131690404;
+			
+			// aapt resource value: 0x7F0F03A5
+			public const int remoteplayback_record_fail = 2131690405;
 			
 			// aapt resource value: 0x7F0F03A6
-			public const int remoteplayback_searchfile_fail_for_device = 2131690406;
+			public const int remoteplayback_record_fail_for_memory = 2131690406;
+			
+			// aapt resource value: 0x7F0F039C
+			public const int remoteplayback_SDCard_disable_use = 2131690396;
 			
 			// aapt resource value: 0x7F0F03A7
-			public const int remoteplayback_searchfile_fail_for_network = 2131690407;
+			public const int remoteplayback_searchfile_fail_for_device = 2131690407;
 			
 			// aapt resource value: 0x7F0F03A8
-			public const int reset_10_sec_to_release = 2131690408;
+			public const int remoteplayback_searchfile_fail_for_network = 2131690408;
 			
 			// aapt resource value: 0x7F0F03A9
-			public const int reset_device = 2131690409;
+			public const int reset_10_sec_to_release = 2131690409;
 			
 			// aapt resource value: 0x7F0F03AA
-			public const int result_txt = 2131690410;
+			public const int reset_device = 2131690410;
 			
 			// aapt resource value: 0x7F0F03AB
-			public const int retry = 2131690411;
-			
-			// aapt resource value: 0x7F0F03AD
-			public const int router = 2131690413;
+			public const int result_txt = 2131690411;
 			
 			// aapt resource value: 0x7F0F03AC
-			public const int route_status_light = 2131690412;
+			public const int retry = 2131690412;
 			
 			// aapt resource value: 0x7F0F03AE
-			public const int sadp_activate_state1 = 2131690414;
+			public const int router = 2131690414;
+			
+			// aapt resource value: 0x7F0F03AD
+			public const int route_status_light = 2131690413;
 			
 			// aapt resource value: 0x7F0F03AF
-			public const int sadp_activate_state2 = 2131690415;
+			public const int sadp_activate_state1 = 2131690415;
 			
 			// aapt resource value: 0x7F0F03B0
-			public const int sadp_password_input_hint = 2131690416;
+			public const int sadp_activate_state2 = 2131690416;
 			
 			// aapt resource value: 0x7F0F03B1
-			public const int sadp_password_toast = 2131690417;
+			public const int sadp_password_input_hint = 2131690417;
 			
 			// aapt resource value: 0x7F0F03B2
-			public const int sadp_password_too_weak = 2131690418;
+			public const int sadp_password_toast = 2131690418;
 			
 			// aapt resource value: 0x7F0F03B3
-			public const int sadp_quit_activate = 2131690419;
+			public const int sadp_password_too_weak = 2131690419;
 			
 			// aapt resource value: 0x7F0F03B4
-			public const int save_encrypt_password_fail_network_exception = 2131690420;
+			public const int sadp_quit_activate = 2131690420;
 			
 			// aapt resource value: 0x7F0F03B5
-			public const int scan_add = 2131690421;
+			public const int save_encrypt_password_fail_network_exception = 2131690421;
 			
 			// aapt resource value: 0x7F0F03B6
-			public const int scan_connet_network = 2131690422;
+			public const int scan_add = 2131690422;
 			
 			// aapt resource value: 0x7F0F03B7
-			public const int scan_cue_txt = 2131690423;
+			public const int scan_connet_network = 2131690423;
 			
 			// aapt resource value: 0x7F0F03B8
-			public const int scan_device_add_by_others = 2131690424;
+			public const int scan_cue_txt = 2131690424;
 			
 			// aapt resource value: 0x7F0F03B9
-			public const int scan_device_search = 2131690425;
+			public const int scan_device_add_by_others = 2131690425;
 			
 			// aapt resource value: 0x7F0F03BA
-			public const int scan_device_serial_no = 2131690426;
+			public const int scan_device_search = 2131690426;
 			
 			// aapt resource value: 0x7F0F03BB
-			public const int scan_network_unavailible = 2131690427;
+			public const int scan_device_serial_no = 2131690427;
 			
 			// aapt resource value: 0x7F0F03BC
-			public const int scan_probe_qrcode_error = 2131690428;
+			public const int scan_network_unavailible = 2131690428;
 			
 			// aapt resource value: 0x7F0F03BD
-			public const int scan_search_probe_qrcode = 2131690429;
+			public const int scan_probe_qrcode_error = 2131690429;
 			
 			// aapt resource value: 0x7F0F03BE
-			public const int scan_title = 2131690430;
+			public const int scan_search_probe_qrcode = 2131690430;
 			
 			// aapt resource value: 0x7F0F03BF
-			public const int scan_title_txt = 2131690431;
+			public const int scan_title = 2131690431;
 			
 			// aapt resource value: 0x7F0F03C0
-			public const int screenshot_fail = 2131690432;
+			public const int scan_title_txt = 2131690432;
 			
 			// aapt resource value: 0x7F0F03C1
-			public const int screenshot_success = 2131690433;
-			
-			// aapt resource value: 0x7F0F03C4
-			public const int sdk_is_init = 2131690436;
-			
-			// aapt resource value: 0x7F0F03C3
-			public const int sd_card_formatting = 2131690435;
+			public const int screenshot_fail = 2131690433;
 			
 			// aapt resource value: 0x7F0F03C2
-			public const int sd_card_format_tip = 2131690434;
+			public const int screenshot_success = 2131690434;
 			
 			// aapt resource value: 0x7F0F03C5
-			public const int search = 2131690437;
+			public const int sdk_is_init = 2131690437;
+			
+			// aapt resource value: 0x7F0F03C4
+			public const int sd_card_formatting = 2131690436;
+			
+			// aapt resource value: 0x7F0F03C3
+			public const int sd_card_format_tip = 2131690435;
 			
 			// aapt resource value: 0x7F0F03C6
-			public const int search_menu_title = 2131690438;
+			public const int search = 2131690438;
 			
 			// aapt resource value: 0x7F0F03C7
-			public const int secure_validate = 2131690439;
-			
-			// aapt resource value: 0x7F0F03C9
-			public const int secure_validatee_fail = 2131690441;
+			public const int search_menu_title = 2131690439;
 			
 			// aapt resource value: 0x7F0F03C8
-			public const int secure_validate_success = 2131690440;
+			public const int secure_validate = 2131690440;
 			
 			// aapt resource value: 0x7F0F03CA
-			public const int seek_camera_fail_device_not_support_shipin7 = 2131690442;
+			public const int secure_validatee_fail = 2131690442;
+			
+			// aapt resource value: 0x7F0F03C9
+			public const int secure_validate_success = 2131690441;
 			
 			// aapt resource value: 0x7F0F03CB
-			public const int select_all = 2131690443;
+			public const int seek_camera_fail_device_not_support_shipin7 = 2131690443;
 			
 			// aapt resource value: 0x7F0F03CC
-			public const int select_date = 2131690444;
+			public const int select_all = 2131690444;
 			
 			// aapt resource value: 0x7F0F03CD
-			public const int select_set_parameters = 2131690445;
+			public const int select_date = 2131690445;
 			
 			// aapt resource value: 0x7F0F03CE
-			public const int select_set_wifi = 2131690446;
+			public const int select_set_parameters = 2131690446;
 			
 			// aapt resource value: 0x7F0F03CF
-			public const int serial_add_hint = 2131690447;
+			public const int select_set_wifi = 2131690447;
 			
 			// aapt resource value: 0x7F0F03D0
-			public const int serial_add_password_error_title = 2131690448;
+			public const int serial_add_hint = 2131690448;
 			
 			// aapt resource value: 0x7F0F03D1
-			public const int serial_input_text = 2131690449;
+			public const int serial_add_password_error_title = 2131690449;
 			
 			// aapt resource value: 0x7F0F03D2
-			public const int serial_number_error = 2131690450;
+			public const int serial_input_text = 2131690450;
 			
 			// aapt resource value: 0x7F0F03D3
-			public const int serial_number_is_null = 2131690451;
+			public const int serial_number_error = 2131690451;
 			
 			// aapt resource value: 0x7F0F03D4
-			public const int serial_number_put_the_right_no = 2131690452;
+			public const int serial_number_is_null = 2131690452;
 			
 			// aapt resource value: 0x7F0F03D5
-			public const int server_area = 2131690453;
-			
-			// aapt resource value: 0x7F0F03DA
-			public const int setting = 2131690458;
-			
-			// aapt resource value: 0x7F0F03DB
-			public const int setting_video_level = 2131690459;
+			public const int serial_number_put_the_right_no = 2131690453;
 			
 			// aapt resource value: 0x7F0F03D6
-			public const int set_defence_plan = 2131690454;
+			public const int server_area = 2131690454;
 			
-			// aapt resource value: 0x7F0F03D7
-			public const int set_device_wifi_network_need_reset_the_device = 2131690455;
-			
-			// aapt resource value: 0x7F0F03D8
-			public const int set_ptz_flip_fail = 2131690456;
-			
-			// aapt resource value: 0x7F0F03D9
-			public const int set_ptz_flip_success = 2131690457;
+			// aapt resource value: 0x7F0F03DB
+			public const int setting = 2131690459;
 			
 			// aapt resource value: 0x7F0F03DC
-			public const int share_devices = 2131690460;
+			public const int setting_video_level = 2131690460;
+			
+			// aapt resource value: 0x7F0F03D7
+			public const int set_defence_plan = 2131690455;
+			
+			// aapt resource value: 0x7F0F03D8
+			public const int set_device_wifi_network_need_reset_the_device = 2131690456;
+			
+			// aapt resource value: 0x7F0F03D9
+			public const int set_ptz_flip_fail = 2131690457;
+			
+			// aapt resource value: 0x7F0F03DA
+			public const int set_ptz_flip_success = 2131690458;
 			
 			// aapt resource value: 0x7F0F03DD
-			public const int sms_verify_bind_error = 2131690461;
+			public const int share_devices = 2131690461;
 			
 			// aapt resource value: 0x7F0F03DE
-			public const int sms_verify_code_received = 2131690462;
+			public const int sms_verify_bind_error = 2131690462;
 			
 			// aapt resource value: 0x7F0F03DF
-			public const int source_detection_off = 2131690463;
+			public const int sms_verify_code_received = 2131690463;
 			
 			// aapt resource value: 0x7F0F03E0
-			public const int source_detection_on = 2131690464;
+			public const int source_detection_off = 2131690464;
 			
 			// aapt resource value: 0x7F0F03E1
-			public const int specified_device = 2131690465;
+			public const int source_detection_on = 2131690465;
 			
 			// aapt resource value: 0x7F0F03E2
-			public const int srl_component_falsify = 2131690466;
+			public const int specified_device = 2131690466;
 			
 			// aapt resource value: 0x7F0F03E3
-			public const int srl_content_empty = 2131690467;
+			public const int srl_component_falsify = 2131690467;
 			
 			// aapt resource value: 0x7F0F03E4
-			public const int srl_footer_failed = 2131690468;
+			public const int srl_content_empty = 2131690468;
 			
 			// aapt resource value: 0x7F0F03E5
-			public const int srl_footer_finish = 2131690469;
+			public const int srl_footer_failed = 2131690469;
 			
 			// aapt resource value: 0x7F0F03E6
-			public const int srl_footer_loading = 2131690470;
+			public const int srl_footer_finish = 2131690470;
 			
 			// aapt resource value: 0x7F0F03E7
-			public const int srl_footer_nothing = 2131690471;
+			public const int srl_footer_loading = 2131690471;
 			
 			// aapt resource value: 0x7F0F03E8
-			public const int srl_footer_pulling = 2131690472;
+			public const int srl_footer_nothing = 2131690472;
 			
 			// aapt resource value: 0x7F0F03E9
-			public const int srl_footer_refreshing = 2131690473;
+			public const int srl_footer_pulling = 2131690473;
 			
 			// aapt resource value: 0x7F0F03EA
-			public const int srl_footer_release = 2131690474;
+			public const int srl_footer_refreshing = 2131690474;
 			
 			// aapt resource value: 0x7F0F03EB
-			public const int srl_header_failed = 2131690475;
+			public const int srl_footer_release = 2131690475;
 			
 			// aapt resource value: 0x7F0F03EC
-			public const int srl_header_finish = 2131690476;
+			public const int srl_header_failed = 2131690476;
 			
 			// aapt resource value: 0x7F0F03ED
-			public const int srl_header_loading = 2131690477;
+			public const int srl_header_finish = 2131690477;
 			
 			// aapt resource value: 0x7F0F03EE
-			public const int srl_header_pulling = 2131690478;
+			public const int srl_header_loading = 2131690478;
 			
 			// aapt resource value: 0x7F0F03EF
-			public const int srl_header_refreshing = 2131690479;
+			public const int srl_header_pulling = 2131690479;
 			
 			// aapt resource value: 0x7F0F03F0
-			public const int srl_header_release = 2131690480;
+			public const int srl_header_refreshing = 2131690480;
 			
 			// aapt resource value: 0x7F0F03F1
-			public const int srl_header_secondary = 2131690481;
+			public const int srl_header_release = 2131690481;
 			
 			// aapt resource value: 0x7F0F03F2
-			public const int srl_header_update = 2131690482;
+			public const int srl_header_secondary = 2131690482;
 			
 			// aapt resource value: 0x7F0F03F3
-			public const int start_cloud = 2131690483;
+			public const int srl_header_update = 2131690483;
 			
 			// aapt resource value: 0x7F0F03F4
-			public const int start_to_experience = 2131690484;
+			public const int start_cloud = 2131690484;
 			
 			// aapt resource value: 0x7F0F03F5
-			public const int start_voice_talk = 2131690485;
+			public const int start_to_experience = 2131690485;
 			
 			// aapt resource value: 0x7F0F03F6
-			public const int status_bar_notification_info_overflow = 2131690486;
+			public const int start_voice_talk = 2131690486;
 			
 			// aapt resource value: 0x7F0F03F7
-			public const int step3_adding_device_to_account = 2131690487;
+			public const int status_bar_notification_info_overflow = 2131690487;
 			
 			// aapt resource value: 0x7F0F03F8
-			public const int stop = 2131690488;
+			public const int step3_adding_device_to_account = 2131690488;
 			
 			// aapt resource value: 0x7F0F03F9
-			public const int storage_status = 2131690489;
+			public const int stop = 2131690489;
 			
 			// aapt resource value: 0x7F0F03FA
-			public const int stream_type = 2131690490;
-			
-			// aapt resource value: 0x7F0F03FD
-			public const int string_apiurl = 2131690493;
+			public const int storage_status = 2131690490;
 			
 			// aapt resource value: 0x7F0F03FB
-			public const int string_ap_connection = 2131690491;
-			
-			// aapt resource value: 0x7F0F03FC
-			public const int string_ap_connection_normal = 2131690492;
+			public const int stream_type = 2131690491;
 			
 			// aapt resource value: 0x7F0F03FE
-			public const int string_authurl = 2131690494;
+			public const int string_apiurl = 2131690494;
 			
-			// aapt resource value: 0x7F0F0400
-			public const int string_deviceserial = 2131690496;
+			// aapt resource value: 0x7F0F03FC
+			public const int string_ap_connection = 2131690492;
+			
+			// aapt resource value: 0x7F0F03FD
+			public const int string_ap_connection_normal = 2131690493;
 			
 			// aapt resource value: 0x7F0F03FF
-			public const int string_device_network_mode = 2131690495;
+			public const int string_authurl = 2131690495;
 			
 			// aapt resource value: 0x7F0F0401
-			public const int string_ezopenurl = 2131690497;
+			public const int string_deviceserial = 2131690497;
+			
+			// aapt resource value: 0x7F0F0400
+			public const int string_device_network_mode = 2131690496;
 			
 			// aapt resource value: 0x7F0F0402
-			public const int string_get_device_version_fail = 2131690498;
+			public const int string_ezopenurl = 2131690498;
 			
 			// aapt resource value: 0x7F0F0403
-			public const int string_smart_and_sound_wave_connection = 2131690499;
+			public const int string_get_device_version_fail = 2131690499;
 			
 			// aapt resource value: 0x7F0F0404
-			public const int string_smart_connection = 2131690500;
+			public const int string_smart_and_sound_wave_connection = 2131690500;
 			
 			// aapt resource value: 0x7F0F0405
-			public const int string_smart_connection_normal = 2131690501;
+			public const int string_smart_connection = 2131690501;
 			
 			// aapt resource value: 0x7F0F0406
-			public const int string_sound_wave_connection = 2131690502;
+			public const int string_smart_connection_normal = 2131690502;
 			
 			// aapt resource value: 0x7F0F0407
-			public const int string_wired_connection = 2131690503;
+			public const int string_sound_wave_connection = 2131690503;
 			
 			// aapt resource value: 0x7F0F0408
-			public const int submit_secure_validate = 2131690504;
+			public const int string_wired_connection = 2131690504;
 			
 			// aapt resource value: 0x7F0F0409
-			public const int submit_sms_code = 2131690505;
+			public const int submit_secure_validate = 2131690505;
 			
 			// aapt resource value: 0x7F0F040A
-			public const int switch_to_handset = 2131690506;
+			public const int submit_sms_code = 2131690506;
 			
 			// aapt resource value: 0x7F0F040B
-			public const int switch_to_speaker = 2131690507;
+			public const int switch_to_handset = 2131690507;
 			
 			// aapt resource value: 0x7F0F040C
-			public const int system_default_channel = 2131690508;
+			public const int switch_to_speaker = 2131690508;
 			
 			// aapt resource value: 0x7F0F040D
-			public const int tab_more = 2131690509;
+			public const int system_default_channel = 2131690509;
 			
 			// aapt resource value: 0x7F0F040E
-			public const int talk = 2131690510;
-			
-			// aapt resource value: 0x7F0F0411
-			public const int talking = 2131690513;
+			public const int tab_more = 2131690510;
 			
 			// aapt resource value: 0x7F0F040F
-			public const int talk_open_failed = 2131690511;
-			
-			// aapt resource value: 0x7F0F0410
-			public const int talk_open_success = 2131690512;
+			public const int talk = 2131690511;
 			
 			// aapt resource value: 0x7F0F0412
-			public const int text_day_ago = 2131690514;
+			public const int talking = 2131690514;
+			
+			// aapt resource value: 0x7F0F0410
+			public const int talk_open_failed = 2131690512;
+			
+			// aapt resource value: 0x7F0F0411
+			public const int talk_open_success = 2131690513;
 			
 			// aapt resource value: 0x7F0F0413
-			public const int text_end_time_hint = 2131690515;
+			public const int text_day_ago = 2131690515;
 			
 			// aapt resource value: 0x7F0F0414
-			public const int text_hour_ago = 2131690516;
+			public const int text_end_time_hint = 2131690516;
 			
 			// aapt resource value: 0x7F0F0415
-			public const int text_just = 2131690517;
+			public const int text_hour_ago = 2131690517;
 			
 			// aapt resource value: 0x7F0F0416
-			public const int text_minute_ago = 2131690518;
+			public const int text_just = 2131690518;
 			
 			// aapt resource value: 0x7F0F0417
-			public const int text_month_ago = 2131690519;
+			public const int text_minute_ago = 2131690519;
 			
 			// aapt resource value: 0x7F0F0418
-			public const int text_press_to_copy = 2131690520;
+			public const int text_month_ago = 2131690520;
 			
 			// aapt resource value: 0x7F0F0419
-			public const int text_seconds_ago = 2131690521;
+			public const int text_press_to_copy = 2131690521;
 			
 			// aapt resource value: 0x7F0F041A
-			public const int text_start_time_hint = 2131690522;
+			public const int text_seconds_ago = 2131690522;
 			
 			// aapt resource value: 0x7F0F041B
-			public const int text_year_ago = 2131690523;
+			public const int text_start_time_hint = 2131690523;
 			
 			// aapt resource value: 0x7F0F041C
-			public const int tip = 2131690524;
+			public const int text_year_ago = 2131690524;
 			
 			// aapt resource value: 0x7F0F041D
-			public const int tip_confirm_unlock = 2131690525;
+			public const int tip = 2131690525;
 			
 			// aapt resource value: 0x7F0F041E
-			public const int tip_heard_voice = 2131690526;
+			public const int tip_confirm_unlock = 2131690526;
 			
 			// aapt resource value: 0x7F0F041F
-			public const int tip_login_out = 2131690527;
+			public const int tip_heard_voice = 2131690527;
 			
 			// aapt resource value: 0x7F0F0420
-			public const int tip_of_added_by_yourself_and_online = 2131690528;
+			public const int tip_login_out = 2131690528;
 			
 			// aapt resource value: 0x7F0F0421
-			public const int tip_of_bad_net = 2131690529;
+			public const int tip_of_added_by_yourself_and_online = 2131690529;
 			
 			// aapt resource value: 0x7F0F0422
-			public const int tip_playback_again = 2131690530;
+			public const int tip_of_bad_net = 2131690530;
 			
 			// aapt resource value: 0x7F0F0423
-			public const int tip_specified_device = 2131690531;
+			public const int tip_playback_again = 2131690531;
 			
 			// aapt resource value: 0x7F0F0424
-			public const int title_activate_device = 2131690532;
+			public const int tip_specified_device = 2131690532;
 			
 			// aapt resource value: 0x7F0F0425
-			public const int title_activate_device_fail = 2131690533;
+			public const int title_activate_device = 2131690533;
 			
 			// aapt resource value: 0x7F0F0426
-			public const int title_activity_connect_device_wifi = 2131690534;
+			public const int title_activate_device_fail = 2131690534;
 			
 			// aapt resource value: 0x7F0F0427
-			public const int title_activity_ezupgrade_device = 2131690535;
+			public const int title_activity_connect_device_wifi = 2131690535;
 			
 			// aapt resource value: 0x7F0F0428
-			public const int today = 2131690536;
+			public const int title_activity_ezupgrade_device = 2131690536;
 			
 			// aapt resource value: 0x7F0F0429
-			public const int touch_fingerprint_sensor_hint = 2131690537;
+			public const int today = 2131690537;
 			
 			// aapt resource value: 0x7F0F042A
-			public const int touch_to_load = 2131690538;
+			public const int touch_fingerprint_sensor_hint = 2131690538;
 			
 			// aapt resource value: 0x7F0F042B
-			public const int try_again = 2131690539;
+			public const int touch_to_load = 2131690539;
 			
 			// aapt resource value: 0x7F0F042C
-			public const int ui_call_demo_txt = 2131690540;
+			public const int try_again = 2131690540;
 			
 			// aapt resource value: 0x7F0F042D
-			public const int unable_identify_two_dimensional_code_tip = 2131690541;
+			public const int ui_call_demo_txt = 2131690541;
 			
 			// aapt resource value: 0x7F0F042E
-			public const int unanswered = 2131690542;
+			public const int unable_identify_two_dimensional_code_tip = 2131690542;
 			
 			// aapt resource value: 0x7F0F042F
-			public const int unbind_to_bind = 2131690543;
+			public const int unanswered = 2131690543;
 			
 			// aapt resource value: 0x7F0F0430
-			public const int unblanking = 2131690544;
+			public const int unbind_to_bind = 2131690544;
 			
 			// aapt resource value: 0x7F0F0431
-			public const int unknow_ssid = 2131690545;
+			public const int unblanking = 2131690545;
 			
 			// aapt resource value: 0x7F0F0432
-			public const int unlock_fail = 2131690546;
+			public const int unknow_ssid = 2131690546;
 			
 			// aapt resource value: 0x7F0F0433
-			public const int unlock_success = 2131690547;
+			public const int unlock_fail = 2131690547;
 			
 			// aapt resource value: 0x7F0F0434
-			public const int unnamed = 2131690548;
+			public const int unlock_success = 2131690548;
 			
 			// aapt resource value: 0x7F0F0435
-			public const int update_exit = 2131690549;
+			public const int unnamed = 2131690549;
 			
 			// aapt resource value: 0x7F0F0436
-			public const int upgrade = 2131690550;
+			public const int update_exit = 2131690550;
 			
 			// aapt resource value: 0x7F0F0437
-			public const int upgrade_fail = 2131690551;
+			public const int upgrade = 2131690551;
 			
 			// aapt resource value: 0x7F0F0438
-			public const int upgrade_progress = 2131690552;
+			public const int upgrade_fail = 2131690552;
 			
 			// aapt resource value: 0x7F0F0439
-			public const int upgrade_success = 2131690553;
+			public const int upgrade_progress = 2131690553;
 			
 			// aapt resource value: 0x7F0F043A
-			public const int upgrade_success_progress = 2131690554;
+			public const int upgrade_success = 2131690554;
 			
 			// aapt resource value: 0x7F0F043B
-			public const int user_input_name = 2131690555;
+			public const int upgrade_success_progress = 2131690555;
 			
 			// aapt resource value: 0x7F0F043C
-			public const int user_login_title = 2131690556;
+			public const int user_input_name = 2131690556;
 			
 			// aapt resource value: 0x7F0F043D
-			public const int user_name_txt = 2131690557;
+			public const int user_login_title = 2131690557;
 			
 			// aapt resource value: 0x7F0F043E
-			public const int user_pwd_login_login = 2131690558;
+			public const int user_name_txt = 2131690558;
 			
 			// aapt resource value: 0x7F0F043F
-			public const int user_register = 2131690559;
+			public const int user_pwd_login_login = 2131690559;
 			
 			// aapt resource value: 0x7F0F0440
-			public const int user_register_btn = 2131690560;
+			public const int user_register = 2131690560;
 			
 			// aapt resource value: 0x7F0F0441
-			public const int valid_code_retrieve_valid_num = 2131690561;
+			public const int user_register_btn = 2131690561;
 			
 			// aapt resource value: 0x7F0F0442
-			public const int verify_camera_fail_network_exception = 2131690562;
+			public const int valid_code_retrieve_valid_num = 2131690562;
 			
 			// aapt resource value: 0x7F0F0443
-			public const int verify_code_error = 2131690563;
+			public const int verify_camera_fail_network_exception = 2131690563;
 			
 			// aapt resource value: 0x7F0F0444
-			public const int verify_sms_code_fail = 2131690564;
+			public const int verify_code_error = 2131690564;
 			
 			// aapt resource value: 0x7F0F0445
-			public const int verify_sms_code_success = 2131690565;
+			public const int verify_sms_code_fail = 2131690565;
 			
 			// aapt resource value: 0x7F0F0446
-			public const int version_newest = 2131690566;
+			public const int verify_sms_code_success = 2131690566;
 			
 			// aapt resource value: 0x7F0F0447
-			public const int video_answer = 2131690567;
+			public const int version_newest = 2131690567;
 			
 			// aapt resource value: 0x7F0F0448
-			public const int video_box = 2131690568;
+			public const int video_answer = 2131690568;
 			
 			// aapt resource value: 0x7F0F0449
-			public const int video_confirm = 2131690569;
+			public const int video_box = 2131690569;
 			
 			// aapt resource value: 0x7F0F044A
-			public const int video_device = 2131690570;
+			public const int video_confirm = 2131690570;
 			
 			// aapt resource value: 0x7F0F044B
-			public const int video_fail = 2131690571;
+			public const int video_device = 2131690571;
 			
 			// aapt resource value: 0x7F0F044C
-			public const int video_hang_up = 2131690572;
+			public const int video_fail = 2131690572;
 			
 			// aapt resource value: 0x7F0F044D
-			public const int video_icon = 2131690573;
+			public const int video_hang_up = 2131690573;
 			
 			// aapt resource value: 0x7F0F044E
-			public const int video_not_answer = 2131690574;
+			public const int video_icon = 2131690574;
 			
 			// aapt resource value: 0x7F0F044F
-			public const int video_screenshot = 2131690575;
+			public const int video_not_answer = 2131690575;
 			
 			// aapt resource value: 0x7F0F0450
-			public const int video_square = 2131690576;
+			public const int video_screenshot = 2131690576;
 			
 			// aapt resource value: 0x7F0F0451
-			public const int video_success = 2131690577;
+			public const int video_square = 2131690577;
 			
 			// aapt resource value: 0x7F0F0452
-			public const int video_talk_call_cancel = 2131690578;
+			public const int video_success = 2131690578;
 			
 			// aapt resource value: 0x7F0F0453
-			public const int video_talk_call_is_accepted = 2131690579;
+			public const int video_talk_call_cancel = 2131690579;
 			
 			// aapt resource value: 0x7F0F0454
-			public const int video_talk_is_playing = 2131690580;
+			public const int video_talk_call_is_accepted = 2131690580;
 			
 			// aapt resource value: 0x7F0F0455
-			public const int video_talk_sdk_toast_hang_up = 2131690581;
+			public const int video_talk_is_playing = 2131690581;
 			
 			// aapt resource value: 0x7F0F0456
-			public const int video_talk_sdk_toast_nobody = 2131690582;
+			public const int video_talk_sdk_toast_hang_up = 2131690582;
 			
 			// aapt resource value: 0x7F0F0457
-			public const int video_talk_signal_weak = 2131690583;
+			public const int video_talk_sdk_toast_nobody = 2131690583;
 			
 			// aapt resource value: 0x7F0F0458
-			public const int video_talk_watch_is_busy = 2131690584;
+			public const int video_talk_signal_weak = 2131690584;
 			
 			// aapt resource value: 0x7F0F0459
-			public const int video_talk_watch_temperature_high_hang = 2131690585;
+			public const int video_talk_watch_is_busy = 2131690585;
 			
 			// aapt resource value: 0x7F0F045A
-			public const int video_talk_watch_temperature_high_hint = 2131690586;
+			public const int video_talk_watch_temperature_high_hang = 2131690586;
 			
 			// aapt resource value: 0x7F0F045B
-			public const int video_talk_watch_temperature_high_reject = 2131690587;
+			public const int video_talk_watch_temperature_high_hint = 2131690587;
 			
 			// aapt resource value: 0x7F0F045C
-			public const int video_talk_watch_temperature_high_warn = 2131690588;
+			public const int video_talk_watch_temperature_high_reject = 2131690588;
 			
 			// aapt resource value: 0x7F0F045D
-			public const int video_tip = 2131690589;
+			public const int video_talk_watch_temperature_high_warn = 2131690589;
 			
 			// aapt resource value: 0x7F0F045E
-			public const int video_unlock = 2131690590;
+			public const int video_tip = 2131690590;
 			
 			// aapt resource value: 0x7F0F045F
-			public const int volume = 2131690591;
+			public const int video_unlock = 2131690591;
 			
 			// aapt resource value: 0x7F0F0460
-			public const int wait = 2131690592;
+			public const int volume = 2131690592;
 			
 			// aapt resource value: 0x7F0F0461
-			public const int web_login_button_txt = 2131690593;
+			public const int wait = 2131690593;
 			
 			// aapt resource value: 0x7F0F0462
-			public const int wechat_interconnect = 2131690594;
+			public const int web_login_button_txt = 2131690594;
 			
 			// aapt resource value: 0x7F0F0463
-			public const int wifi_connected = 2131690595;
+			public const int wechat_interconnect = 2131690595;
 			
 			// aapt resource value: 0x7F0F0464
-			public const int wifi_connection_finish_need_refresh = 2131690596;
+			public const int wifi_connected = 2131690596;
 			
 			// aapt resource value: 0x7F0F0465
-			public const int wifi_set = 2131690597;
+			public const int wifi_connection_finish_need_refresh = 2131690597;
 			
 			// aapt resource value: 0x7F0F0466
-			public const int wifi_setting = 2131690598;
+			public const int wifi_set = 2131690598;
 			
 			// aapt resource value: 0x7F0F0467
-			public const int wired_connection = 2131690599;
-			
-			// aapt resource value: 0x7F0F0469
-			public const int xlistview_footer_hint_normal = 2131690601;
+			public const int wifi_setting = 2131690599;
 			
 			// aapt resource value: 0x7F0F0468
-			public const int xlistview_footer_hint_no_more_device = 2131690600;
+			public const int wired_connection = 2131690600;
 			
 			// aapt resource value: 0x7F0F046A
-			public const int xlistview_footer_hint_ready = 2131690602;
+			public const int xlistview_footer_hint_normal = 2131690602;
+			
+			// aapt resource value: 0x7F0F0469
+			public const int xlistview_footer_hint_no_more_device = 2131690601;
 			
 			// aapt resource value: 0x7F0F046B
-			public const int xlistview_footer_no_more = 2131690603;
+			public const int xlistview_footer_hint_ready = 2131690603;
 			
 			// aapt resource value: 0x7F0F046C
-			public const int xlistview_footer_no_more_msg = 2131690604;
+			public const int xlistview_footer_no_more = 2131690604;
 			
 			// aapt resource value: 0x7F0F046D
-			public const int xlistview_header_hint_loading = 2131690605;
+			public const int xlistview_footer_no_more_msg = 2131690605;
 			
 			// aapt resource value: 0x7F0F046E
-			public const int xlistview_header_hint_more = 2131690606;
+			public const int xlistview_header_hint_loading = 2131690606;
 			
 			// aapt resource value: 0x7F0F046F
-			public const int xlistview_header_hint_normal = 2131690607;
+			public const int xlistview_header_hint_more = 2131690607;
 			
 			// aapt resource value: 0x7F0F0470
-			public const int xlistview_header_hint_ready = 2131690608;
+			public const int xlistview_header_hint_normal = 2131690608;
 			
 			// aapt resource value: 0x7F0F0471
-			public const int xlistview_header_last_time = 2131690609;
+			public const int xlistview_header_hint_ready = 2131690609;
 			
 			// aapt resource value: 0x7F0F0472
-			public const int zxing_app_name = 2131690610;
+			public const int xlistview_header_last_time = 2131690610;
 			
 			// aapt resource value: 0x7F0F0473
-			public const int zxing_button_ok = 2131690611;
+			public const int zxing_app_name = 2131690611;
 			
 			// aapt resource value: 0x7F0F0474
-			public const int zxing_msg_camera_framework_bug = 2131690612;
+			public const int zxing_button_ok = 2131690612;
 			
 			// aapt resource value: 0x7F0F0475
-			public const int zxing_msg_default_status = 2131690613;
+			public const int zxing_msg_camera_framework_bug = 2131690613;
 			
 			// aapt resource value: 0x7F0F0476
-			public const int zxing_scan_tips = 2131690614;
+			public const int zxing_msg_default_status = 2131690614;
+			
+			// aapt resource value: 0x7F0F0477
+			public const int zxing_scan_tips = 2131690615;
 			
 			static String()
 			{
diff --git a/HDL_APP_Project.sln b/HDL_APP_Project.sln
index a98de8e..75268d7 100644
--- a/HDL_APP_Project.sln
+++ b/HDL_APP_Project.sln
@@ -25,6 +25,10 @@
 		.editorconfig = .editorconfig
 	EndProjectSection
 EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NunitTest-Ios", "NunitTest-Ios\NunitTest-Ios.csproj", "{C70A6AA7-2FBA-4A37-9132-AD49BD037899}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NunitTest-Android", "NunitTest-Android\NunitTest-Android.csproj", "{7E89ABBF-1E2C-4FE7-AA1B-6599EB4856A2}"
+EndProject
 Global
 	GlobalSection(SharedMSBuildProjectFiles) = preSolution
 		HDL_ON\HDL_ON.projitems*{09712674-2a38-407b-b1e2-560b2c352f9a}*SharedItemsImports = 4
@@ -138,6 +142,30 @@
 		{3A0E9FF9-56B6-4323-9AE6-2B22975E399B}.Release|iPhone.Build.0 = Release|Any CPU
 		{3A0E9FF9-56B6-4323-9AE6-2B22975E399B}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
 		{3A0E9FF9-56B6-4323-9AE6-2B22975E399B}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
+		{C70A6AA7-2FBA-4A37-9132-AD49BD037899}.Debug|Any CPU.ActiveCfg = Debug|iPhone
+		{C70A6AA7-2FBA-4A37-9132-AD49BD037899}.Debug|Any CPU.Build.0 = Debug|iPhone
+		{C70A6AA7-2FBA-4A37-9132-AD49BD037899}.Debug|iPhone.ActiveCfg = Debug|iPhone
+		{C70A6AA7-2FBA-4A37-9132-AD49BD037899}.Debug|iPhone.Build.0 = Debug|iPhone
+		{C70A6AA7-2FBA-4A37-9132-AD49BD037899}.Debug|iPhoneSimulator.ActiveCfg = Debug|iPhoneSimulator
+		{C70A6AA7-2FBA-4A37-9132-AD49BD037899}.Debug|iPhoneSimulator.Build.0 = Debug|iPhoneSimulator
+		{C70A6AA7-2FBA-4A37-9132-AD49BD037899}.Release|Any CPU.ActiveCfg = Release|iPhoneSimulator
+		{C70A6AA7-2FBA-4A37-9132-AD49BD037899}.Release|Any CPU.Build.0 = Release|iPhoneSimulator
+		{C70A6AA7-2FBA-4A37-9132-AD49BD037899}.Release|iPhone.ActiveCfg = Release|iPhone
+		{C70A6AA7-2FBA-4A37-9132-AD49BD037899}.Release|iPhone.Build.0 = Release|iPhone
+		{C70A6AA7-2FBA-4A37-9132-AD49BD037899}.Release|iPhoneSimulator.ActiveCfg = Release|iPhoneSimulator
+		{C70A6AA7-2FBA-4A37-9132-AD49BD037899}.Release|iPhoneSimulator.Build.0 = Release|iPhoneSimulator
+		{7E89ABBF-1E2C-4FE7-AA1B-6599EB4856A2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{7E89ABBF-1E2C-4FE7-AA1B-6599EB4856A2}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{7E89ABBF-1E2C-4FE7-AA1B-6599EB4856A2}.Debug|iPhone.ActiveCfg = Debug|Any CPU
+		{7E89ABBF-1E2C-4FE7-AA1B-6599EB4856A2}.Debug|iPhone.Build.0 = Debug|Any CPU
+		{7E89ABBF-1E2C-4FE7-AA1B-6599EB4856A2}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
+		{7E89ABBF-1E2C-4FE7-AA1B-6599EB4856A2}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
+		{7E89ABBF-1E2C-4FE7-AA1B-6599EB4856A2}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{7E89ABBF-1E2C-4FE7-AA1B-6599EB4856A2}.Release|Any CPU.Build.0 = Release|Any CPU
+		{7E89ABBF-1E2C-4FE7-AA1B-6599EB4856A2}.Release|iPhone.ActiveCfg = Release|Any CPU
+		{7E89ABBF-1E2C-4FE7-AA1B-6599EB4856A2}.Release|iPhone.Build.0 = Release|Any CPU
+		{7E89ABBF-1E2C-4FE7-AA1B-6599EB4856A2}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
+		{7E89ABBF-1E2C-4FE7-AA1B-6599EB4856A2}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
 	EndGlobalSection
 	GlobalSection(SolutionProperties) = preSolution
 		HideSolutionNode = FALSE
diff --git a/NunitTest-Android/ApiPostTests.cs b/NunitTest-Android/ApiPostTests.cs
new file mode 100644
index 0000000..968fe5c
--- /dev/null
+++ b/NunitTest-Android/ApiPostTests.cs
@@ -0,0 +1,47 @@
+锘縰sing System;
+using System.Net;
+using System.Net.Http;
+using System.Text;
+using System.Threading.Tasks;
+using Newtonsoft.Json;
+using NUnit.Framework;
+
+namespace NunitTestIos
+{
+    [TestFixture]
+    public class ApiPostTests
+    {
+        private HttpClient client;
+        private const string apiUrl = "https://api.example.com/";
+
+        [SetUp]
+        public void Setup()
+        {
+            client = new HttpClient();
+            client.BaseAddress = new Uri(apiUrl);
+        }
+
+        [Test]
+        public async Task TestPostRequest()
+        {
+            // 鍑嗗 POST 鏁版嵁
+            var postData = new { key = "value" };
+            var json = JsonConvert.SerializeObject(postData);
+            var content = new StringContent(json, Encoding.UTF8, "application/json");
+
+            // 鍙戣捣 POST 璇锋眰
+            HttpResponseMessage response = await client.PostAsync("endpoint", content);
+
+            // 楠岃瘉鐘舵�佺爜
+            Assert.AreEqual(HttpStatusCode.Created, response.StatusCode);
+
+            // 楠岃瘉杩斿洖鐨勬暟鎹垨鍝嶅簲鍐呭
+            string responseBody = await response.Content.ReadAsStringAsync();
+            Assert.IsTrue(!string.IsNullOrEmpty(responseBody));
+            // 鍙互杩涗竴姝ラ獙璇佽繑鍥炵殑鏁版嵁鏄惁绗﹀悎棰勬湡
+        }
+
+    }
+
+}
+
diff --git a/NunitTest-Android/Assets/AboutAssets.txt b/NunitTest-Android/Assets/AboutAssets.txt
new file mode 100644
index 0000000..bac3270
--- /dev/null
+++ b/NunitTest-Android/Assets/AboutAssets.txt
@@ -0,0 +1,19 @@
+锘緼ny raw assets you want to be deployed with your application can be placed in
+this directory (and child directories) and given a Build Action of "AndroidAsset".
+
+These files will be deployed with your package and will be accessible using Android's
+AssetManager, like this:
+
+public class ReadAsset : Activity
+{
+    protected override void OnCreate (Bundle bundle)
+    {
+        base.OnCreate (bundle);
+
+        InputStream input = Assets.Open ("my_asset.txt");
+    }
+}
+
+Additionally, some Android functions will automatically load asset files:
+
+Typeface tf = Typeface.CreateFromAsset (Context.Assets, "fonts/samplefont.ttf");
diff --git a/NunitTest-Android/MainActivity.cs b/NunitTest-Android/MainActivity.cs
new file mode 100644
index 0000000..d935128
--- /dev/null
+++ b/NunitTest-Android/MainActivity.cs
@@ -0,0 +1,24 @@
+锘縰sing System.Reflection;
+
+using Android.App;
+using Android.OS;
+using Xamarin.Android.NUnitLite;
+
+namespace NunitTest_Android
+{
+    [Activity(Label = "@string/app_name", MainLauncher = true)]
+    public class MainActivity : TestSuiteActivity
+    {
+        protected override void OnCreate(Bundle bundle)
+        {
+            // tests can be inside the main assembly
+            AddTest(Assembly.GetExecutingAssembly());
+            // or in any reference assemblies
+            // AddTest (typeof (Your.Library.TestClass).Assembly);
+
+            // Once you called base.OnCreate(), you cannot add more assemblies.
+            base.OnCreate(bundle);
+        }
+    }
+}
+
diff --git a/NunitTest-Android/NunitTest-Android.csproj b/NunitTest-Android/NunitTest-Android.csproj
new file mode 100644
index 0000000..31c0db1
--- /dev/null
+++ b/NunitTest-Android/NunitTest-Android.csproj
@@ -0,0 +1,101 @@
+锘�<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ProjectTypeGuids>{EFBA0AD7-5A72-4C68-AF49-83D382785DCF};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
+    <ProjectGuid>{7E89ABBF-1E2C-4FE7-AA1B-6599EB4856A2}</ProjectGuid>
+    <TemplateGuid>{7BB5766D-53A1-4A5D-8618-7602F8FCD9B8}</TemplateGuid>
+    <OutputType>Library</OutputType>
+    <RootNamespace>NunitTest_Android</RootNamespace>
+    <AssemblyName>NunitTest_Android</AssemblyName>
+    <Deterministic>True</Deterministic>
+    <MonoAndroidAssetsPrefix>Assets</MonoAndroidAssetsPrefix>
+    <MonoAndroidResourcePrefix>Resources</MonoAndroidResourcePrefix>
+    <AndroidResgenClass>Resource</AndroidResgenClass>
+    <AndroidResgenFile>Resources\Resource.designer.cs</AndroidResgenFile>
+    <AndroidApplication>True</AndroidApplication>
+    <AndroidManifest>Properties\AndroidManifest.xml</AndroidManifest>
+    <IsAppExtension>true</IsAppExtension>
+    <TargetFrameworkVersion>v13.0</TargetFrameworkVersion>
+    <AndroidEnableSGenConcurrent>true</AndroidEnableSGenConcurrent>
+    <AndroidUseAapt2>true</AndroidUseAapt2>
+    <AndroidHttpClientHandlerType>Xamarin.Android.Net.AndroidClientHandler</AndroidHttpClientHandlerType>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <DebugSymbols>True</DebugSymbols>
+    <DebugType>portable</DebugType>
+    <Optimize>False</Optimize>
+    <OutputPath>bin\Debug</OutputPath>
+    <DefineConstants>DEBUG;</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <AndroidLinkMode>None</AndroidLinkMode>
+    <ConsolePause>False</ConsolePause>
+    <EmbedAssembliesIntoApk>False</EmbedAssembliesIntoApk>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+    <DebugSymbols>True</DebugSymbols>
+    <DebugType>portable</DebugType>
+    <Optimize>True</Optimize>
+    <OutputPath>bin\Release</OutputPath>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <AndroidUseSharedRuntime>False</AndroidUseSharedRuntime>
+    <ConsolePause>False</ConsolePause>
+    <EmbedAssembliesIntoApk>True</EmbedAssembliesIntoApk>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="System" />
+    <Reference Include="System.Xml" />
+    <Reference Include="System.Core" />
+    <Reference Include="Mono.Android" />
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="MainActivity.cs" />
+    <Compile Include="TestsSample.cs" />
+    <Compile Include="Resources\Resource.designer.cs" />
+    <Compile Include="Properties\AssemblyInfo.cs" />
+    <Compile Include="ApiPostTests.cs" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="Resources\AboutResources.txt" />
+    <None Include="Assets\AboutAssets.txt" />
+    <None Include="Properties\AndroidManifest.xml" />
+  </ItemGroup>
+  <ItemGroup>
+    <AndroidResource Include="Resources\mipmap-anydpi-v26\ic_launcher.xml" />
+    <AndroidResource Include="Resources\mipmap-anydpi-v26\ic_launcher_round.xml" />
+    <AndroidResource Include="Resources\mipmap-hdpi\ic_launcher.png" />
+    <AndroidResource Include="Resources\mipmap-hdpi\ic_launcher_foreground.png" />
+    <AndroidResource Include="Resources\mipmap-hdpi\ic_launcher_round.png" />
+    <AndroidResource Include="Resources\mipmap-mdpi\ic_launcher.png" />
+    <AndroidResource Include="Resources\mipmap-mdpi\ic_launcher_foreground.png" />
+    <AndroidResource Include="Resources\mipmap-mdpi\ic_launcher_round.png" />
+    <AndroidResource Include="Resources\mipmap-xhdpi\ic_launcher.png" />
+    <AndroidResource Include="Resources\mipmap-xhdpi\ic_launcher_foreground.png" />
+    <AndroidResource Include="Resources\mipmap-xhdpi\ic_launcher_round.png" />
+    <AndroidResource Include="Resources\mipmap-xxhdpi\ic_launcher.png" />
+    <AndroidResource Include="Resources\mipmap-xxhdpi\ic_launcher_foreground.png" />
+    <AndroidResource Include="Resources\mipmap-xxhdpi\ic_launcher_round.png" />
+    <AndroidResource Include="Resources\mipmap-xxxhdpi\ic_launcher.png" />
+    <AndroidResource Include="Resources\mipmap-xxxhdpi\ic_launcher_foreground.png" />
+    <AndroidResource Include="Resources\mipmap-xxxhdpi\ic_launcher_round.png" />
+    <AndroidResource Include="Resources\values\colors.xml" />
+    <AndroidResource Include="Resources\values\ic_launcher_background.xml" />
+    <AndroidResource Include="Resources\values\strings.xml" />
+  </ItemGroup>
+  <ItemGroup>
+    <PackageReference Include="Xamarin.Legacy.NUnitLite" Version="0.0.1-alpha" />
+    <PackageReference Include="Newtonsoft.Json">
+      <Version>13.0.3</Version>
+    </PackageReference>
+    <PackageReference Include="System.Net.Http">
+      <Version>4.3.4</Version>
+    </PackageReference>
+    <PackageReference Include="NUnit">
+      <Version>4.0.1</Version>
+    </PackageReference>
+  </ItemGroup>
+  <Import Project="$(MSBuildExtensionsPath)\Xamarin\Android\Xamarin.Android.CSharp.targets" />
+</Project>
diff --git a/NunitTest-Android/Properties/AndroidManifest.xml b/NunitTest-Android/Properties/AndroidManifest.xml
new file mode 100644
index 0000000..f5c6165
--- /dev/null
+++ b/NunitTest-Android/Properties/AndroidManifest.xml
@@ -0,0 +1,6 @@
+锘�<?xml version="1.0" encoding="utf-8"?>
+<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:versionCode="1" android:versionName="1.0" package="com.companyname.NunitTest_Android">
+	<uses-sdk android:minSdkVersion="21" android:targetSdkVersion="33" />
+	<application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true"></application>
+	<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
+</manifest>
\ No newline at end of file
diff --git a/NunitTest-Android/Properties/AssemblyInfo.cs b/NunitTest-Android/Properties/AssemblyInfo.cs
new file mode 100644
index 0000000..091bc34
--- /dev/null
+++ b/NunitTest-Android/Properties/AssemblyInfo.cs
@@ -0,0 +1,27 @@
+锘縰sing System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+using Android.App;
+
+// General Information about an assembly is controlled through the following 
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("NunitTest_Android")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("NunitTest_Android")]
+[assembly: AssemblyCopyright("Copyright 漏  2020")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+[assembly: ComVisible(false)]
+
+// Version information for an assembly consists of the following four values:
+//
+//      Major Version
+//      Minor Version 
+//      Build Number
+//      Revision
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]
+
diff --git a/NunitTest-Android/Resources/AboutResources.txt b/NunitTest-Android/Resources/AboutResources.txt
new file mode 100644
index 0000000..5a3e390
--- /dev/null
+++ b/NunitTest-Android/Resources/AboutResources.txt
@@ -0,0 +1,44 @@
+锘縄mages, layout descriptions, binary blobs and string dictionaries can be included 
+in your application as resource files.  Various Android APIs are designed to 
+operate on the resource IDs instead of dealing with images, strings or binary blobs 
+directly.
+
+For example, a sample Android app that contains a user interface layout (main.xml),
+an internationalization string table (strings.xml) and some icons (drawable-XXX/icon.png) 
+would keep its resources in the "Resources" directory of the application:
+
+Resources/
+    drawable/
+        icon.png
+
+    layout/
+        main.xml
+
+    values/
+        strings.xml
+
+In order to get the build system to recognize Android resources, set the build action to
+"AndroidResource".  The native Android APIs do not operate directly with filenames, but 
+instead operate on resource IDs.  When you compile an Android application that uses resources, 
+the build system will package the resources for distribution and generate a class called "R" 
+(this is an Android convention) that contains the tokens for each one of the resources 
+included. For example, for the above Resources layout, this is what the R class would expose:
+
+public class R {
+    public class drawable {
+        public const int icon = 0x123;
+    }
+
+    public class layout {
+        public const int main = 0x456;
+    }
+
+    public class strings {
+        public const int first_string = 0xabc;
+        public const int second_string = 0xbcd;
+    }
+}
+
+You would then use R.drawable.icon to reference the drawable/icon.png file, or R.layout.main 
+to reference the layout/main.xml file, or R.strings.first_string to reference the first 
+string in the dictionary file values/strings.xml.
diff --git a/NunitTest-Android/Resources/Resource.designer.cs b/NunitTest-Android/Resources/Resource.designer.cs
new file mode 100644
index 0000000..e8fccdc
--- /dev/null
+++ b/NunitTest-Android/Resources/Resource.designer.cs
@@ -0,0 +1,234 @@
+#pragma warning disable 1591
+//------------------------------------------------------------------------------
+// <auto-generated>
+//     This code was generated by a tool.
+//     Runtime Version:4.0.30319.42000
+//
+//     Changes to this file may cause incorrect behavior and will be lost if
+//     the code is regenerated.
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+[assembly: global::Android.Runtime.ResourceDesignerAttribute("NunitTest_Android.Resource", IsApplication=true)]
+
+namespace NunitTest_Android
+{
+	
+	
+	[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Xamarin.Android.Build.Tasks", "13.2.1.111")]
+	public partial class Resource
+	{
+		
+		static Resource()
+		{
+			global::Android.Runtime.ResourceIdManager.UpdateIdValues();
+		}
+		
+		public static void UpdateIdValues()
+		{
+			global::Xamarin.Android.NUnitLite.Resource.Id.CreditsButton = global::NunitTest_Android.Resource.Id.CreditsButton;
+			global::Xamarin.Android.NUnitLite.Resource.Id.OptionHostName = global::NunitTest_Android.Resource.Id.OptionHostName;
+			global::Xamarin.Android.NUnitLite.Resource.Id.OptionPort = global::NunitTest_Android.Resource.Id.OptionPort;
+			global::Xamarin.Android.NUnitLite.Resource.Id.OptionRemoteServer = global::NunitTest_Android.Resource.Id.OptionRemoteServer;
+			global::Xamarin.Android.NUnitLite.Resource.Id.OptionsButton = global::NunitTest_Android.Resource.Id.OptionsButton;
+			global::Xamarin.Android.NUnitLite.Resource.Id.ResultFullName = global::NunitTest_Android.Resource.Id.ResultFullName;
+			global::Xamarin.Android.NUnitLite.Resource.Id.ResultMessage = global::NunitTest_Android.Resource.Id.ResultMessage;
+			global::Xamarin.Android.NUnitLite.Resource.Id.ResultResultState = global::NunitTest_Android.Resource.Id.ResultResultState;
+			global::Xamarin.Android.NUnitLite.Resource.Id.ResultRunSingleMethodTest = global::NunitTest_Android.Resource.Id.ResultRunSingleMethodTest;
+			global::Xamarin.Android.NUnitLite.Resource.Id.ResultsFailed = global::NunitTest_Android.Resource.Id.ResultsFailed;
+			global::Xamarin.Android.NUnitLite.Resource.Id.ResultsId = global::NunitTest_Android.Resource.Id.ResultsId;
+			global::Xamarin.Android.NUnitLite.Resource.Id.ResultsIgnored = global::NunitTest_Android.Resource.Id.ResultsIgnored;
+			global::Xamarin.Android.NUnitLite.Resource.Id.ResultsInconclusive = global::NunitTest_Android.Resource.Id.ResultsInconclusive;
+			global::Xamarin.Android.NUnitLite.Resource.Id.ResultsMessage = global::NunitTest_Android.Resource.Id.ResultsMessage;
+			global::Xamarin.Android.NUnitLite.Resource.Id.ResultsPassed = global::NunitTest_Android.Resource.Id.ResultsPassed;
+			global::Xamarin.Android.NUnitLite.Resource.Id.ResultsResult = global::NunitTest_Android.Resource.Id.ResultsResult;
+			global::Xamarin.Android.NUnitLite.Resource.Id.ResultStackTrace = global::NunitTest_Android.Resource.Id.ResultStackTrace;
+			global::Xamarin.Android.NUnitLite.Resource.Id.RunEverythingButton = global::NunitTest_Android.Resource.Id.RunEverythingButton;
+			global::Xamarin.Android.NUnitLite.Resource.Id.RunTestsButton = global::NunitTest_Android.Resource.Id.RunTestsButton;
+			global::Xamarin.Android.NUnitLite.Resource.Id.TestSuiteListView = global::NunitTest_Android.Resource.Id.TestSuiteListView;
+			global::Xamarin.Android.NUnitLite.Resource.Layout.options = global::NunitTest_Android.Resource.Layout.options;
+			global::Xamarin.Android.NUnitLite.Resource.Layout.results = global::NunitTest_Android.Resource.Layout.results;
+			global::Xamarin.Android.NUnitLite.Resource.Layout.Runner = global::NunitTest_Android.Resource.Layout.Runner;
+			global::Xamarin.Android.NUnitLite.Resource.Layout.test_result = global::NunitTest_Android.Resource.Layout.test_result;
+			global::Xamarin.Android.NUnitLite.Resource.Layout.test_suite = global::NunitTest_Android.Resource.Layout.test_suite;
+		}
+		
+		public partial class Attribute
+		{
+			
+			static Attribute()
+			{
+				global::Android.Runtime.ResourceIdManager.UpdateIdValues();
+			}
+			
+			private Attribute()
+			{
+			}
+		}
+		
+		public partial class Color
+		{
+			
+			// aapt resource value: 0x7F010000
+			public const int colorAccent = 2130771968;
+			
+			// aapt resource value: 0x7F010001
+			public const int colorPrimary = 2130771969;
+			
+			// aapt resource value: 0x7F010002
+			public const int colorPrimaryDark = 2130771970;
+			
+			// aapt resource value: 0x7F010003
+			public const int ic_launcher_background = 2130771971;
+			
+			static Color()
+			{
+				global::Android.Runtime.ResourceIdManager.UpdateIdValues();
+			}
+			
+			private Color()
+			{
+			}
+		}
+		
+		public partial class Id
+		{
+			
+			// aapt resource value: 0x7F020000
+			public const int CreditsButton = 2130837504;
+			
+			// aapt resource value: 0x7F020001
+			public const int OptionHostName = 2130837505;
+			
+			// aapt resource value: 0x7F020002
+			public const int OptionPort = 2130837506;
+			
+			// aapt resource value: 0x7F020003
+			public const int OptionRemoteServer = 2130837507;
+			
+			// aapt resource value: 0x7F020004
+			public const int OptionsButton = 2130837508;
+			
+			// aapt resource value: 0x7F020005
+			public const int ResultFullName = 2130837509;
+			
+			// aapt resource value: 0x7F020006
+			public const int ResultMessage = 2130837510;
+			
+			// aapt resource value: 0x7F020007
+			public const int ResultResultState = 2130837511;
+			
+			// aapt resource value: 0x7F020008
+			public const int ResultRunSingleMethodTest = 2130837512;
+			
+			// aapt resource value: 0x7F02000A
+			public const int ResultsFailed = 2130837514;
+			
+			// aapt resource value: 0x7F02000B
+			public const int ResultsId = 2130837515;
+			
+			// aapt resource value: 0x7F02000C
+			public const int ResultsIgnored = 2130837516;
+			
+			// aapt resource value: 0x7F02000D
+			public const int ResultsInconclusive = 2130837517;
+			
+			// aapt resource value: 0x7F02000E
+			public const int ResultsMessage = 2130837518;
+			
+			// aapt resource value: 0x7F02000F
+			public const int ResultsPassed = 2130837519;
+			
+			// aapt resource value: 0x7F020010
+			public const int ResultsResult = 2130837520;
+			
+			// aapt resource value: 0x7F020009
+			public const int ResultStackTrace = 2130837513;
+			
+			// aapt resource value: 0x7F020011
+			public const int RunEverythingButton = 2130837521;
+			
+			// aapt resource value: 0x7F020012
+			public const int RunTestsButton = 2130837522;
+			
+			// aapt resource value: 0x7F020013
+			public const int TestSuiteListView = 2130837523;
+			
+			static Id()
+			{
+				global::Android.Runtime.ResourceIdManager.UpdateIdValues();
+			}
+			
+			private Id()
+			{
+			}
+		}
+		
+		public partial class Layout
+		{
+			
+			// aapt resource value: 0x7F030000
+			public const int options = 2130903040;
+			
+			// aapt resource value: 0x7F030001
+			public const int results = 2130903041;
+			
+			// aapt resource value: 0x7F030002
+			public const int Runner = 2130903042;
+			
+			// aapt resource value: 0x7F030003
+			public const int test_result = 2130903043;
+			
+			// aapt resource value: 0x7F030004
+			public const int test_suite = 2130903044;
+			
+			static Layout()
+			{
+				global::Android.Runtime.ResourceIdManager.UpdateIdValues();
+			}
+			
+			private Layout()
+			{
+			}
+		}
+		
+		public partial class Mipmap
+		{
+			
+			// aapt resource value: 0x7F040000
+			public const int ic_launcher = 2130968576;
+			
+			// aapt resource value: 0x7F040001
+			public const int ic_launcher_foreground = 2130968577;
+			
+			// aapt resource value: 0x7F040002
+			public const int ic_launcher_round = 2130968578;
+			
+			static Mipmap()
+			{
+				global::Android.Runtime.ResourceIdManager.UpdateIdValues();
+			}
+			
+			private Mipmap()
+			{
+			}
+		}
+		
+		public partial class String
+		{
+			
+			// aapt resource value: 0x7F050000
+			public const int app_name = 2131034112;
+			
+			static String()
+			{
+				global::Android.Runtime.ResourceIdManager.UpdateIdValues();
+			}
+			
+			private String()
+			{
+			}
+		}
+	}
+}
+#pragma warning restore 1591
diff --git a/NunitTest-Android/Resources/mipmap-anydpi-v26/ic_launcher.xml b/NunitTest-Android/Resources/mipmap-anydpi-v26/ic_launcher.xml
new file mode 100644
index 0000000..e4b2544
--- /dev/null
+++ b/NunitTest-Android/Resources/mipmap-anydpi-v26/ic_launcher.xml
@@ -0,0 +1,6 @@
+锘�<?xml version="1.0" encoding="utf-8"?>
+<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
+    <background android:drawable="@color/ic_launcher_background"/>
+    <foreground android:drawable="@mipmap/ic_launcher_foreground"/>
+</adaptive-icon>
+
diff --git a/NunitTest-Android/Resources/mipmap-anydpi-v26/ic_launcher_round.xml b/NunitTest-Android/Resources/mipmap-anydpi-v26/ic_launcher_round.xml
new file mode 100644
index 0000000..e4b2544
--- /dev/null
+++ b/NunitTest-Android/Resources/mipmap-anydpi-v26/ic_launcher_round.xml
@@ -0,0 +1,6 @@
+锘�<?xml version="1.0" encoding="utf-8"?>
+<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
+    <background android:drawable="@color/ic_launcher_background"/>
+    <foreground android:drawable="@mipmap/ic_launcher_foreground"/>
+</adaptive-icon>
+
diff --git a/NunitTest-Android/Resources/mipmap-hdpi/ic_launcher.png b/NunitTest-Android/Resources/mipmap-hdpi/ic_launcher.png
new file mode 100644
index 0000000..2531cb3
--- /dev/null
+++ b/NunitTest-Android/Resources/mipmap-hdpi/ic_launcher.png
Binary files differ
diff --git a/NunitTest-Android/Resources/mipmap-hdpi/ic_launcher_foreground.png b/NunitTest-Android/Resources/mipmap-hdpi/ic_launcher_foreground.png
new file mode 100644
index 0000000..7a859c2
--- /dev/null
+++ b/NunitTest-Android/Resources/mipmap-hdpi/ic_launcher_foreground.png
Binary files differ
diff --git a/NunitTest-Android/Resources/mipmap-hdpi/ic_launcher_round.png b/NunitTest-Android/Resources/mipmap-hdpi/ic_launcher_round.png
new file mode 100644
index 0000000..b8d35b3
--- /dev/null
+++ b/NunitTest-Android/Resources/mipmap-hdpi/ic_launcher_round.png
Binary files differ
diff --git a/NunitTest-Android/Resources/mipmap-mdpi/ic_launcher.png b/NunitTest-Android/Resources/mipmap-mdpi/ic_launcher.png
new file mode 100644
index 0000000..795ea7c
--- /dev/null
+++ b/NunitTest-Android/Resources/mipmap-mdpi/ic_launcher.png
Binary files differ
diff --git a/NunitTest-Android/Resources/mipmap-mdpi/ic_launcher_foreground.png b/NunitTest-Android/Resources/mipmap-mdpi/ic_launcher_foreground.png
new file mode 100644
index 0000000..a12b157
--- /dev/null
+++ b/NunitTest-Android/Resources/mipmap-mdpi/ic_launcher_foreground.png
Binary files differ
diff --git a/NunitTest-Android/Resources/mipmap-mdpi/ic_launcher_round.png b/NunitTest-Android/Resources/mipmap-mdpi/ic_launcher_round.png
new file mode 100644
index 0000000..8f56909
--- /dev/null
+++ b/NunitTest-Android/Resources/mipmap-mdpi/ic_launcher_round.png
Binary files differ
diff --git a/NunitTest-Android/Resources/mipmap-xhdpi/ic_launcher.png b/NunitTest-Android/Resources/mipmap-xhdpi/ic_launcher.png
new file mode 100644
index 0000000..761cc91
--- /dev/null
+++ b/NunitTest-Android/Resources/mipmap-xhdpi/ic_launcher.png
Binary files differ
diff --git a/NunitTest-Android/Resources/mipmap-xhdpi/ic_launcher_foreground.png b/NunitTest-Android/Resources/mipmap-xhdpi/ic_launcher_foreground.png
new file mode 100644
index 0000000..e7d70a5
--- /dev/null
+++ b/NunitTest-Android/Resources/mipmap-xhdpi/ic_launcher_foreground.png
Binary files differ
diff --git a/NunitTest-Android/Resources/mipmap-xhdpi/ic_launcher_round.png b/NunitTest-Android/Resources/mipmap-xhdpi/ic_launcher_round.png
new file mode 100644
index 0000000..9737d79
--- /dev/null
+++ b/NunitTest-Android/Resources/mipmap-xhdpi/ic_launcher_round.png
Binary files differ
diff --git a/NunitTest-Android/Resources/mipmap-xxhdpi/ic_launcher.png b/NunitTest-Android/Resources/mipmap-xxhdpi/ic_launcher.png
new file mode 100644
index 0000000..9133e31
--- /dev/null
+++ b/NunitTest-Android/Resources/mipmap-xxhdpi/ic_launcher.png
Binary files differ
diff --git a/NunitTest-Android/Resources/mipmap-xxhdpi/ic_launcher_foreground.png b/NunitTest-Android/Resources/mipmap-xxhdpi/ic_launcher_foreground.png
new file mode 100644
index 0000000..73ccaa6
--- /dev/null
+++ b/NunitTest-Android/Resources/mipmap-xxhdpi/ic_launcher_foreground.png
Binary files differ
diff --git a/NunitTest-Android/Resources/mipmap-xxhdpi/ic_launcher_round.png b/NunitTest-Android/Resources/mipmap-xxhdpi/ic_launcher_round.png
new file mode 100644
index 0000000..c3ae5f5
--- /dev/null
+++ b/NunitTest-Android/Resources/mipmap-xxhdpi/ic_launcher_round.png
Binary files differ
diff --git a/NunitTest-Android/Resources/mipmap-xxxhdpi/ic_launcher.png b/NunitTest-Android/Resources/mipmap-xxxhdpi/ic_launcher.png
new file mode 100644
index 0000000..d4fd714
--- /dev/null
+++ b/NunitTest-Android/Resources/mipmap-xxxhdpi/ic_launcher.png
Binary files differ
diff --git a/NunitTest-Android/Resources/mipmap-xxxhdpi/ic_launcher_foreground.png b/NunitTest-Android/Resources/mipmap-xxxhdpi/ic_launcher_foreground.png
new file mode 100644
index 0000000..f6584af
--- /dev/null
+++ b/NunitTest-Android/Resources/mipmap-xxxhdpi/ic_launcher_foreground.png
Binary files differ
diff --git a/NunitTest-Android/Resources/mipmap-xxxhdpi/ic_launcher_round.png b/NunitTest-Android/Resources/mipmap-xxxhdpi/ic_launcher_round.png
new file mode 100644
index 0000000..ef89bd5
--- /dev/null
+++ b/NunitTest-Android/Resources/mipmap-xxxhdpi/ic_launcher_round.png
Binary files differ
diff --git a/NunitTest-Android/Resources/values/colors.xml b/NunitTest-Android/Resources/values/colors.xml
new file mode 100644
index 0000000..ae02883
--- /dev/null
+++ b/NunitTest-Android/Resources/values/colors.xml
@@ -0,0 +1,7 @@
+锘�<?xml version="1.0" encoding="utf-8"?>
+<resources>
+    <color name="colorPrimary">#2c3e50</color>
+    <color name="colorPrimaryDark">#1B3147</color>
+    <color name="colorAccent">#3498db</color>
+</resources>
+
diff --git a/NunitTest-Android/Resources/values/ic_launcher_background.xml b/NunitTest-Android/Resources/values/ic_launcher_background.xml
new file mode 100644
index 0000000..3441c6b
--- /dev/null
+++ b/NunitTest-Android/Resources/values/ic_launcher_background.xml
@@ -0,0 +1,5 @@
+锘�<?xml version="1.0" encoding="utf-8"?>
+<resources>
+    <color name="ic_launcher_background">#2C3E50</color>
+</resources>
+
diff --git a/NunitTest-Android/Resources/values/strings.xml b/NunitTest-Android/Resources/values/strings.xml
new file mode 100644
index 0000000..d92626a
--- /dev/null
+++ b/NunitTest-Android/Resources/values/strings.xml
@@ -0,0 +1,4 @@
+锘�<resources>
+    <string name="app_name">NunitTest_Android</string>
+</resources>
+
diff --git a/NunitTest-Android/TestsSample.cs b/NunitTest-Android/TestsSample.cs
new file mode 100644
index 0000000..2008cb4
--- /dev/null
+++ b/NunitTest-Android/TestsSample.cs
@@ -0,0 +1,44 @@
+锘縰sing System;
+using NUnit.Framework;
+
+namespace NunitTest_Android
+{
+    [TestFixture]
+    public class TestsSample
+    {
+
+        [SetUp]
+        public void Setup() { }
+
+
+        [TearDown]
+        public void Tear() { }
+
+        [Test]
+        public void Pass()
+        {
+            Console.WriteLine("test1");
+            Assert.True(true);
+        }
+
+        [Test]
+        public void Fail()
+        {
+            Assert.False(true);
+        }
+
+        [Test]
+        [Ignore("another time")]
+        public void Ignore()
+        {
+            Assert.True(false);
+        }
+
+        [Test]
+        public void Inconclusive()
+        {
+            Assert.Inconclusive("Inconclusive");
+        }
+    }
+}
+
diff --git a/NunitTest-Ios/ApiPostTests.cs b/NunitTest-Ios/ApiPostTests.cs
new file mode 100644
index 0000000..968fe5c
--- /dev/null
+++ b/NunitTest-Ios/ApiPostTests.cs
@@ -0,0 +1,47 @@
+锘縰sing System;
+using System.Net;
+using System.Net.Http;
+using System.Text;
+using System.Threading.Tasks;
+using Newtonsoft.Json;
+using NUnit.Framework;
+
+namespace NunitTestIos
+{
+    [TestFixture]
+    public class ApiPostTests
+    {
+        private HttpClient client;
+        private const string apiUrl = "https://api.example.com/";
+
+        [SetUp]
+        public void Setup()
+        {
+            client = new HttpClient();
+            client.BaseAddress = new Uri(apiUrl);
+        }
+
+        [Test]
+        public async Task TestPostRequest()
+        {
+            // 鍑嗗 POST 鏁版嵁
+            var postData = new { key = "value" };
+            var json = JsonConvert.SerializeObject(postData);
+            var content = new StringContent(json, Encoding.UTF8, "application/json");
+
+            // 鍙戣捣 POST 璇锋眰
+            HttpResponseMessage response = await client.PostAsync("endpoint", content);
+
+            // 楠岃瘉鐘舵�佺爜
+            Assert.AreEqual(HttpStatusCode.Created, response.StatusCode);
+
+            // 楠岃瘉杩斿洖鐨勬暟鎹垨鍝嶅簲鍐呭
+            string responseBody = await response.Content.ReadAsStringAsync();
+            Assert.IsTrue(!string.IsNullOrEmpty(responseBody));
+            // 鍙互杩涗竴姝ラ獙璇佽繑鍥炵殑鏁版嵁鏄惁绗﹀悎棰勬湡
+        }
+
+    }
+
+}
+
diff --git a/NunitTest-Ios/Entitlements.plist b/NunitTest-Ios/Entitlements.plist
new file mode 100644
index 0000000..9ae5993
--- /dev/null
+++ b/NunitTest-Ios/Entitlements.plist
@@ -0,0 +1,6 @@
+锘�<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+</dict>
+</plist>
diff --git a/NunitTest-Ios/Info.plist b/NunitTest-Ios/Info.plist
new file mode 100644
index 0000000..c1fe8b0
--- /dev/null
+++ b/NunitTest-Ios/Info.plist
@@ -0,0 +1,36 @@
+锘�<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"[]>
+<plist version="1.0">
+	<dict>
+		<key>CFBundleName</key>
+		<string>NunitTest-Ios</string>
+		<key>CFBundleIdentifier</key>
+		<string>com.hdl.onpronuint.NunitTest-Ios</string>
+		<key>CFBundleShortVersionString</key>
+		<string>1.0</string>
+		<key>CFBundleVersion</key>
+		<string>1.0</string>
+		<key>LSRequiresIPhoneOS</key>
+		<true />
+		<key>MinimumOSVersion</key>
+		<string>16.4</string>
+		<key>UIDeviceFamily</key>
+		<array>
+			<integer>1</integer>
+			<integer>2</integer>
+		</array>
+		<key>UISupportedInterfaceOrientations</key>
+		<array>
+			<string>UIInterfaceOrientationPortrait</string>
+			<string>UIInterfaceOrientationLandscapeLeft</string>
+			<string>UIInterfaceOrientationLandscapeRight</string>
+		</array>
+		<key>UILaunchStoryboardName</key>
+		<string>LaunchScreen</string>
+		<key>NSAppTransportSecurity</key>
+		<dict>
+			<key>NSAllowsArbitraryLoads</key>
+			<true />
+		</dict>
+	</dict>
+</plist>
diff --git a/NunitTest-Ios/LaunchScreen.storyboard b/NunitTest-Ios/LaunchScreen.storyboard
new file mode 100644
index 0000000..71e51e7
--- /dev/null
+++ b/NunitTest-Ios/LaunchScreen.storyboard
@@ -0,0 +1,27 @@
+锘�<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="9532" systemVersion="15D21" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" useTraitCollections="YES" initialViewController="01J-lp-oVM">
+    <dependencies>
+        <deployment identifier="iOS"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="9530"/>
+    </dependencies>
+    <scenes>
+        <!--View Controller-->
+        <scene sceneID="EHf-IW-A2E">
+            <objects>
+                <viewController id="01J-lp-oVM" sceneMemberID="viewController">
+                    <layoutGuides>
+                        <viewControllerLayoutGuide type="top" id="Llm-lL-Icb"/>
+                        <viewControllerLayoutGuide type="bottom" id="xb3-aO-Qok"/>
+                    </layoutGuides>
+                    <view key="view" contentMode="scaleToFill" id="Ze5-6b-2t3">
+                        <rect key="frame" x="0.0" y="0.0" width="600" height="600"/>
+                        <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+                        <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
+                    </view>
+                </viewController>
+                <placeholder placeholderIdentifier="IBFirstResponder" id="iYj-Kq-Ea1" userLabel="First Responder" sceneMemberID="firstResponder"/>
+            </objects>
+            <point key="canvasLocation" x="53" y="375"/>
+        </scene>
+    </scenes>
+</document>
diff --git a/NunitTest-Ios/Main.cs b/NunitTest-Ios/Main.cs
new file mode 100644
index 0000000..f617f35
--- /dev/null
+++ b/NunitTest-Ios/Main.cs
@@ -0,0 +1,20 @@
+锘縰sing System;
+using System.Linq;
+using System.Collections.Generic;
+
+using Foundation;
+using UIKit;
+
+namespace NunitTestIos
+{
+	public class Application
+	{
+		// This is the main entry point of the application.
+		static void Main (string[] args)
+		{
+			// if you want to use a different Application Delegate class from "UnitTestAppDelegate"
+			// you can specify it here.
+			UIApplication.Main (args, null, "UnitTestAppDelegate");
+		}
+	}
+}
diff --git a/NunitTest-Ios/NunitTest-Ios.csproj b/NunitTest-Ios/NunitTest-Ios.csproj
new file mode 100644
index 0000000..a2d0a57
--- /dev/null
+++ b/NunitTest-Ios/NunitTest-Ios.csproj
@@ -0,0 +1,113 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <Import Project="..\packages\NUnit.4.0.1\build\NUnit.props" Condition="Exists('..\packages\NUnit.4.0.1\build\NUnit.props')" />
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">iPhoneSimulator</Platform>
+    <ProjectGuid>{C70A6AA7-2FBA-4A37-9132-AD49BD037899}</ProjectGuid>
+    <ProjectTypeGuids>{FEACFBD2-3405-455C-9665-78FE426C6842};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
+    <OutputType>Exe</OutputType>
+    <RootNamespace>NunitTestIos</RootNamespace>
+    <AssemblyName>NunitTest-Ios</AssemblyName>
+    <IPhoneResourcePrefix>Resources</IPhoneResourcePrefix>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|iPhoneSimulator' ">
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>bin\iPhoneSimulator\Debug</OutputPath>
+    <DefineConstants>DEBUG;</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <CreatePackage>false</CreatePackage>
+    <CodesignKey>iPhone Developer</CodesignKey>
+    <MtouchDebug>true</MtouchDebug>
+    <MtouchNoSymbolStrip>true</MtouchNoSymbolStrip>
+    <MtouchFastDev>true</MtouchFastDev>
+    <IOSDebuggerPort>46534</IOSDebuggerPort>
+    <MtouchLink>None</MtouchLink>
+    <MtouchArch>x86_64</MtouchArch>
+    <MtouchHttpClientHandler>NSUrlSessionHandler</MtouchHttpClientHandler>
+    <DeviceSpecificBuild>false</DeviceSpecificBuild>
+    <_BundlerDebug>false</_BundlerDebug>
+    <MtouchVerbosity></MtouchVerbosity>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|iPhone' ">
+    <DebugType>pdbonly</DebugType>
+    <Optimize>true</Optimize>
+    <OutputPath>bin\iPhone\Release</OutputPath>
+    <DefineConstants></DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <CreatePackage>false</CreatePackage>
+    <CodesignKey>iPhone Developer</CodesignKey>
+    <MtouchUseLlvm>true</MtouchUseLlvm>
+    <MtouchFloat32>true</MtouchFloat32>
+    <CodesignEntitlements>Entitlements.plist</CodesignEntitlements>
+    <MtouchArch>ARM64</MtouchArch>
+    <MtouchHttpClientHandler>NSUrlSessionHandler</MtouchHttpClientHandler>
+    <MtouchVerbosity></MtouchVerbosity>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|iPhoneSimulator' ">
+    <DebugType>pdbonly</DebugType>
+    <Optimize>true</Optimize>
+    <OutputPath>bin\iPhoneSimulator\Release</OutputPath>
+    <DefineConstants></DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <CreatePackage>false</CreatePackage>
+    <CodesignKey>iPhone Developer</CodesignKey>
+    <MtouchNoSymbolStrip>true</MtouchNoSymbolStrip>
+    <MtouchLink>None</MtouchLink>
+    <MtouchArch>x86_64</MtouchArch>
+    <MtouchHttpClientHandler>NSUrlSessionHandler</MtouchHttpClientHandler>
+    <MtouchVerbosity></MtouchVerbosity>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|iPhone' ">
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>bin\iPhone\Debug</OutputPath>
+    <DefineConstants>DEBUG;</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <CreatePackage>false</CreatePackage>
+    <CodesignKey>iPhone Developer</CodesignKey>
+    <DeviceSpecificBuild>true</DeviceSpecificBuild>
+    <MtouchDebug>true</MtouchDebug>
+    <MtouchNoSymbolStrip>true</MtouchNoSymbolStrip>
+    <MtouchFastDev>true</MtouchFastDev>
+    <MtouchFloat32>true</MtouchFloat32>
+    <CodesignEntitlements>Entitlements.plist</CodesignEntitlements>
+    <IOSDebuggerPort>46534</IOSDebuggerPort>
+    <MtouchArch>ARM64</MtouchArch>
+    <MtouchHttpClientHandler>NSUrlSessionHandler</MtouchHttpClientHandler>
+    <_BundlerDebug>false</_BundlerDebug>
+    <MtouchVerbosity></MtouchVerbosity>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="System" />
+    <Reference Include="System.Xml" />
+    <Reference Include="System.Core" />
+    <Reference Include="Xamarin.iOS" />
+    <Reference Include="MonoTouch.NUnitLite" />
+    <Reference Include="System.Net.Http" />
+    <Reference Include="Newtonsoft.Json">
+      <HintPath>..\packages\Newtonsoft.Json.13.0.3\lib\netstandard2.0\Newtonsoft.Json.dll</HintPath>
+    </Reference>
+  </ItemGroup>
+  <ItemGroup>
+    <InterfaceDefinition Include="LaunchScreen.storyboard" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="Info.plist" />
+    <None Include="Entitlements.plist" />
+    <None Include="packages.config" />
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="Main.cs" />
+    <Compile Include="UnitTestAppDelegate.cs" />
+    <Compile Include="ApiPostTests.cs" />
+  </ItemGroup>
+  <Import Project="$(MSBuildExtensionsPath)\Xamarin\iOS\Xamarin.iOS.CSharp.targets" />
+</Project>
\ No newline at end of file
diff --git a/NunitTest-Ios/UnitTestAppDelegate.cs b/NunitTest-Ios/UnitTestAppDelegate.cs
new file mode 100644
index 0000000..9ed5895
--- /dev/null
+++ b/NunitTest-Ios/UnitTestAppDelegate.cs
@@ -0,0 +1,46 @@
+锘縰sing System;
+using System.Linq;
+using System.Collections.Generic;
+
+using Foundation;
+using UIKit;
+using MonoTouch.NUnit.UI;
+
+namespace NunitTestIos
+{
+	// The UIApplicationDelegate for the application. This class is responsible for launching the 
+	// User Interface of the application, as well as listening (and optionally responding) to 
+	// application events from iOS.
+	[Register ("UnitTestAppDelegate")]
+	public partial class UnitTestAppDelegate : UIApplicationDelegate
+	{
+		// class-level declarations
+		UIWindow window;
+		TouchRunner runner;
+
+		//
+		// This method is invoked when the application has loaded and is ready to run. In this 
+		// method you should instantiate the window, load the UI into it and then make the window
+		// visible.
+		//
+		// You have 17 seconds to return from this method, or iOS will terminate your application.
+		//
+		public override bool FinishedLaunching (UIApplication app, NSDictionary options)
+		{
+			// create a new window instance based on the screen size
+			window = new UIWindow (UIScreen.MainScreen.Bounds);
+			runner = new TouchRunner (window);
+
+			// register every tests included in the main application/assembly
+			runner.Add (System.Reflection.Assembly.GetExecutingAssembly ());
+
+			window.RootViewController = new UINavigationController (runner.GetViewController ());
+			
+			// make the window visible
+			window.MakeKeyAndVisible ();
+			
+			return true;
+		}
+	}
+}
+
diff --git a/NunitTest-Ios/packages.config b/NunitTest-Ios/packages.config
new file mode 100644
index 0000000..1cd9b6f
--- /dev/null
+++ b/NunitTest-Ios/packages.config
@@ -0,0 +1,6 @@
+锘�<?xml version="1.0" encoding="utf-8"?>
+<packages>
+  <package id="Newtonsoft.Json" version="13.0.3" targetFramework="xamarinios10" />
+  <package id="NUnit" version="4.0.1" targetFramework="xamarinios10" />
+  <package id="System.Net.Http" version="4.3.4" targetFramework="xamarinios10" />
+</packages>
\ No newline at end of file

--
Gitblit v1.8.0