25-6-23/1
This commit is contained in:
@@ -2,28 +2,28 @@ C/C++ Structured Log
|
||||
|
||||
}/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/arm64-v8a/additional_project_files.txtC
|
||||
A
|
||||
?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint Ô¶õ§ö2 ÿÊü××2~
|
||||
?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint ޶´Áù2 ÿÊü××2~
|
||||
|
|
||||
z/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/arm64-v8a/android_gradle_build.json Õ¶õ§ö2ù
|
||||
z/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/arm64-v8a/android_gradle_build.json ޶´Áù2ù
|
||||
˜Ëü××2„
|
||||
<EFBFBD>
|
||||
/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/arm64-v8a/android_gradle_build_mini.json Õ¶õ§ö2» êÐü××2p
|
||||
/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/arm64-v8a/android_gradle_build_mini.json ޶´Áù2» êÐü××2p
|
||||
n
|
||||
l/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/arm64-v8a/build.ninja Õ¶õ§ö2⃠†Åü××2t
|
||||
l/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/arm64-v8a/build.ninja ޶´Áù2⃠†Åü××2t
|
||||
r
|
||||
p/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/arm64-v8a/build.ninja.txt Õ¶õ§ö2y
|
||||
p/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/arm64-v8a/build.ninja.txt ޶´Áù2y
|
||||
w
|
||||
u/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/arm64-v8a/build_file_index.txt Õ¶õ§ö2
|
||||
u/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/arm64-v8a/build_file_index.txt ޶´Áù2
|
||||
^ €<>àÕ×2z
|
||||
x
|
||||
x
|
||||
v/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/arm64-v8a/compile_commands.json ޶´Áù2« „Åü××2~
|
||||
|
|
||||
|
|
||||
z/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/arm64-v8a/compile_commands.json.bin ޶´Áù2 Æ „Åü××2†
|
||||
ƒ
|
||||
ƒ
|
||||
€/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/arm64-v8a/metadata_generation_command.txt ޶´Áù2
|
||||
Š €<>àÕ×2w
|
||||
u
|
||||
u
|
||||
s/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/arm64-v8a/prefab_config.json ޶´Áù2
|
||||
( €<>àÕ×2|
|
||||
( €<>àÕ×2|
|
||||
z
|
||||
x/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/arm64-v8a/symbol_folder_index.txt Õ¶õ§ö2
|
||||
x/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/arm64-v8a/symbol_folder_index.txt ޶´Áù2
|
||||
@@ -2,27 +2,27 @@ C/C++ Structured Log
|
||||
<EFBFBD>
|
||||
/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/armeabi-v7a/additional_project_files.txtC
|
||||
A
|
||||
?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint ®·õ§ö2 éòü××2€
|
||||
?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint Œ·´Áù2 éòü××2€
|
||||
~
|
||||
|/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/armeabi-v7a/android_gradle_build.json ®·õ§ö2<18> ïòü××2‡
|
||||
|/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/armeabi-v7a/android_gradle_build.json Œ·´Áù2<18> ïòü××2‡
|
||||
„
|
||||
<EFBFBD>/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/armeabi-v7a/android_gradle_build_mini.json ®·õ§ö2Ã ùòü××2r
|
||||
<EFBFBD>/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/armeabi-v7a/android_gradle_build_mini.json Œ·´Áù2à ùòü××2r
|
||||
p
|
||||
n/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/armeabi-v7a/build.ninja ®·õ§ö2¨„ ¯òü××2v
|
||||
n/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/armeabi-v7a/build.ninja Œ·´Áù2¨„ ¯òü××2v
|
||||
t
|
||||
r/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/armeabi-v7a/build.ninja.txt ®·õ§ö2{
|
||||
r/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/armeabi-v7a/build.ninja.txt Œ·´Áù2{
|
||||
y
|
||||
w/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/armeabi-v7a/build_file_index.txt ®·õ§ö2
|
||||
w/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/armeabi-v7a/build_file_index.txt Œ·´Áù2
|
||||
^ “¤àÕ×2|
|
||||
z
|
||||
z
|
||||
x/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/armeabi-v7a/compile_commands.json Œ·´Áù2Æ ®òü××2€
|
||||
~
|
||||
~
|
||||
|/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/armeabi-v7a/compile_commands.json.bin Œ·´Áù2 ï ®òü××2ˆ
|
||||
…
|
||||
…
|
||||
‚/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/armeabi-v7a/metadata_generation_command.txt <08>·´Áù2
|
||||
” “¤àÕ×2y
|
||||
w
|
||||
w
|
||||
u/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/armeabi-v7a/prefab_config.json <08>·´Áù2
|
||||
( “¤àÕ×2~
|
||||
( “¤àÕ×2~
|
||||
|
|
||||
z/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/armeabi-v7a/symbol_folder_index.txt ®·õ§ö2
|
||||
z/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/armeabi-v7a/symbol_folder_index.txt <EFBFBD>·´Áù2
|
||||
@@ -2,28 +2,28 @@ C/C++ Structured Log{
|
||||
y
|
||||
w/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/x86/additional_project_files.txtC
|
||||
A
|
||||
?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint É·õ§ö2 þÿü××2x
|
||||
?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint ¢·´Áù2 þÿü××2x
|
||||
v
|
||||
t/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/x86/android_gradle_build.json É·õ§ö2á
|
||||
t/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/x86/android_gradle_build.json ¢·´Áù2á
|
||||
‚€ý××2}
|
||||
{
|
||||
y/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/x86/android_gradle_build_mini.json É·õ§ö2£ †€ý××2j
|
||||
y/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/x86/android_gradle_build_mini.json ¢·´Áù2£ †€ý××2j
|
||||
h
|
||||
f/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/x86/build.ninja É·õ§ö2²ƒ Üÿü××2n
|
||||
f/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/x86/build.ninja ¢·´Áù2²ƒ Üÿü××2n
|
||||
l
|
||||
j/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/x86/build.ninja.txt É·õ§ö2s
|
||||
j/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/x86/build.ninja.txt ¢·´Áù2s
|
||||
q
|
||||
o/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/x86/build_file_index.txt É·õ§ö2
|
||||
o/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/x86/build_file_index.txt ¢·´Áù2
|
||||
^ ªÕàÕ×2t
|
||||
r
|
||||
r
|
||||
p/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/x86/compile_commands.json ¢·´Áù2± Ûÿü××2x
|
||||
v
|
||||
v
|
||||
t/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/x86/compile_commands.json.bin ¢·´Áù2 Ó Ûÿü××2~
|
||||
|
|
||||
|
|
||||
z/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/x86/metadata_generation_command.txt ¢·´Áù2
|
||||
ì ©ÕàÕ×2q
|
||||
o
|
||||
o
|
||||
m/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/x86/prefab_config.json ¢·´Áù2
|
||||
( ©ÕàÕ×2v
|
||||
( ©ÕàÕ×2v
|
||||
t
|
||||
r/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/x86/symbol_folder_index.txt É·õ§ö2
|
||||
r/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/x86/symbol_folder_index.txt ¢·´Áù2
|
||||
@@ -2,28 +2,28 @@ C/C++ Structured Log~
|
||||
|
|
||||
z/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/x86_64/additional_project_files.txtC
|
||||
A
|
||||
?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint ß·õ§ö2 ûŠý××2{
|
||||
?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint ··´Áù2 ûŠý××2{
|
||||
y
|
||||
w/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/x86_64/android_gradle_build.json ß·õ§ö2í
|
||||
w/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/x86_64/android_gradle_build.json ··´Áù2í
|
||||
ýŠý××2€
|
||||
~
|
||||
|/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/x86_64/android_gradle_build_mini.json ß·õ§ö2¯ €‹ý××2m
|
||||
|/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/x86_64/android_gradle_build_mini.json ··´Áù2¯ €‹ý××2m
|
||||
k
|
||||
i/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/x86_64/build.ninja ß·õ§ö2¼ƒ çŠý××2q
|
||||
i/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/x86_64/build.ninja ··´Áù2¼ƒ çŠý××2q
|
||||
o
|
||||
m/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/x86_64/build.ninja.txt ß·õ§ö2v
|
||||
m/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/x86_64/build.ninja.txt ··´Áù2v
|
||||
t
|
||||
r/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/x86_64/build_file_index.txt ß·õ§ö2
|
||||
r/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/x86_64/build_file_index.txt ··´Áù2
|
||||
^ ŒààÕ×2w
|
||||
u
|
||||
u
|
||||
s/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/x86_64/compile_commands.json ··´Áù2§ çŠý××2{
|
||||
y
|
||||
y
|
||||
w/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/x86_64/compile_commands.json.bin ··´Áù2  çŠý××2<C397>
|
||||
|
||||
|
||||
}/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/x86_64/metadata_generation_command.txt ··´Áù2
|
||||
û ŒààÕ×2t
|
||||
r
|
||||
r
|
||||
p/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/x86_64/prefab_config.json ··´Áù2
|
||||
( ŒààÕ×2y
|
||||
( ŒààÕ×2y
|
||||
w
|
||||
u/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/x86_64/symbol_folder_index.txt ß·õ§ö2
|
||||
u/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/x86_64/symbol_folder_index.txt ··´Áù2
|
||||
@@ -24,34 +24,30 @@
|
||||
<uses-permission android:name="android.permission.FOREGROUND_SERVICE_SPECIAL_USE" />
|
||||
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
|
||||
<uses-permission android:name="android.permission.SCHEDULE_EXACT_ALARM" />
|
||||
<uses-feature android:name="android.hardware.camera" />
|
||||
<uses-feature android:name="android.hardware.camera.autofocus" />
|
||||
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
|
||||
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
|
||||
<uses-permission android:name="android.permission.QUICKBOOT_POWERON" />
|
||||
<uses-permission android:name="com.htc.intent.action.QUICKBOOT_POWERON" />
|
||||
|
||||
<uses-feature android:name="android.hardware.camera" />
|
||||
<uses-feature android:name="android.hardware.camera.autofocus" />
|
||||
|
||||
<application
|
||||
android:allowBackup="true"
|
||||
android:icon="@mipmap/launcher_icon"
|
||||
android:label="Tripz Driver"
|
||||
android:theme="@style/LaunchTheme">
|
||||
<service
|
||||
android:name=".MyFirebaseMessagingService"
|
||||
android:exported="false"></service>
|
||||
|
||||
<activity
|
||||
android:name=".MainActivity"
|
||||
android:configChanges="orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode"
|
||||
android:configChanges="orientation|keyboardHidden|screenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode"
|
||||
android:exported="true"
|
||||
android:hardwareAccelerated="true"
|
||||
android:launchMode="singleTask"
|
||||
android:theme="@style/LaunchTheme"
|
||||
android:windowSoftInputMode="adjustResize">
|
||||
<meta-data
|
||||
android:name="io.flutter.embedding.android.NormalTheme"
|
||||
<meta-data android:name="io.flutter.embedding.android.NormalTheme"
|
||||
android:resource="@style/NormalTheme" />
|
||||
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.MAIN" />
|
||||
<category android:name="android.intent.category.LAUNCHER" />
|
||||
@@ -62,85 +58,50 @@
|
||||
android:name="com.yalantis.ucrop.UCropActivity"
|
||||
android:screenOrientation="portrait"
|
||||
android:theme="@style/Theme.AppCompat.Light.NoActionBar" />
|
||||
<meta-data
|
||||
android:name="com.google.android.geo.API_KEY"
|
||||
android:value="@string/api_key" />
|
||||
<meta-data
|
||||
android:name="com.google.firebase.messaging.default_notification_channel_id"
|
||||
|
||||
<meta-data android:name="com.google.android.geo.API_KEY" android:value="@string/api_key" />
|
||||
<meta-data android:name="com.google.firebase.messaging.default_notification_channel_id"
|
||||
android:value="@string/default_notification_channel_id" />
|
||||
<meta-data
|
||||
android:name="flutterEmbedding"
|
||||
android:value="2" />
|
||||
<meta-data android:name="flutterEmbedding" android:value="2" />
|
||||
|
||||
<service
|
||||
android:name=".LocationUpdatesService"
|
||||
android:exported="false"
|
||||
<service android:name=".MyFirebaseMessagingService" android:exported="false" />
|
||||
<service android:name=".LocationUpdatesService" android:exported="false"
|
||||
android:foregroundServiceType="location" />
|
||||
|
||||
|
||||
<!-- <service
|
||||
android:name=".java.MyFirebaseMessagingService"
|
||||
android:exported="false">
|
||||
<intent-filter>
|
||||
<action android:name="com.google.firebase.MESSAGING_EVENT" />
|
||||
</intent-filter>
|
||||
</service> -->
|
||||
<service
|
||||
android:name="com.google.firebase.messaging.FirebaseMessagingService"
|
||||
android:exported="false"
|
||||
tools:replace="android:exported">
|
||||
<service android:name="com.google.firebase.messaging.FirebaseMessagingService"
|
||||
android:exported="false" tools:replace="android:exported">
|
||||
<intent-filter>
|
||||
<action android:name="com.google.firebase.MESSAGING_EVENT" />
|
||||
</intent-filter>
|
||||
</service>
|
||||
<service
|
||||
android:name="com.phan_tech.flutter_overlay_apps.OverlayService"
|
||||
<service android:name="com.phan_tech.flutter_overlay_apps.OverlayService"
|
||||
android:exported="false" />
|
||||
<service
|
||||
android:name="flutter.overlay.window.flutter_overlay_window.OverlayService"
|
||||
<service android:name="flutter.overlay.window.flutter_overlay_window.OverlayService"
|
||||
android:foregroundServiceType="specialUse">
|
||||
<property
|
||||
android:name="android.app.PROPERTY_SPECIAL_USE_FGS_SUBTYPE"
|
||||
<property android:name="android.app.PROPERTY_SPECIAL_USE_FGS_SUBTYPE"
|
||||
android:value="explanation_for_special_use" />
|
||||
</service>
|
||||
|
||||
<receiver
|
||||
android:name="com.google.firebase.iid.FirebaseInstanceIdReceiver"
|
||||
android:exported="true"
|
||||
android:permission="com.google.android.c2dm.permission.SEND">
|
||||
<receiver android:name="com.google.firebase.iid.FirebaseInstanceIdReceiver"
|
||||
android:exported="true" android:permission="com.google.android.c2dm.permission.SEND">
|
||||
<intent-filter>
|
||||
<action android:name="com.google.android.c2dm.intent.RECEIVE" />
|
||||
|
||||
<category android:name="com.sefer_driver" />
|
||||
</intent-filter>
|
||||
</receiver>
|
||||
|
||||
<service
|
||||
android:name="com.dsaved.bubblehead.bubble.BubbleHeadService"
|
||||
android:enabled="true"
|
||||
<service android:name="com.dsaved.bubblehead.bubble.BubbleHeadService" android:enabled="true"
|
||||
android:exported="false">
|
||||
<intent-filter>
|
||||
<action android:name="intent.bring.app.to.foreground" />
|
||||
|
||||
<category android:name="android.intent.category.DEFAULT" />
|
||||
</intent-filter>
|
||||
</service>
|
||||
|
||||
<!-- <receiver
|
||||
<receiver android:name="com.dexterous.flutterlocalnotifications.ScheduledNotificationReceiver"
|
||||
android:exported="false" />
|
||||
<receiver
|
||||
android:name="com.dexterous.flutterlocalnotifications.ScheduledNotificationBootReceiver"
|
||||
android:exported="true">
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.BOOT_COMPLETED" />
|
||||
<action android:name="android.intent.action.MY_PACKAGE_REPLACED" />
|
||||
<action android:name="android.intent.action.QUICKBOOT_POWERON" />
|
||||
<action android:name="com.htc.intent.action.QUICKBOOT_POWERON" />
|
||||
</intent-filter>
|
||||
</receiver> -->
|
||||
|
||||
<receiver android:exported="false"
|
||||
android:name="com.dexterous.flutterlocalnotifications.ScheduledNotificationReceiver" />
|
||||
<receiver android:exported="false"
|
||||
android:name="com.dexterous.flutterlocalnotifications.ScheduledNotificationBootReceiver">
|
||||
android:exported="false">
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.BOOT_COMPLETED" />
|
||||
<action android:name="android.intent.action.MY_PACKAGE_REPLACED" />
|
||||
@@ -148,9 +109,8 @@
|
||||
<action android:name="com.htc.intent.action.QUICKBOOT_POWERON" />
|
||||
</intent-filter>
|
||||
</receiver>
|
||||
<receiver
|
||||
android:name=".YourBroadcastReceiver"
|
||||
android:exported="false" />
|
||||
</application>
|
||||
|
||||
<receiver android:name=".YourBroadcastReceiver" android:exported="false" />
|
||||
|
||||
</application>
|
||||
</manifest>
|
||||
@@ -1,6 +1,7 @@
|
||||
package com.sefer_driver
|
||||
|
||||
import android.app.AlertDialog
|
||||
import android.content.Intent
|
||||
import android.os.Bundle
|
||||
import android.util.Log
|
||||
import android.widget.LinearLayout
|
||||
@@ -9,137 +10,129 @@ import android.widget.TextView
|
||||
import androidx.core.view.setPadding
|
||||
import com.scottyab.rootbeer.RootBeer
|
||||
import io.flutter.embedding.android.FlutterFragmentActivity
|
||||
import io.flutter.embedding.engine.FlutterEngine
|
||||
import io.flutter.plugin.common.MethodChannel
|
||||
import java.io.File
|
||||
import java.util.Timer
|
||||
import kotlin.concurrent.schedule
|
||||
import io.flutter.embedding.engine.FlutterEngine // Import FlutterEngine
|
||||
import io.flutter.plugin.common.MethodChannel // Import MethodChannel
|
||||
import io.flutter.plugin.common.MethodCall // Import MethodCall
|
||||
import io.flutter.plugin.common.MethodChannel.Result // Import Result
|
||||
|
||||
class MainActivity : FlutterFragmentActivity() {
|
||||
|
||||
private lateinit var channel: MethodChannel // Declare a MethodChannel variable
|
||||
private val SECURITY_CHANNEL = "com.sefer_driver/security"
|
||||
private val APP_CONTROL_CHANNEL = "com.sefer_driver/app_control"
|
||||
|
||||
override fun configureFlutterEngine(flutterEngine: FlutterEngine) {
|
||||
super.configureFlutterEngine(flutterEngine)
|
||||
|
||||
// Initialize the MethodChannel
|
||||
channel = MethodChannel(flutterEngine.dartExecutor.binaryMessenger, "com.sefer_driver/security")
|
||||
// Channel for security checks (isRooted)
|
||||
MethodChannel(flutterEngine.dartExecutor.binaryMessenger, SECURITY_CHANNEL)
|
||||
.setMethodCallHandler { call, result ->
|
||||
when (call.method) {
|
||||
"isNativeRooted" -> result.success(isDeviceCompromised())
|
||||
else -> result.notImplemented()
|
||||
}
|
||||
}
|
||||
|
||||
// Set a MethodCallHandler to handle method calls from Flutter
|
||||
channel.setMethodCallHandler { call, result ->
|
||||
when (call.method) {
|
||||
"isNativeRooted" -> {
|
||||
val isCompromised = isDeviceCompromised()
|
||||
result.success(isCompromised) // Send the result back to Flutter
|
||||
// Channel for app control (bringing to foreground)
|
||||
MethodChannel(flutterEngine.dartExecutor.binaryMessenger, APP_CONTROL_CHANNEL)
|
||||
.setMethodCallHandler { call, result ->
|
||||
when (call.method) {
|
||||
"bringToForeground" -> {
|
||||
Log.d("MainActivity", "Received bringToForeground request")
|
||||
val intent =
|
||||
Intent(this, MainActivity::class.java).apply {
|
||||
action = Intent.ACTION_MAIN
|
||||
addCategory(Intent.CATEGORY_LAUNCHER)
|
||||
addFlags(
|
||||
Intent.FLAG_ACTIVITY_NEW_TASK or
|
||||
Intent.FLAG_ACTIVITY_CLEAR_TOP or
|
||||
Intent.FLAG_ACTIVITY_SINGLE_TOP
|
||||
)
|
||||
}
|
||||
try {
|
||||
startActivity(intent)
|
||||
Log.d(
|
||||
"MainActivity",
|
||||
"App brought to foreground successfully with flags: ${intent.flags}"
|
||||
)
|
||||
result.success(true)
|
||||
} catch (e: Exception) {
|
||||
Log.e(
|
||||
"MainActivity",
|
||||
"Error bringing app to foreground: ${e.message}",
|
||||
e
|
||||
)
|
||||
result.error(
|
||||
"ACTIVITY_START_FAILED",
|
||||
e.message,
|
||||
e.stackTraceToString()
|
||||
)
|
||||
}
|
||||
}
|
||||
else -> result.notImplemented()
|
||||
}
|
||||
}
|
||||
else -> {
|
||||
result.notImplemented() // Handle unknown method calls
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
|
||||
// Perform all checks. The order can matter; you might want to prioritize
|
||||
// the faster checks first.
|
||||
Log.d("MainActivity", "MainActivity onCreate")
|
||||
if (isDeviceCompromised()) {
|
||||
showSecurityWarningDialog()
|
||||
}
|
||||
}
|
||||
|
||||
override fun onNewIntent(intent: Intent) {
|
||||
super.onNewIntent(intent)
|
||||
setIntent(intent)
|
||||
Log.d("MainActivity", "Received new intent: ${intent.action}, flags: ${intent.flags}")
|
||||
}
|
||||
|
||||
private fun isDeviceCompromised(): Boolean {
|
||||
return try {
|
||||
nativeRootCheck() || rootBeerCheck() //|| !safetyNetCheck()
|
||||
val isRootedByRootBeer = RootBeer(this).isRooted
|
||||
Log.d("MainActivity", "Root check result: $isRootedByRootBeer")
|
||||
isRootedByRootBeer
|
||||
} catch (e: Exception) {
|
||||
Log.e("DEBUG", "Error during security checks: ${e.message}", e)
|
||||
true // Consider the device compromised on error
|
||||
Log.e("MainActivity", "Security check error: ${e.message}", e)
|
||||
true // Fail-safe: assume compromised if check fails
|
||||
}
|
||||
}
|
||||
|
||||
private fun nativeRootCheck(): Boolean {
|
||||
Log.d("DEBUG", "Starting native root detection...")
|
||||
return try {
|
||||
val isNativeRooted = RootDetection.isNativeRooted()
|
||||
Log.d("DEBUG", "Native root detection result: $isNativeRooted")
|
||||
isNativeRooted
|
||||
} catch (e: Exception) {
|
||||
Log.e("DEBUG", "Error in native root detection: ${e.message}", e)
|
||||
true // Consider rooted on exception
|
||||
}
|
||||
}
|
||||
|
||||
private fun rootBeerCheck(): Boolean {
|
||||
Log.d("DEBUG", "Starting RootBeer root detection...")
|
||||
val rootBeer = RootBeer(this)
|
||||
val isRooted = rootBeer.isRooted
|
||||
Log.d("DEBUG", "RootBeer detection result: $isRooted")
|
||||
return isRooted
|
||||
}
|
||||
|
||||
private fun safetyNetCheck(): Boolean {
|
||||
Log.d("DEBUG", "Starting SafetyNet check...")
|
||||
var isSafe = false // Initialize a variable to store result
|
||||
val semaphore = java.util.concurrent.Semaphore(0) // Create a semaphore
|
||||
|
||||
SafetyNetCheck.checkSafetyNet(this, getString(R.string.api_key_safety)) { result ->
|
||||
isSafe = result
|
||||
Log.d("DEBUG", "SafetyNet check result: $isSafe")
|
||||
semaphore.release() // Release the semaphore when the callback is executed
|
||||
}
|
||||
|
||||
try {
|
||||
semaphore.acquire() // Wait for the callback to complete
|
||||
} catch (e: InterruptedException) {
|
||||
Log.e("DEBUG", "Interrupted while waiting for SafetyNet check", e)
|
||||
return false // Or handle as appropriate for your app
|
||||
}
|
||||
return isSafe
|
||||
}
|
||||
|
||||
private fun showSecurityWarningDialog() {
|
||||
var secondsRemaining = 10 // Start at 10 seconds
|
||||
|
||||
// Create views programmatically
|
||||
val progressBar = ProgressBar(this, null, android.R.attr.progressBarStyleHorizontal)
|
||||
progressBar.max = 10 // Set max to 10 for 10 seconds
|
||||
progressBar.progress = 10 // Start full
|
||||
val textView = TextView(this)
|
||||
textView.text = getString(R.string.security_warning_message) // Your message
|
||||
textView.textAlignment = TextView.TEXT_ALIGNMENT_CENTER
|
||||
|
||||
val layout = LinearLayout(this)
|
||||
layout.orientation = LinearLayout.VERTICAL
|
||||
layout.setPadding(48)
|
||||
layout.addView(textView)
|
||||
layout.addView(progressBar)
|
||||
|
||||
var secondsRemaining = 10
|
||||
val progressBar =
|
||||
ProgressBar(this, null, android.R.attr.progressBarStyleHorizontal).apply {
|
||||
max = 10
|
||||
progress = 10
|
||||
}
|
||||
val textView =
|
||||
TextView(this).apply {
|
||||
text = getString(R.string.security_warning_message)
|
||||
textAlignment = TextView.TEXT_ALIGNMENT_CENTER
|
||||
}
|
||||
val layout =
|
||||
LinearLayout(this).apply {
|
||||
orientation = LinearLayout.VERTICAL
|
||||
setPadding(48)
|
||||
addView(textView)
|
||||
addView(progressBar)
|
||||
}
|
||||
val dialog =
|
||||
AlertDialog.Builder(this)
|
||||
.setTitle(getString(R.string.security_warning_title)) // Your title
|
||||
.setView(layout) // Set the custom layout
|
||||
.setCancelable(
|
||||
false
|
||||
) // Prevent dismissing by tapping outside or back button
|
||||
.create()
|
||||
|
||||
AlertDialog.Builder(this)
|
||||
.setTitle(getString(R.string.security_warning_title))
|
||||
.setView(layout)
|
||||
.setCancelable(false)
|
||||
.create()
|
||||
dialog.show()
|
||||
|
||||
// Use a Timer to update the progress bar and countdown
|
||||
val timer = Timer()
|
||||
timer.schedule(0, 1000) { // Update every 1000ms (1 second)
|
||||
timer.schedule(0, 1000) {
|
||||
secondsRemaining--
|
||||
runOnUiThread { // Update UI on the main thread
|
||||
progressBar.progress =
|
||||
secondsRemaining // Set the progress bar to show remaining seconds
|
||||
runOnUiThread {
|
||||
progressBar.progress = secondsRemaining
|
||||
if (secondsRemaining <= 0) {
|
||||
timer.cancel() // Stop the timer
|
||||
dialog.dismiss() // Dismiss the dialog
|
||||
clearAppDataAndExit() // Clear data and exit
|
||||
timer.cancel()
|
||||
dialog.dismiss()
|
||||
clearAppDataAndExit()
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -147,56 +140,35 @@ class MainActivity : FlutterFragmentActivity() {
|
||||
|
||||
private fun clearAppDataAndExit() {
|
||||
try {
|
||||
val packageName = applicationContext.packageName
|
||||
val runtime = Runtime.getRuntime()
|
||||
runtime.exec("pm clear $packageName") // Clear app data
|
||||
Runtime.getRuntime().exec("pm clear $packageName")
|
||||
Log.d("MainActivity", "Cleared app data via package manager")
|
||||
} catch (e: Exception) {
|
||||
Log.e("MainActivity", "Error clearing app data: ${e.message}", e)
|
||||
clearCache()
|
||||
clearAppData()
|
||||
}
|
||||
|
||||
finishAffinity() // Finish all activities from this app
|
||||
System.exit(0) // Terminate the app's process
|
||||
finishAffinity()
|
||||
System.exit(0)
|
||||
}
|
||||
|
||||
private fun clearCache() {
|
||||
try {
|
||||
val cacheDir = cacheDir
|
||||
if (cacheDir != null && cacheDir.isDirectory) {
|
||||
deleteDir(cacheDir)
|
||||
}
|
||||
val externalCacheDir = externalCacheDir
|
||||
if (externalCacheDir != null && externalCacheDir.isDirectory) {
|
||||
deleteDir(externalCacheDir)
|
||||
}
|
||||
} catch (e: Exception) {
|
||||
Log.e("DEBUG", "Error clearing cache: ${e.message}", e)
|
||||
}
|
||||
deleteDir(cacheDir)
|
||||
deleteDir(externalCacheDir)
|
||||
Log.d("MainActivity", "Cleared cache directories")
|
||||
}
|
||||
|
||||
private fun clearAppData() {
|
||||
try {
|
||||
val dataDir = applicationContext.dataDir
|
||||
if (dataDir != null && dataDir.isDirectory) {
|
||||
deleteDir(dataDir)
|
||||
}
|
||||
} catch (e: Exception) {
|
||||
Log.e("DEBUG", "Error clearing app data: ${e.message}", e)
|
||||
}
|
||||
// Be careful with this, it deletes all app data.
|
||||
// deleteDir(applicationContext.dataDir)
|
||||
Log.d("MainActivity", "App data clearing skipped (commented out)")
|
||||
}
|
||||
|
||||
private fun deleteDir(dir: File?): Boolean {
|
||||
if (dir != null && dir.isDirectory) {
|
||||
val children = dir.list()
|
||||
if (children != null) {
|
||||
for (child in children) {
|
||||
val success = deleteDir(File(dir, child))
|
||||
if (!success) {
|
||||
return false
|
||||
}
|
||||
}
|
||||
}
|
||||
dir.list()?.forEach { deleteDir(File(dir, it)) }
|
||||
}
|
||||
return dir?.delete() ?: false
|
||||
val deleted = dir?.delete() ?: false
|
||||
Log.d("MainActivity", "Deleted directory ${dir?.path}: $deleted")
|
||||
return deleted
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user