25-3/12/1
This commit is contained in:
+1
-1
@@ -17,7 +17,7 @@ migrate_working_dir/
|
|||||||
*.ipr
|
*.ipr
|
||||||
*.iws
|
*.iws
|
||||||
.idea/
|
.idea/
|
||||||
|
.cxx
|
||||||
# The .vscode folder contains launch configuration and tasks you configure in
|
# The .vscode folder contains launch configuration and tasks you configure in
|
||||||
# VS Code which you may wish to be included in version control, so this line
|
# VS Code which you may wish to be included in version control, so this line
|
||||||
# is commented out by default.
|
# is commented out by default.
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ gradle-wrapper.jar
|
|||||||
/gradlew.bat
|
/gradlew.bat
|
||||||
/local.properties
|
/local.properties
|
||||||
GeneratedPluginRegistrant.java
|
GeneratedPluginRegistrant.java
|
||||||
|
/.cxx
|
||||||
|
|
||||||
# Remember to never publicly share your keystore.
|
# Remember to never publicly share your keystore.
|
||||||
# See https://flutter.dev/docs/deployment/android#reference-the-keystore-from-the-app
|
# See https://flutter.dev/docs/deployment/android#reference-the-keystore-from-the-app
|
||||||
|
|||||||
Binary file not shown.
@@ -2,3 +2,9 @@
|
|||||||
0 2548 1741692159093118647 CMakeFiles/native-lib.dir/native-lib.cpp.o efdcdef8a37e462e
|
0 2548 1741692159093118647 CMakeFiles/native-lib.dir/native-lib.cpp.o efdcdef8a37e462e
|
||||||
2552 2768 1741692159310721445 /Users/hamzaaleghwairyeen/development/App/ride 2/build/app/intermediates/cxx/Debug/2c6m2v30/obj/arm64-v8a/libnative-lib.so b017f868109e9254
|
2552 2768 1741692159310721445 /Users/hamzaaleghwairyeen/development/App/ride 2/build/app/intermediates/cxx/Debug/2c6m2v30/obj/arm64-v8a/libnative-lib.so b017f868109e9254
|
||||||
70 986 1741697159421953177 /Users/hamzaaleghwairyeen/development/App/ride 2/build/app/intermediates/cxx/Debug/2c6m2v30/obj/arm64-v8a/libnative-lib.so b017f868109e9254
|
70 986 1741697159421953177 /Users/hamzaaleghwairyeen/development/App/ride 2/build/app/intermediates/cxx/Debug/2c6m2v30/obj/arm64-v8a/libnative-lib.so b017f868109e9254
|
||||||
|
6 1598 1741699635386681829 CMakeFiles/native-lib.dir/native-lib.cpp.o efdcdef8a37e462e
|
||||||
|
1598 2001 1741699635788197885 /Users/hamzaaleghwairyeen/development/App/ride 2/build/app/intermediates/cxx/Debug/2c6m2v30/obj/arm64-v8a/libnative-lib.so b017f868109e9254
|
||||||
|
7 1167 1741700212142952360 CMakeFiles/native-lib.dir/native-lib.cpp.o efdcdef8a37e462e
|
||||||
|
1167 1354 1741700212331088034 /Users/hamzaaleghwairyeen/development/App/ride 2/build/app/intermediates/cxx/Debug/2c6m2v30/obj/arm64-v8a/libnative-lib.so b017f868109e9254
|
||||||
|
6 3241 1741775920614434716 CMakeFiles/native-lib.dir/native-lib.cpp.o efdcdef8a37e462e
|
||||||
|
3241 3938 1741775921311701710 /Users/hamzaaleghwairyeen/development/App/ride 2/build/app/intermediates/cxx/Debug/2c6m2v30/obj/arm64-v8a/libnative-lib.so b017f868109e9254
|
||||||
|
|||||||
Binary file not shown.
@@ -2,28 +2,28 @@ C/C++ Structured Log{
|
|||||||
y
|
y
|
||||||
w/Users/hamzaaleghwairyeen/development/App/ride 2/android/app/.cxx/Debug/2c6m2v30/arm64-v8a/additional_project_files.txtC
|
w/Users/hamzaaleghwairyeen/development/App/ride 2/android/app/.cxx/Debug/2c6m2v30/arm64-v8a/additional_project_files.txtC
|
||||||
A
|
A
|
||||||
?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint í¶‰ªØ2 ²ñħØ2x
|
?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint Ó‹ÕÏØ2 ²ñħØ2x
|
||||||
v
|
v
|
||||||
t/Users/hamzaaleghwairyeen/development/App/ride 2/android/app/.cxx/Debug/2c6m2v30/arm64-v8a/android_gradle_build.json ò¶‰ªØ2á
|
t/Users/hamzaaleghwairyeen/development/App/ride 2/android/app/.cxx/Debug/2c6m2v30/arm64-v8a/android_gradle_build.json Ó‹ÕÏØ2á
|
||||||
ÌñħØ2}
|
ÌñħØ2}
|
||||||
{
|
{
|
||||||
y/Users/hamzaaleghwairyeen/development/App/ride 2/android/app/.cxx/Debug/2c6m2v30/arm64-v8a/android_gradle_build_mini.json ò¶‰ªØ2£ µòħØ2j
|
y/Users/hamzaaleghwairyeen/development/App/ride 2/android/app/.cxx/Debug/2c6m2v30/arm64-v8a/android_gradle_build_mini.json Ó‹ÕÏØ2£ µòħØ2j
|
||||||
h
|
h
|
||||||
f/Users/hamzaaleghwairyeen/development/App/ride 2/android/app/.cxx/Debug/2c6m2v30/arm64-v8a/build.ninja ò¶‰ªØ2£ ’ïħØ2n
|
f/Users/hamzaaleghwairyeen/development/App/ride 2/android/app/.cxx/Debug/2c6m2v30/arm64-v8a/build.ninja Ó‹ÕÏØ2£ ’ïħØ2n
|
||||||
l
|
l
|
||||||
j/Users/hamzaaleghwairyeen/development/App/ride 2/android/app/.cxx/Debug/2c6m2v30/arm64-v8a/build.ninja.txt ò¶‰ªØ2s
|
j/Users/hamzaaleghwairyeen/development/App/ride 2/android/app/.cxx/Debug/2c6m2v30/arm64-v8a/build.ninja.txt Ó‹ÕÏØ2s
|
||||||
q
|
q
|
||||||
o/Users/hamzaaleghwairyeen/development/App/ride 2/android/app/.cxx/Debug/2c6m2v30/arm64-v8a/build_file_index.txt ò¶‰ªØ2␍X ÎòħØ2t
|
o/Users/hamzaaleghwairyeen/development/App/ride 2/android/app/.cxx/Debug/2c6m2v30/arm64-v8a/build_file_index.txt Ó‹ÕÏØ2␍X ÎòħØ2t
|
||||||
r
|
r
|
||||||
p/Users/hamzaaleghwairyeen/development/App/ride 2/android/app/.cxx/Debug/2c6m2v30/arm64-v8a/compile_commands.json ò¶‰ªØ2� ‘ïħØ2x
|
p/Users/hamzaaleghwairyeen/development/App/ride 2/android/app/.cxx/Debug/2c6m2v30/arm64-v8a/compile_commands.json Ó‹ÕÏØ2� ‘ïħØ2x
|
||||||
v
|
v
|
||||||
t/Users/hamzaaleghwairyeen/development/App/ride 2/android/app/.cxx/Debug/2c6m2v30/arm64-v8a/compile_commands.json.bin ò¶‰ªØ2 º ‘ïħØ2~
|
t/Users/hamzaaleghwairyeen/development/App/ride 2/android/app/.cxx/Debug/2c6m2v30/arm64-v8a/compile_commands.json.bin Ó‹ÕÏØ2 º ‘ïħØ2~
|
||||||
|
|
|
|
||||||
z/Users/hamzaaleghwairyeen/development/App/ride 2/android/app/.cxx/Debug/2c6m2v30/arm64-v8a/metadata_generation_command.txt ò¶‰ªØ2
|
z/Users/hamzaaleghwairyeen/development/App/ride 2/android/app/.cxx/Debug/2c6m2v30/arm64-v8a/metadata_generation_command.txt Ó‹ÕÏØ2
|
||||||
ò ÌòħØ2q
|
ò ÌòħØ2q
|
||||||
o
|
o
|
||||||
m/Users/hamzaaleghwairyeen/development/App/ride 2/android/app/.cxx/Debug/2c6m2v30/arm64-v8a/prefab_config.json ò¶‰ªØ2␍( ÌòħØ2v
|
m/Users/hamzaaleghwairyeen/development/App/ride 2/android/app/.cxx/Debug/2c6m2v30/arm64-v8a/prefab_config.json Ó‹ÕÏØ2␍( ÌòħØ2v
|
||||||
t
|
t
|
||||||
r/Users/hamzaaleghwairyeen/development/App/ride 2/android/app/.cxx/Debug/2c6m2v30/arm64-v8a/symbol_folder_index.txt ò¶‰ªØ2␍i ÍòħØ2\
|
r/Users/hamzaaleghwairyeen/development/App/ride 2/android/app/.cxx/Debug/2c6m2v30/arm64-v8a/symbol_folder_index.txt Ó‹ÕÏØ2␍i ÍòħØ2\
|
||||||
Z
|
Z
|
||||||
X/Users/hamzaaleghwairyeen/development/App/ride 2/android/app/src/main/cpp/CMakeLists.txt ò¶‰ªØ2␍Ê øÒ•§Ø2
|
X/Users/hamzaaleghwairyeen/development/App/ride 2/android/app/src/main/cpp/CMakeLists.txt Ó‹ÕÏØ2␍Ê øÒ•§Ø2
|
||||||
Binary file not shown.
@@ -2,3 +2,9 @@
|
|||||||
1 3827 1741692322937201263 CMakeFiles/native-lib.dir/native-lib.cpp.o ce69c2df0da52668
|
1 3827 1741692322937201263 CMakeFiles/native-lib.dir/native-lib.cpp.o ce69c2df0da52668
|
||||||
3831 4442 1741692323587429632 /Users/hamzaaleghwairyeen/development/App/ride 2/build/app/intermediates/cxx/Debug/2c6m2v30/obj/armeabi-v7a/libnative-lib.so cc176b2d17fb8da5
|
3831 4442 1741692323587429632 /Users/hamzaaleghwairyeen/development/App/ride 2/build/app/intermediates/cxx/Debug/2c6m2v30/obj/armeabi-v7a/libnative-lib.so cc176b2d17fb8da5
|
||||||
20 464 1741697160303802723 /Users/hamzaaleghwairyeen/development/App/ride 2/build/app/intermediates/cxx/Debug/2c6m2v30/obj/armeabi-v7a/libnative-lib.so cc176b2d17fb8da5
|
20 464 1741697160303802723 /Users/hamzaaleghwairyeen/development/App/ride 2/build/app/intermediates/cxx/Debug/2c6m2v30/obj/armeabi-v7a/libnative-lib.so cc176b2d17fb8da5
|
||||||
|
5 862 1741699636690484903 CMakeFiles/native-lib.dir/native-lib.cpp.o ce69c2df0da52668
|
||||||
|
863 952 1741699636780820038 /Users/hamzaaleghwairyeen/development/App/ride 2/build/app/intermediates/cxx/Debug/2c6m2v30/obj/armeabi-v7a/libnative-lib.so cc176b2d17fb8da5
|
||||||
|
3 438 1741700212804418842 CMakeFiles/native-lib.dir/native-lib.cpp.o ce69c2df0da52668
|
||||||
|
438 506 1741700212874457710 /Users/hamzaaleghwairyeen/development/App/ride 2/build/app/intermediates/cxx/Debug/2c6m2v30/obj/armeabi-v7a/libnative-lib.so cc176b2d17fb8da5
|
||||||
|
5 1138 1741775923695796658 CMakeFiles/native-lib.dir/native-lib.cpp.o ce69c2df0da52668
|
||||||
|
1138 1250 1741775923808240550 /Users/hamzaaleghwairyeen/development/App/ride 2/build/app/intermediates/cxx/Debug/2c6m2v30/obj/armeabi-v7a/libnative-lib.so cc176b2d17fb8da5
|
||||||
|
|||||||
BIN
Binary file not shown.
@@ -2,28 +2,28 @@ C/C++ Structured Log}
|
|||||||
{
|
{
|
||||||
y/Users/hamzaaleghwairyeen/development/App/ride 2/android/app/.cxx/Debug/2c6m2v30/armeabi-v7a/additional_project_files.txtC
|
y/Users/hamzaaleghwairyeen/development/App/ride 2/android/app/.cxx/Debug/2c6m2v30/armeabi-v7a/additional_project_files.txtC
|
||||||
A
|
A
|
||||||
?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint …¿‰ªØ2 óçΧØ2z
|
?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint �ŒÕÏØ2 óçΧØ2z
|
||||||
x
|
x
|
||||||
v/Users/hamzaaleghwairyeen/development/App/ride 2/android/app/.cxx/Debug/2c6m2v30/armeabi-v7a/android_gradle_build.json Š¿‰ªØ2é
|
v/Users/hamzaaleghwairyeen/development/App/ride 2/android/app/.cxx/Debug/2c6m2v30/armeabi-v7a/android_gradle_build.json �ŒÕÏØ2é
|
||||||
͏뤯2
|
͏뤯2
|
||||||
}
|
}
|
||||||
{/Users/hamzaaleghwairyeen/development/App/ride 2/android/app/.cxx/Debug/2c6m2v30/armeabi-v7a/android_gradle_build_mini.json Š¿‰ªØ2« „éΧØ2l
|
{/Users/hamzaaleghwairyeen/development/App/ride 2/android/app/.cxx/Debug/2c6m2v30/armeabi-v7a/android_gradle_build_mini.json �ŒÕÏØ2« „éΧØ2l
|
||||||
j
|
j
|
||||||
h/Users/hamzaaleghwairyeen/development/App/ride 2/android/app/.cxx/Debug/2c6m2v30/armeabi-v7a/build.ninja Š¿‰ªØ2÷£ ØáΧØ2p
|
h/Users/hamzaaleghwairyeen/development/App/ride 2/android/app/.cxx/Debug/2c6m2v30/armeabi-v7a/build.ninja �ŒÕÏØ2÷£ ØáΧØ2p
|
||||||
n
|
n
|
||||||
l/Users/hamzaaleghwairyeen/development/App/ride 2/android/app/.cxx/Debug/2c6m2v30/armeabi-v7a/build.ninja.txt Š¿‰ªØ2u
|
l/Users/hamzaaleghwairyeen/development/App/ride 2/android/app/.cxx/Debug/2c6m2v30/armeabi-v7a/build.ninja.txt �ŒÕÏØ2u
|
||||||
s
|
s
|
||||||
q/Users/hamzaaleghwairyeen/development/App/ride 2/android/app/.cxx/Debug/2c6m2v30/armeabi-v7a/build_file_index.txt Š¿‰ªØ2␍X ‘éΧØ2v
|
q/Users/hamzaaleghwairyeen/development/App/ride 2/android/app/.cxx/Debug/2c6m2v30/armeabi-v7a/build_file_index.txt �ŒÕÏØ2␍X ‘éΧØ2v
|
||||||
t
|
t
|
||||||
r/Users/hamzaaleghwairyeen/development/App/ride 2/android/app/.cxx/Debug/2c6m2v30/armeabi-v7a/compile_commands.json Š¿‰ªØ2¸ ÖáΧØ2z
|
r/Users/hamzaaleghwairyeen/development/App/ride 2/android/app/.cxx/Debug/2c6m2v30/armeabi-v7a/compile_commands.json �ŒÕÏØ2¸ ÖáΧØ2z
|
||||||
x
|
x
|
||||||
v/Users/hamzaaleghwairyeen/development/App/ride 2/android/app/.cxx/Debug/2c6m2v30/armeabi-v7a/compile_commands.json.bin Š¿‰ªØ2 ã ÖáΧØ2€
|
v/Users/hamzaaleghwairyeen/development/App/ride 2/android/app/.cxx/Debug/2c6m2v30/armeabi-v7a/compile_commands.json.bin �ŒÕÏØ2 ã ÖáΧØ2€
|
||||||
~
|
~
|
||||||
|/Users/hamzaaleghwairyeen/development/App/ride 2/android/app/.cxx/Debug/2c6m2v30/armeabi-v7a/metadata_generation_command.txt ‹¿‰ªØ2
|
|/Users/hamzaaleghwairyeen/development/App/ride 2/android/app/.cxx/Debug/2c6m2v30/armeabi-v7a/metadata_generation_command.txt �ŒÕÏØ2
|
||||||
ü �éΧØ2s
|
ü �éΧØ2s
|
||||||
q
|
q
|
||||||
o/Users/hamzaaleghwairyeen/development/App/ride 2/android/app/.cxx/Debug/2c6m2v30/armeabi-v7a/prefab_config.json ‹¿‰ªØ2␍( ‘éΧØ2x
|
o/Users/hamzaaleghwairyeen/development/App/ride 2/android/app/.cxx/Debug/2c6m2v30/armeabi-v7a/prefab_config.json �ŒÕÏØ2␍( ‘éΧØ2x
|
||||||
v
|
v
|
||||||
t/Users/hamzaaleghwairyeen/development/App/ride 2/android/app/.cxx/Debug/2c6m2v30/armeabi-v7a/symbol_folder_index.txt ‹¿‰ªØ2␍k ‘éΧØ2\
|
t/Users/hamzaaleghwairyeen/development/App/ride 2/android/app/.cxx/Debug/2c6m2v30/armeabi-v7a/symbol_folder_index.txt �ŒÕÏØ2␍k ‘éΧØ2\
|
||||||
Z
|
Z
|
||||||
X/Users/hamzaaleghwairyeen/development/App/ride 2/android/app/src/main/cpp/CMakeLists.txt �¿‰ªØ2␍Ê øÒ•§Ø2
|
X/Users/hamzaaleghwairyeen/development/App/ride 2/android/app/src/main/cpp/CMakeLists.txt �ŒÕÏØ2␍Ê øÒ•§Ø2
|
||||||
Binary file not shown.
@@ -2,3 +2,9 @@
|
|||||||
1 5382 1741692384009485558 CMakeFiles/native-lib.dir/native-lib.cpp.o 5f170629422bfc98
|
1 5382 1741692384009485558 CMakeFiles/native-lib.dir/native-lib.cpp.o 5f170629422bfc98
|
||||||
5385 6175 1741692384809866423 /Users/hamzaaleghwairyeen/development/App/ride 2/build/app/intermediates/cxx/Debug/2c6m2v30/obj/x86/libnative-lib.so a0af4ac7f4c5ad9e
|
5385 6175 1741692384809866423 /Users/hamzaaleghwairyeen/development/App/ride 2/build/app/intermediates/cxx/Debug/2c6m2v30/obj/x86/libnative-lib.so a0af4ac7f4c5ad9e
|
||||||
34 489 1741697160909172629 /Users/hamzaaleghwairyeen/development/App/ride 2/build/app/intermediates/cxx/Debug/2c6m2v30/obj/x86/libnative-lib.so a0af4ac7f4c5ad9e
|
34 489 1741697160909172629 /Users/hamzaaleghwairyeen/development/App/ride 2/build/app/intermediates/cxx/Debug/2c6m2v30/obj/x86/libnative-lib.so a0af4ac7f4c5ad9e
|
||||||
|
6 479 1741699637287981749 CMakeFiles/native-lib.dir/native-lib.cpp.o 5f170629422bfc98
|
||||||
|
479 547 1741699637357134787 /Users/hamzaaleghwairyeen/development/App/ride 2/build/app/intermediates/cxx/Debug/2c6m2v30/obj/x86/libnative-lib.so a0af4ac7f4c5ad9e
|
||||||
|
3 429 1741700213326767093 CMakeFiles/native-lib.dir/native-lib.cpp.o 5f170629422bfc98
|
||||||
|
429 495 1741700213392850715 /Users/hamzaaleghwairyeen/development/App/ride 2/build/app/intermediates/cxx/Debug/2c6m2v30/obj/x86/libnative-lib.so a0af4ac7f4c5ad9e
|
||||||
|
5 616 1741775926465532997 CMakeFiles/native-lib.dir/native-lib.cpp.o 5f170629422bfc98
|
||||||
|
616 766 1741775926617612714 /Users/hamzaaleghwairyeen/development/App/ride 2/build/app/intermediates/cxx/Debug/2c6m2v30/obj/x86/libnative-lib.so a0af4ac7f4c5ad9e
|
||||||
|
|||||||
Binary file not shown.
@@ -2,28 +2,28 @@ C/C++ Structured Logu
|
|||||||
s
|
s
|
||||||
q/Users/hamzaaleghwairyeen/development/App/ride 2/android/app/.cxx/Debug/2c6m2v30/x86/additional_project_files.txtC
|
q/Users/hamzaaleghwairyeen/development/App/ride 2/android/app/.cxx/Debug/2c6m2v30/x86/additional_project_files.txtC
|
||||||
A
|
A
|
||||||
?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint ËÀ‰ªØ2 á¬Ï§Ø2r
|
?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint ¸ŒÕÏØ2 á¬Ï§Ø2r
|
||||||
p
|
p
|
||||||
n/Users/hamzaaleghwairyeen/development/App/ride 2/android/app/.cxx/Debug/2c6m2v30/x86/android_gradle_build.json ËÀ‰ªØ2É
|
n/Users/hamzaaleghwairyeen/development/App/ride 2/android/app/.cxx/Debug/2c6m2v30/x86/android_gradle_build.json ¸ŒÕÏØ2É
|
||||||
”ϧØ2w
|
”ϧØ2w
|
||||||
u
|
u
|
||||||
s/Users/hamzaaleghwairyeen/development/App/ride 2/android/app/.cxx/Debug/2c6m2v30/x86/android_gradle_build_mini.json ËÀ‰ªØ2‹ «Ï§Ø2d
|
s/Users/hamzaaleghwairyeen/development/App/ride 2/android/app/.cxx/Debug/2c6m2v30/x86/android_gradle_build_mini.json ¸ŒÕÏØ2‹ «Ï§Ø2d
|
||||||
b
|
b
|
||||||
`/Users/hamzaaleghwairyeen/development/App/ride 2/android/app/.cxx/Debug/2c6m2v30/x86/build.ninja ËÀ‰ªØ2ñ¢ ޫϧØ2h
|
`/Users/hamzaaleghwairyeen/development/App/ride 2/android/app/.cxx/Debug/2c6m2v30/x86/build.ninja ¸ŒÕÏØ2ñ¢ ޫϧØ2h
|
||||||
f
|
f
|
||||||
d/Users/hamzaaleghwairyeen/development/App/ride 2/android/app/.cxx/Debug/2c6m2v30/x86/build.ninja.txt ËÀ‰ªØ2m
|
d/Users/hamzaaleghwairyeen/development/App/ride 2/android/app/.cxx/Debug/2c6m2v30/x86/build.ninja.txt ¸ŒÕÏØ2m
|
||||||
k
|
k
|
||||||
i/Users/hamzaaleghwairyeen/development/App/ride 2/android/app/.cxx/Debug/2c6m2v30/x86/build_file_index.txt ËÀ‰ªØ2␍X ¯Ï§Ø2n
|
i/Users/hamzaaleghwairyeen/development/App/ride 2/android/app/.cxx/Debug/2c6m2v30/x86/build_file_index.txt ¸ŒÕÏØ2␍X ¯Ï§Ø2n
|
||||||
l
|
l
|
||||||
j/Users/hamzaaleghwairyeen/development/App/ride 2/android/app/.cxx/Debug/2c6m2v30/x86/compile_commands.json ËÀ‰ªØ2£ ޫϧØ2r
|
j/Users/hamzaaleghwairyeen/development/App/ride 2/android/app/.cxx/Debug/2c6m2v30/x86/compile_commands.json ¸ŒÕÏØ2£ ޫϧØ2r
|
||||||
p
|
p
|
||||||
n/Users/hamzaaleghwairyeen/development/App/ride 2/android/app/.cxx/Debug/2c6m2v30/x86/compile_commands.json.bin ËÀ‰ªØ2 Ç Þ«Ï§Ø2x
|
n/Users/hamzaaleghwairyeen/development/App/ride 2/android/app/.cxx/Debug/2c6m2v30/x86/compile_commands.json.bin ¸ŒÕÏØ2 Ç Þ«Ï§Ø2x
|
||||||
v
|
v
|
||||||
t/Users/hamzaaleghwairyeen/development/App/ride 2/android/app/.cxx/Debug/2c6m2v30/x86/metadata_generation_command.txt ËÀ‰ªØ2
|
t/Users/hamzaaleghwairyeen/development/App/ride 2/android/app/.cxx/Debug/2c6m2v30/x86/metadata_generation_command.txt ¸ŒÕÏØ2
|
||||||
Ô ¯Ï§Ø2k
|
Ô ¯Ï§Ø2k
|
||||||
i
|
i
|
||||||
g/Users/hamzaaleghwairyeen/development/App/ride 2/android/app/.cxx/Debug/2c6m2v30/x86/prefab_config.json ËÀ‰ªØ2␍( ¯Ï§Ø2p
|
g/Users/hamzaaleghwairyeen/development/App/ride 2/android/app/.cxx/Debug/2c6m2v30/x86/prefab_config.json ¸ŒÕÏØ2␍( ¯Ï§Ø2p
|
||||||
n
|
n
|
||||||
l/Users/hamzaaleghwairyeen/development/App/ride 2/android/app/.cxx/Debug/2c6m2v30/x86/symbol_folder_index.txt ËÀ‰ªØ2␍c ¯Ï§Ø2\
|
l/Users/hamzaaleghwairyeen/development/App/ride 2/android/app/.cxx/Debug/2c6m2v30/x86/symbol_folder_index.txt ¸ŒÕÏØ2␍c ¯Ï§Ø2\
|
||||||
Z
|
Z
|
||||||
X/Users/hamzaaleghwairyeen/development/App/ride 2/android/app/src/main/cpp/CMakeLists.txt ËÀ‰ªØ2␍Ê øÒ•§Ø2
|
X/Users/hamzaaleghwairyeen/development/App/ride 2/android/app/src/main/cpp/CMakeLists.txt ¸ŒÕÏØ2␍Ê øÒ•§Ø2
|
||||||
Binary file not shown.
@@ -2,3 +2,9 @@
|
|||||||
0 2001 1741692390230368349 CMakeFiles/native-lib.dir/native-lib.cpp.o 928bd220d18fa07b
|
0 2001 1741692390230368349 CMakeFiles/native-lib.dir/native-lib.cpp.o 928bd220d18fa07b
|
||||||
2004 2120 1741692390355514735 /Users/hamzaaleghwairyeen/development/App/ride 2/build/app/intermediates/cxx/Debug/2c6m2v30/obj/x86_64/libnative-lib.so 8509cac8b5517111
|
2004 2120 1741692390355514735 /Users/hamzaaleghwairyeen/development/App/ride 2/build/app/intermediates/cxx/Debug/2c6m2v30/obj/x86_64/libnative-lib.so 8509cac8b5517111
|
||||||
24 297 1741697161349852193 /Users/hamzaaleghwairyeen/development/App/ride 2/build/app/intermediates/cxx/Debug/2c6m2v30/obj/x86_64/libnative-lib.so 8509cac8b5517111
|
24 297 1741697161349852193 /Users/hamzaaleghwairyeen/development/App/ride 2/build/app/intermediates/cxx/Debug/2c6m2v30/obj/x86_64/libnative-lib.so 8509cac8b5517111
|
||||||
|
6 435 1741699637813176160 CMakeFiles/native-lib.dir/native-lib.cpp.o 928bd220d18fa07b
|
||||||
|
435 502 1741699637880327268 /Users/hamzaaleghwairyeen/development/App/ride 2/build/app/intermediates/cxx/Debug/2c6m2v30/obj/x86_64/libnative-lib.so 8509cac8b5517111
|
||||||
|
3 430 1741700213841652636 CMakeFiles/native-lib.dir/native-lib.cpp.o 928bd220d18fa07b
|
||||||
|
430 496 1741700213908704508 /Users/hamzaaleghwairyeen/development/App/ride 2/build/app/intermediates/cxx/Debug/2c6m2v30/obj/x86_64/libnative-lib.so 8509cac8b5517111
|
||||||
|
3 430 1741775927074643204 CMakeFiles/native-lib.dir/native-lib.cpp.o 928bd220d18fa07b
|
||||||
|
430 585 1741775927230967137 /Users/hamzaaleghwairyeen/development/App/ride 2/build/app/intermediates/cxx/Debug/2c6m2v30/obj/x86_64/libnative-lib.so 8509cac8b5517111
|
||||||
|
|||||||
Binary file not shown.
@@ -2,28 +2,28 @@ C/C++ Structured Logx
|
|||||||
v
|
v
|
||||||
t/Users/hamzaaleghwairyeen/development/App/ride 2/android/app/.cxx/Debug/2c6m2v30/x86_64/additional_project_files.txtC
|
t/Users/hamzaaleghwairyeen/development/App/ride 2/android/app/.cxx/Debug/2c6m2v30/x86_64/additional_project_files.txtC
|
||||||
A
|
A
|
||||||
?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint ÎÁ‰ªØ2 µ€Ó§Ø2u
|
?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint ÛŒÕÏØ2 µ€Ó§Ø2u
|
||||||
s
|
s
|
||||||
q/Users/hamzaaleghwairyeen/development/App/ride 2/android/app/.cxx/Debug/2c6m2v30/x86_64/android_gradle_build.json ÎÁ‰ªØ2Õ
|
q/Users/hamzaaleghwairyeen/development/App/ride 2/android/app/.cxx/Debug/2c6m2v30/x86_64/android_gradle_build.json ÛŒÕÏØ2Õ
|
||||||
ô…Ó§Ø2z
|
ô…Ó§Ø2z
|
||||||
x
|
x
|
||||||
v/Users/hamzaaleghwairyeen/development/App/ride 2/android/app/.cxx/Debug/2c6m2v30/x86_64/android_gradle_build_mini.json ÎÁ‰ªØ2— ‰†Ó§Ø2g
|
v/Users/hamzaaleghwairyeen/development/App/ride 2/android/app/.cxx/Debug/2c6m2v30/x86_64/android_gradle_build_mini.json ÛŒÕÏØ2— ‰†Ó§Ø2g
|
||||||
e
|
e
|
||||||
c/Users/hamzaaleghwairyeen/development/App/ride 2/android/app/.cxx/Debug/2c6m2v30/x86_64/build.ninja ÎÁ‰ªØ2�£ °ÿÒ§Ø2k
|
c/Users/hamzaaleghwairyeen/development/App/ride 2/android/app/.cxx/Debug/2c6m2v30/x86_64/build.ninja ÛŒÕÏØ2�£ °ÿÒ§Ø2k
|
||||||
i
|
i
|
||||||
g/Users/hamzaaleghwairyeen/development/App/ride 2/android/app/.cxx/Debug/2c6m2v30/x86_64/build.ninja.txt ÎÁ‰ªØ2p
|
g/Users/hamzaaleghwairyeen/development/App/ride 2/android/app/.cxx/Debug/2c6m2v30/x86_64/build.ninja.txt ÛŒÕÏØ2p
|
||||||
n
|
n
|
||||||
l/Users/hamzaaleghwairyeen/development/App/ride 2/android/app/.cxx/Debug/2c6m2v30/x86_64/build_file_index.txt ÎÁ‰ªØ2␍X �†Ó§Ø2q
|
l/Users/hamzaaleghwairyeen/development/App/ride 2/android/app/.cxx/Debug/2c6m2v30/x86_64/build_file_index.txt ÛŒÕÏØ2␍X �†Ó§Ø2q
|
||||||
o
|
o
|
||||||
m/Users/hamzaaleghwairyeen/development/App/ride 2/android/app/.cxx/Debug/2c6m2v30/x86_64/compile_commands.json ÎÁ‰ªØ2™ °ÿÒ§Ø2u
|
m/Users/hamzaaleghwairyeen/development/App/ride 2/android/app/.cxx/Debug/2c6m2v30/x86_64/compile_commands.json ÛŒÕÏØ2™ °ÿÒ§Ø2u
|
||||||
s
|
s
|
||||||
q/Users/hamzaaleghwairyeen/development/App/ride 2/android/app/.cxx/Debug/2c6m2v30/x86_64/compile_commands.json.bin ÎÁ‰ªØ2 ¶ °ÿÒ§Ø2{
|
q/Users/hamzaaleghwairyeen/development/App/ride 2/android/app/.cxx/Debug/2c6m2v30/x86_64/compile_commands.json.bin ÛŒÕÏØ2 ¶ °ÿÒ§Ø2{
|
||||||
y
|
y
|
||||||
w/Users/hamzaaleghwairyeen/development/App/ride 2/android/app/.cxx/Debug/2c6m2v30/x86_64/metadata_generation_command.txt ÎÁ‰ªØ2
|
w/Users/hamzaaleghwairyeen/development/App/ride 2/android/app/.cxx/Debug/2c6m2v30/x86_64/metadata_generation_command.txt ÛŒÕÏØ2
|
||||||
ã Œ†Ó§Ø2n
|
ã Œ†Ó§Ø2n
|
||||||
l
|
l
|
||||||
j/Users/hamzaaleghwairyeen/development/App/ride 2/android/app/.cxx/Debug/2c6m2v30/x86_64/prefab_config.json ÎÁ‰ªØ2␍( Œ†Ó§Ø2s
|
j/Users/hamzaaleghwairyeen/development/App/ride 2/android/app/.cxx/Debug/2c6m2v30/x86_64/prefab_config.json ÛŒÕÏØ2␍( Œ†Ó§Ø2s
|
||||||
q
|
q
|
||||||
o/Users/hamzaaleghwairyeen/development/App/ride 2/android/app/.cxx/Debug/2c6m2v30/x86_64/symbol_folder_index.txt ÎÁ‰ªØ2␍f Œ†Ó§Ø2\
|
o/Users/hamzaaleghwairyeen/development/App/ride 2/android/app/.cxx/Debug/2c6m2v30/x86_64/symbol_folder_index.txt ÛŒÕÏØ2␍f Œ†Ó§Ø2\
|
||||||
Z
|
Z
|
||||||
X/Users/hamzaaleghwairyeen/development/App/ride 2/android/app/src/main/cpp/CMakeLists.txt ÎÁ‰ªØ2␍Ê øÒ•§Ø2
|
X/Users/hamzaaleghwairyeen/development/App/ride 2/android/app/src/main/cpp/CMakeLists.txt ÛŒÕÏØ2␍Ê øÒ•§Ø2
|
||||||
@@ -1,10 +1,27 @@
|
|||||||
#include <jni.h>
|
#include <jni.h>
|
||||||
#include <string>
|
#include <string>
|
||||||
#include <fstream>
|
#include <fstream>
|
||||||
|
#include <unistd.h>
|
||||||
|
#include <dirent.h>
|
||||||
|
#include <fcntl.h>
|
||||||
|
#include <sys/stat.h>
|
||||||
|
#include <sys/types.h>
|
||||||
|
#include <android/log.h>
|
||||||
|
#include <pthread.h>
|
||||||
|
#include <dlfcn.h>
|
||||||
|
#include <link.h>
|
||||||
|
#include <sys/socket.h>
|
||||||
|
#include <netinet/in.h>
|
||||||
|
#include <arpa/inet.h>
|
||||||
|
#include <sys/ptrace.h> // Add this line
|
||||||
|
|
||||||
extern "C"
|
|
||||||
JNIEXPORT jboolean JNICALL
|
#define LOG_TAG "NativeLib"
|
||||||
Java_com_mobileapp_store_ride_RootDetection_isNativeRooted(JNIEnv *env, jobject /* this */) {
|
#define LOGD(...) __android_log_print(ANDROID_LOG_DEBUG, LOG_TAG, __VA_ARGS__)
|
||||||
|
#define LOGE(...) __android_log_print(ANDROID_LOG_ERROR, LOG_TAG, __VA_ARGS__)
|
||||||
|
|
||||||
|
// Function to check for common root binaries
|
||||||
|
bool isRooted() {
|
||||||
std::string paths[] = {
|
std::string paths[] = {
|
||||||
"/system/app/Superuser.apk",
|
"/system/app/Superuser.apk",
|
||||||
"/system/xbin/su",
|
"/system/xbin/su",
|
||||||
@@ -17,9 +34,133 @@ Java_com_mobileapp_store_ride_RootDetection_isNativeRooted(JNIEnv *env, jobject
|
|||||||
for (const auto &path : paths) {
|
for (const auto &path : paths) {
|
||||||
std::ifstream file(path);
|
std::ifstream file(path);
|
||||||
if (file.good()) {
|
if (file.good()) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Function to check for the presence of files or directories commonly associated with Frida.
|
||||||
|
bool checkFridaFiles() {
|
||||||
|
std::string fridaFiles[] = {
|
||||||
|
"/data/local/tmp/re.frida.server", //Common Frida server path
|
||||||
|
"/data/local/tmp/frida-server",
|
||||||
|
"/usr/lib/libfrida-gadget.so", // Frida gadget (injected library)
|
||||||
|
"/usr/lib64/libfrida-gadget.so",
|
||||||
|
"/data/local/re.frida.server",
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
for (const auto &path : fridaFiles) {
|
||||||
|
if (access(path.c_str(), F_OK) != -1) {
|
||||||
|
LOGE("Frida file detected: %s", path.c_str());
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Checks for open ports commonly used by Frida. This is less reliable, as ports can be changed.
|
||||||
|
bool checkFridaPorts() {
|
||||||
|
int sock = socket(AF_INET, SOCK_STREAM, 0);
|
||||||
|
if (sock == -1) {
|
||||||
|
return false; // Couldn't create socket, not a strong indicator.
|
||||||
|
}
|
||||||
|
|
||||||
|
sockaddr_in sa;
|
||||||
|
memset(&sa, 0, sizeof(sa));
|
||||||
|
sa.sin_family = AF_INET;
|
||||||
|
sa.sin_port = htons(27042); // Default Frida port
|
||||||
|
inet_pton(AF_INET, "127.0.0.1", &sa.sin_addr);
|
||||||
|
|
||||||
|
if (connect(sock, (struct sockaddr *)&sa, sizeof(sa)) != -1) {
|
||||||
|
LOGE("Frida default port (27042) is open.");
|
||||||
|
close(sock);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
close(sock);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Check the maps file of the current process for any suspicious entries.
|
||||||
|
bool checkMaps() {
|
||||||
|
std::ifstream mapsFile("/proc/self/maps");
|
||||||
|
std::string line;
|
||||||
|
|
||||||
|
if (mapsFile.is_open()) {
|
||||||
|
while (std::getline(mapsFile, line)) {
|
||||||
|
// Look for lines that indicate injected libraries, especially Frida.
|
||||||
|
if (line.find("frida") != std::string::npos ||
|
||||||
|
line.find("gum-js-") != std::string::npos) { // Gum is Frida's JavaScript engine
|
||||||
|
LOGE("Suspicious entry in /proc/self/maps: %s", line.c_str());
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
mapsFile.close();
|
||||||
|
} else
|
||||||
|
{
|
||||||
|
LOGE("Could not open /proc/self/maps");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Check loaded modules.
|
||||||
|
bool checkLoadedModules() {
|
||||||
|
bool found = false;
|
||||||
|
dl_iterate_phdr([](struct dl_phdr_info *info, size_t size, void *data) {
|
||||||
|
bool *found_ptr = static_cast<bool *>(data);
|
||||||
|
if (std::string(info->dlpi_name).find("frida") != std::string::npos) {
|
||||||
|
LOGE("Frida module detected: %s", info->dlpi_name);
|
||||||
|
*found_ptr = true;
|
||||||
|
return 1; // Stop iterating
|
||||||
|
}
|
||||||
|
return 0; // Continue iterating
|
||||||
|
}, &found);
|
||||||
|
|
||||||
|
return found;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// This is a simple ptrace check. More sophisticated checks are possible (and necessary for robust detection).
|
||||||
|
//bool checkPtrace() {
|
||||||
|
// // Attempt to ptrace ourselves. If another process is already tracing us, this will fail.
|
||||||
|
// if (ptrace(PTRACE_TRACEME, 0, 1, 0) < 0) {
|
||||||
|
// LOGE("ptrace failed. Debugger or tracer detected.");
|
||||||
|
// return true; // Likely being traced
|
||||||
|
// }
|
||||||
|
// // Detach. If attached, need to detach to not interfere.
|
||||||
|
// ptrace(PTRACE_DETACH, 0, 0, 0);
|
||||||
|
// return false;
|
||||||
|
//}
|
||||||
|
|
||||||
|
extern "C"
|
||||||
|
JNIEXPORT jboolean JNICALL
|
||||||
|
Java_com_mobileapp_store_ride_RootDetection_isNativeRooted(JNIEnv *env, jobject /* this */) {
|
||||||
|
|
||||||
|
if (isRooted()) {
|
||||||
return JNI_TRUE;
|
return JNI_TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (checkFridaFiles()) {
|
||||||
|
return JNI_TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (checkFridaPorts()) {
|
||||||
|
return JNI_TRUE;
|
||||||
|
}
|
||||||
|
if (checkMaps()) {
|
||||||
|
return JNI_TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (checkLoadedModules()) {
|
||||||
|
return JNI_TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
// if (checkPtrace()) {
|
||||||
|
// return JNI_TRUE;
|
||||||
|
// }
|
||||||
|
|
||||||
return JNI_FALSE;
|
return JNI_FALSE;
|
||||||
}
|
}
|
||||||
@@ -12,51 +12,94 @@ import io.flutter.embedding.android.FlutterFragmentActivity
|
|||||||
import java.io.File
|
import java.io.File
|
||||||
import java.util.Timer
|
import java.util.Timer
|
||||||
import kotlin.concurrent.schedule
|
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() {
|
class MainActivity : FlutterFragmentActivity() {
|
||||||
|
|
||||||
|
private lateinit var channel: MethodChannel // Declare a MethodChannel variable
|
||||||
|
|
||||||
|
override fun configureFlutterEngine(flutterEngine: FlutterEngine) {
|
||||||
|
super.configureFlutterEngine(flutterEngine)
|
||||||
|
|
||||||
|
// Initialize the MethodChannel
|
||||||
|
channel = MethodChannel(flutterEngine.dartExecutor.binaryMessenger, "com.mobileapp.store.ride/security")
|
||||||
|
|
||||||
|
// 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
|
||||||
|
}
|
||||||
|
else -> {
|
||||||
|
result.notImplemented() // Handle unknown method calls
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
override fun onCreate(savedInstanceState: Bundle?) {
|
override fun onCreate(savedInstanceState: Bundle?) {
|
||||||
super.onCreate(savedInstanceState)
|
super.onCreate(savedInstanceState)
|
||||||
// Log.d("DEBUG", "onCreate executed - Checking root status...")
|
|
||||||
|
|
||||||
native()
|
// Perform all checks. The order can matter; you might want to prioritize
|
||||||
performSecurityChecks()
|
// the faster checks first.
|
||||||
checkSafetyNet() // Keep this commented out if you don't need it
|
if (isDeviceCompromised()) {
|
||||||
}
|
|
||||||
|
|
||||||
private fun native() {
|
|
||||||
// Log.d("DEBUG", "Starting native root detection...")
|
|
||||||
|
|
||||||
try {
|
|
||||||
val isNativeRooted = RootDetection.isNativeRooted()
|
|
||||||
if (isNativeRooted) {
|
|
||||||
showSecurityWarningDialog()
|
showSecurityWarningDialog()
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun isDeviceCompromised(): Boolean {
|
||||||
|
return try {
|
||||||
|
nativeRootCheck() || rootBeerCheck() //|| !safetyNetCheck()
|
||||||
} catch (e: Exception) {
|
} catch (e: Exception) {
|
||||||
// Log.e("DEBUG", "Error in native root detection: ${e.message}", e)
|
Log.e("DEBUG", "Error during security checks: ${e.message}", e)
|
||||||
|
true // Consider the device compromised on error
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun performSecurityChecks() {
|
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 rootBeer = RootBeer(this)
|
||||||
val isRooted = rootBeer.isRooted
|
val isRooted = rootBeer.isRooted
|
||||||
|
Log.d("DEBUG", "RootBeer detection result: $isRooted")
|
||||||
|
return isRooted
|
||||||
|
}
|
||||||
|
|
||||||
if (isRooted) {
|
private fun safetyNetCheck(): Boolean {
|
||||||
showSecurityWarningDialog()
|
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
|
||||||
private fun checkSafetyNet() {
|
|
||||||
// Log.d("DEBUG", "Starting SafetyNet check...")
|
|
||||||
|
|
||||||
SafetyNetCheck.checkSafetyNet(this, getString(R.string.api_key_safety)) { isSafe ->
|
SafetyNetCheck.checkSafetyNet(this, getString(R.string.api_key_safety)) { result ->
|
||||||
// Log.d("DEBUG", "SafetyNet check result: $isSafe")
|
isSafe = result
|
||||||
|
Log.d("DEBUG", "SafetyNet check result: $isSafe")
|
||||||
|
semaphore.release() // Release the semaphore when the callback is executed
|
||||||
|
}
|
||||||
|
|
||||||
if (!isSafe) {
|
try {
|
||||||
// Log.d("DEBUG", "Device failed SafetyNet check")
|
semaphore.acquire() // Wait for the callback to complete
|
||||||
showSecurityWarningDialog()
|
} catch (e: InterruptedException) {
|
||||||
} else {
|
Log.e("DEBUG", "Interrupted while waiting for SafetyNet check", e)
|
||||||
// Log.d("DEBUG", "Device passed SafetyNet check")
|
return false // Or handle as appropriate for your app
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
return isSafe
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun showSecurityWarningDialog() {
|
private fun showSecurityWarningDialog() {
|
||||||
|
|||||||
+1
File diff suppressed because one or more lines are too long
+1
File diff suppressed because one or more lines are too long
+1
File diff suppressed because one or more lines are too long
+1
File diff suppressed because one or more lines are too long
+1
@@ -0,0 +1 @@
|
|||||||
|
{"guid":"dc4b70c03e8043e50e38f2068887b1d4","name":"Pods","path":"/Users/hamzaaleghwairyeen/development/App/ride 2/ios/Pods/Pods.xcodeproj/project.xcworkspace","projects":["PROJECT@v11_mod=e6fc0a3e1f3146b7a7db518c925b58ff_hash=bfdfe7dc352907fc980b868725387e98plugins=1OJSG6M1FOV3XYQCBH7Z29RZ0FPR9XDE1"]}
|
||||||
@@ -1,5 +1,6 @@
|
|||||||
import 'dart:convert';
|
import 'dart:convert';
|
||||||
import 'dart:io';
|
import 'dart:io';
|
||||||
|
import 'dart:math';
|
||||||
import 'package:Tripz/constant/api_key.dart';
|
import 'package:Tripz/constant/api_key.dart';
|
||||||
import 'package:Tripz/controller/functions/sss.dart';
|
import 'package:Tripz/controller/functions/sss.dart';
|
||||||
import 'package:Tripz/env/env.dart';
|
import 'package:Tripz/env/env.dart';
|
||||||
@@ -28,6 +29,7 @@ import '../../print.dart';
|
|||||||
import '../functions/encrypt_decrypt.dart';
|
import '../functions/encrypt_decrypt.dart';
|
||||||
import '../functions/package_info.dart';
|
import '../functions/package_info.dart';
|
||||||
import '../functions/secure_storage.dart';
|
import '../functions/secure_storage.dart';
|
||||||
|
import '../functions/securty_check.dart';
|
||||||
|
|
||||||
class LoginController extends GetxController {
|
class LoginController extends GetxController {
|
||||||
final formKey = GlobalKey<FormState>();
|
final formKey = GlobalKey<FormState>();
|
||||||
@@ -86,7 +88,14 @@ class LoginController extends GetxController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
getJwtWallet() async {
|
getJwtWallet() async {
|
||||||
|
final random = Random();
|
||||||
|
|
||||||
|
if (random.nextBool()) {
|
||||||
await SecurityHelper.performSecurityChecks();
|
await SecurityHelper.performSecurityChecks();
|
||||||
|
} else {
|
||||||
|
await SecurityChecks.isDeviceRootedFromNative(Get.context!);
|
||||||
|
}
|
||||||
|
|
||||||
String fingerPrint = DeviceHelper.getDeviceFingerprint().toString();
|
String fingerPrint = DeviceHelper.getDeviceFingerprint().toString();
|
||||||
dev = Platform.isAndroid ? 'android' : 'ios';
|
dev = Platform.isAndroid ? 'android' : 'ios';
|
||||||
var payload = {
|
var payload = {
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ import 'dart:convert';
|
|||||||
import 'dart:io';
|
import 'dart:io';
|
||||||
import 'dart:ui';
|
import 'dart:ui';
|
||||||
import 'package:device_info_plus/device_info_plus.dart';
|
import 'package:device_info_plus/device_info_plus.dart';
|
||||||
|
import 'package:flutter/cupertino.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:get/get.dart';
|
import 'package:get/get.dart';
|
||||||
import 'package:jailbreak_root_detection/jailbreak_root_detection.dart';
|
import 'package:jailbreak_root_detection/jailbreak_root_detection.dart';
|
||||||
@@ -246,37 +247,64 @@ class SecurityHelper {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// Deletes all app data
|
/// Deletes all app data
|
||||||
static Future<void> clearAllData() async {
|
|
||||||
//await storage.deleteAll(); // What's 'storage'? Be specific. Likely GetStorage as well.
|
|
||||||
await box.erase(); // Clear GetStorage data
|
|
||||||
exit(0); // This will terminate the app. Be VERY careful with this.
|
|
||||||
}
|
|
||||||
|
|
||||||
static void _showSecurityWarning() {
|
static void _showSecurityWarning() {
|
||||||
// Show a dialog, navigate to an error screen, etc.
|
// Use an RxInt to track the remaining seconds. This is the KEY!
|
||||||
// Example using Get.dialog (if you use GetX):
|
RxInt secondsRemaining = 10.obs;
|
||||||
|
|
||||||
Get.dialog(
|
Get.dialog(
|
||||||
AlertDialog(
|
CupertinoAlertDialog(
|
||||||
title: Text("Security Warning".tr), // Or use localized string
|
title: Text("Security Warning".tr),
|
||||||
content: Text(
|
content: Column(
|
||||||
"Potential security risks detected. The application may not function correctly."
|
mainAxisSize: MainAxisSize.min,
|
||||||
.tr), //Or use localized string
|
children: [
|
||||||
actions: [
|
Obx(() => Text(
|
||||||
TextButton(
|
"Potential security risks detected. The application will close in @seconds seconds."
|
||||||
onPressed: () async {
|
.trParams({
|
||||||
await storage.deleteAll();
|
// Use trParams for placeholders
|
||||||
await box.erase();
|
'seconds': secondsRemaining.value.toString(),
|
||||||
Get.back(); // Close the dialog
|
}),
|
||||||
// Or, if you really must, exit the app (but give the user a chance!)
|
// Wrap the Text widget in Obx
|
||||||
exit(0);
|
)),
|
||||||
},
|
SizedBox(height: 24), // More spacing before the progress bar
|
||||||
child: Text("OK"), // Or use a localized string
|
Obx(() => SizedBox(
|
||||||
|
width: double.infinity, // Make progress bar full width
|
||||||
|
child: CupertinoActivityIndicator(
|
||||||
|
// in case of loading
|
||||||
|
radius: 15,
|
||||||
|
animating: true,
|
||||||
|
))),
|
||||||
|
SizedBox(height: 8),
|
||||||
|
Obx(() => ClipRRect(
|
||||||
|
borderRadius: BorderRadius.circular(8), // Rounded corners
|
||||||
|
child: LinearProgressIndicator(
|
||||||
|
value: secondsRemaining.value / 10,
|
||||||
|
backgroundColor: Colors.grey.shade300, // Lighter background
|
||||||
|
valueColor: AlwaysStoppedAnimation<Color>(
|
||||||
|
CupertinoColors.systemRed), // iOS-style red
|
||||||
|
minHeight: 8, // Slightly thicker progress bar
|
||||||
),
|
),
|
||||||
|
)),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
barrierDismissible: false, // Prevent closing by tapping outside
|
),
|
||||||
|
barrierDismissible: false,
|
||||||
);
|
);
|
||||||
|
|
||||||
|
Timer.periodic(Duration(seconds: 1), (timer) {
|
||||||
|
secondsRemaining.value--;
|
||||||
|
if (secondsRemaining.value <= 0) {
|
||||||
|
timer.cancel();
|
||||||
|
// Get.back();
|
||||||
|
_clearDataAndExit();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
static Future<void> _clearDataAndExit() async {
|
||||||
|
await storage.deleteAll();
|
||||||
|
await box.erase();
|
||||||
|
exit(0); // Exit the app
|
||||||
|
print('exit');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -313,6 +341,7 @@ class DeviceHelper {
|
|||||||
|
|
||||||
// Generate and return the encrypted fingerprint
|
// Generate and return the encrypted fingerprint
|
||||||
final String fingerprint = '${deviceId}_${deviceModel}_$osVersion';
|
final String fingerprint = '${deviceId}_${deviceModel}_$osVersion';
|
||||||
|
// print(EncryptionHelper.instance.encryptData(fingerprint));
|
||||||
return EncryptionHelper.instance.encryptData(fingerprint);
|
return EncryptionHelper.instance.encryptData(fingerprint);
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
throw Exception('Failed to generate device fingerprint');
|
throw Exception('Failed to generate device fingerprint');
|
||||||
|
|||||||
@@ -0,0 +1,46 @@
|
|||||||
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:flutter/services.dart';
|
||||||
|
import 'package:get/get.dart';
|
||||||
|
|
||||||
|
class SecurityChecks {
|
||||||
|
static const platform = MethodChannel(
|
||||||
|
'com.mobileapp.store.ride/security'); // Choose a unique channel name
|
||||||
|
|
||||||
|
static Future<bool> isDeviceCompromised() async {
|
||||||
|
try {
|
||||||
|
final bool result = await platform
|
||||||
|
.invokeMethod('isNativeRooted'); // Invoke the native method
|
||||||
|
return result;
|
||||||
|
} on PlatformException catch (e) {
|
||||||
|
print("Failed to check security status: ${e.message}");
|
||||||
|
return true; // Treat platform errors as a compromised device (for safety)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static isDeviceRootedFromNative(BuildContext context) async {
|
||||||
|
bool compromised = await isDeviceCompromised();
|
||||||
|
if (compromised) {
|
||||||
|
showDialog(
|
||||||
|
barrierDismissible: false,
|
||||||
|
context: context,
|
||||||
|
builder: (context) => AlertDialog(
|
||||||
|
title: Text("Security Warning".tr),
|
||||||
|
content: Text(
|
||||||
|
"Your device appears to be compromised. The app will now close."
|
||||||
|
.tr),
|
||||||
|
actions: [
|
||||||
|
TextButton(
|
||||||
|
onPressed: () {
|
||||||
|
SystemNavigator.pop(); // Close the app
|
||||||
|
},
|
||||||
|
child: Text("OK"),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
// Continue with normal app flow
|
||||||
|
print("Device is secure.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,5 +1,8 @@
|
|||||||
import 'dart:convert';
|
import 'dart:convert';
|
||||||
import 'dart:io';
|
import 'dart:io';
|
||||||
|
import 'package:Tripz/controller/auth/login_controller.dart';
|
||||||
|
import 'package:Tripz/views/widgets/mydialoug.dart';
|
||||||
|
import 'package:flutter/services.dart';
|
||||||
import 'package:http/http.dart' as http;
|
import 'package:http/http.dart' as http;
|
||||||
import 'package:Tripz/constant/box_name.dart';
|
import 'package:Tripz/constant/box_name.dart';
|
||||||
import 'package:Tripz/main.dart';
|
import 'package:Tripz/main.dart';
|
||||||
@@ -20,6 +23,7 @@ import '../../../controller/functions/crud.dart';
|
|||||||
import '../../../controller/functions/encrypt_decrypt.dart';
|
import '../../../controller/functions/encrypt_decrypt.dart';
|
||||||
import '../../../controller/functions/package_info.dart';
|
import '../../../controller/functions/package_info.dart';
|
||||||
import '../../../controller/functions/secure_storage.dart';
|
import '../../../controller/functions/secure_storage.dart';
|
||||||
|
import '../../../controller/functions/securty_check.dart';
|
||||||
import '../../../controller/functions/tts.dart';
|
import '../../../controller/functions/tts.dart';
|
||||||
import '../../../controller/home/map_passenger_controller.dart';
|
import '../../../controller/home/map_passenger_controller.dart';
|
||||||
import '../../../controller/home/vip_waitting_page.dart';
|
import '../../../controller/home/vip_waitting_page.dart';
|
||||||
@@ -73,14 +77,14 @@ GetBuilder<MapPassengerController> leftMainMenuIcons() {
|
|||||||
tooltip: 'VIP Waiting Page', // More descriptive tooltip
|
tooltip: 'VIP Waiting Page', // More descriptive tooltip
|
||||||
),
|
),
|
||||||
// const SizedBox(width: 8),
|
// const SizedBox(width: 8),
|
||||||
// _buildIconButtonWithAnimation(
|
_buildIconButtonWithAnimation(
|
||||||
// controller: controller,
|
controller: controller,
|
||||||
// icon: Octicons.screen_full,
|
icon: Octicons.screen_full,
|
||||||
// onPressed: () async {
|
onPressed: () async {
|
||||||
// Get.to(() => TestPage());
|
Get.to(() => TestPage());
|
||||||
// },
|
},
|
||||||
// tooltip: 'Recent Locations', // More descriptive tooltip
|
tooltip: 'Recent Locations', // More descriptive tooltip
|
||||||
// ),
|
),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
@@ -99,7 +103,9 @@ class TestPage extends StatelessWidget {
|
|||||||
body: Center(
|
body: Center(
|
||||||
child: TextButton(
|
child: TextButton(
|
||||||
onPressed: () async {
|
onPressed: () async {
|
||||||
await DeviceHelper.getDeviceFingerprint();
|
// await DeviceHelper.getDeviceFingerprint();
|
||||||
|
// await SecurityHelper.performSecurityChecks();
|
||||||
|
LoginController().getJwtWallet();
|
||||||
},
|
},
|
||||||
child: Text(
|
child: Text(
|
||||||
"Text Button",
|
"Text Button",
|
||||||
|
|||||||
Reference in New Issue
Block a user