Skip to content

Commit 3482843

Browse files
imbissbudenaesthetikDMyachinTe-kPeterDaveHelloDennis Arndt
authored
AirGuard 3.0.1 (#235)
* add warning for 15 minute algorithm matching in pdf export * add preview before creating pdf document * add error message, when no internet connection during pdf creation is available * fix build error * add Debug Mode toggle for disabling ble error messages * update gradle and some dependencies * safer thread handling of PermanentBluetoothScanner * add Website to InformationFragment * add Website to InformationFragment * show AirGuard Version Number on pdf report * handle tracker ignored as additional state for pdf export, fix colors in night mode * update kotlin version to 2.1.21 and update dependencies * fix onboarding loop bug * adjust Android 15 System Bar Configuration * initial implementation of review controller * update gradle * update dependencies * fix: pdf export shows that the tracker is following even if the notification has been longer than a month ago * pdf export: optimize loading times by creating map of locations instead of using the find on the database * optimize loading in pdf export by adding new indices to beacon * fix intent handling for notifications on newer android versions * update dependencies, kotlin version to 2.2.0 and gradle * change last name of maintainer * update dependencies * fix crash in some navigation cases in TrackingFragment * update dependencies * update grade and some dependencies * update some dependencies * fix some issues with the PermanentBluetoothScanner * fix issues in BluetoothLeService * fix issues with gatt disconnect in Utility * increment version number to 2.5.1 * show error message on home screen if samsung android 15 ble bug occurs * update gradle and dependencies * improve Bluetooth Error Detection * add ScanOrchestrator to avoid accessing Bluetooth Resources on too many Threads at once * add Listeners to check if bluetooth or location is enabled in the system * replace specific bluetooth error message on main page with generic one * bypass High Priority Scan in ScanOrchestrator immediately to ensure correct front end services * upgrade gradle, dependencies and kotlin version and target Android 16 * add dependency for Android 16 predictive back compatibility * make PermanentBluetoothScheduler a toggle in the expert settings * increase version number to 2.6.0 * update dependencies * add comment function for each individual tracker * show comment function only if database device exists * add japanese and german translations * reduce throttle window in ScanOrchestrator to ensure bluetooth scan access for high priority scans in edge cases * upgrade gradle and some dependencies * update proguard rules for ScanOrchestrator * fix default value for permanent bluetooth scanner * set permanentscanner default to disabled * F-Droid Release 2.6.0 * update dependencies * fix screenshots in ReadMe * Notification permission can now be denied, if disabled a warning will be shown on the home screen * Background Location can now be denied, if disabled a warning will be shown on the home screen * fix a bug where false alarm toggle was not displayed correctly * fix issue where notification buttons where not properly processed and dismissed * fix issue where notification dismissal was not processed properly * fix map render issue under certain memory conditions when accessing the TrackingFragment through a notification * fix edge to edge problems with menus accessed from a notification * fix old tracker deletion calculating with outdated times * fix back navigation not working when application is accessed through a notification * update dependencies, increase Version number to 2.6.1 * F-Droid Release 2.6.1 * update build workflow * update dependencies, remove google Play Review Controller and all google dependencies for all builds except the google Play Store builds * reduce ANR * PermanentScanner can now only be used between Android 12 and 14, as it causes severe issues on Android 15+ * loading improvements when accesing the TrackingView from the manual scan * ignore Apple Devices when risk sensitivity is not set to high to avoid false positives * fix system bar configuration in Onboarding, update some strings for clarification * fix consistency bug when loading drawable for each tracker * add slightly more consistency to display of device name, clean up code * fix clipping issue on manual scan * add animation to info button in Manual Scan * increase version number to 2.6.2 * F-Droid Release 2.6.2 * simply Github Action Check * detect Samsung SmartTag 2 directly in manual scan, for devices that are Premature Offline * detect Samsung SmartTag 2 directly in manual scan, for devices that are offline or overmature offline * devices matched using the 15 minute algorithm get labeled as such and create a warning in the pdf generation * add radius visualizer on map * redesign map legend * complete japanese translation * fix visual bugs on map * add explanation footer text to device map legend * add setting to prevent screenshots * add section to Information Fragment for language supporters, preparation for a broader language support * add new settings menu to select how long devices, beacons and locations should be stored. * deactivation of auto deletion now throws warning * rename irritating string * add machine translated italian translation (requires human oversight) * fix italian plurals * add czech language using machine translation (requires human oversight) * add slovak language using machine translation (requires human oversight) * add new language supporter credits and add necessary strings in all languages * improve slovak translation based on human feedback * Ru locale (#190) russian translation * Adds French translation (#186) French translation * Add a basic translation of Traditional Chinese (zh_TW) (#150) traditional chinese translation * integrate russian, french and traditional chinese translation * new strings (#220) added missing russian strings * upgrade dependencies and kotlin version * migrate aboutLibraries to Version 13 * replace MarkDownView as markdown renderer for the articles with markwon * Full Screen Device Map will not be shown anymore if internet connection is not available * remove Article Metadata shown in the front end * update italian translation based on human feedback * remove article download and replace with offline version * make language detection more dynamic * update italian based on human feedback * prepare new Hint when there are too many notifications * upgrade gradle * add dismiss button for error articles * update italian articles based on human translation * remove unnecessary translations * complete remaining missing translations using machine translation * more italian improvements * add image resource for moto tag * add image resource for moto tag, add owner retrieval support for hama and improvements for moto tag * add hama tracker icon * fix bug where determine tracker button was shown in some cases for safe google trackers * increment app version and update dependencies * increment version code * F-Droid Release 2.7.0 * improve scan distance fragment debug view * Update ScanDistanceFragment: add device icon, bring back battery feature (this time only in expert mode) * Add pop up when clicking on Location in All Location Map showing the most recently found device, refactor Utility * finish refactor: moving all map related functions out of Utility and into MapUtils * Make Pop Up more understandable, add per location filter to DeviceFragment and FoundDevicesFragment, add +x more trackers found hint to location Pop Up * update articles (include Google, update limitations to not include iOS limitations) * refactor DevicesFragment (delete FoundDevicesFragment and IgnoredDevicesFragment) * change issue with modified strings * Redesign and Refactor Filter Dialog for DeviceFragment * Update dependencies and refactor filter classes * update dependencies * Implement sorting functionality for the devices lists * Filters Ignored and Notified can now also be excluded from the list * Add navigation preselection logic for the new filters, modify the no devices logic found message according to the new filter logic * increment version code to 59 and update version name to 2.7.1 * F-Droid Release 2.7.1 * fix Sort Pop Up Alignment * add scrolling indicator to device list * add missing content descriptions * add sorting option by times seen in device list * fix crash when submitting feedback * fix inconsitencies in the data displayed * make clickable area on Marker Info Window for more trackers bigger * Move old device cleanup and google device clean up in its own independent Worker. Add a save button to the OldDeviceCleanUpFragment. * improve detection of bluetooth and location disabled during Scan * add heart / favourite functionality via swiping to the device list and filter for favourites * add "Forget Tracker" functionality to delete device and related data (analog to iOS version) * Redesign Tracking Fragment (Device Detail Page), follows more the Material 3 Design Language * Redesign Export Device Fragment, Observe Tracker Fragment and Feedback Fragment for new Material Design * redesign ScanDistance Fragment for Material Design 3, add a Play Sound Button on Distance Fragment, fix memory leak in ScanDistanceFragment * adjust colors in Devices Fragment to be compliant to Material 3 Design language * Material Design 3 for ScanFragment * Adjust Settings partially for Material 3 * Adjust Edge to Edge handling (still causes some issues, but mostly working already) * Map View now has Material 3 Design, Fix Edge to Edge issues on Map View * fix edge to edge issue in DeviceFragment * fix edge to edge issue in ScanFragment * fix edge to edge issue in ScanDistanceFragment * fix color blending issue in tracking fragment and information fragment * update gradle to 9.0, Material3 for All Devices Fragment * Material3 for DashboardRiskFragment and RiskDetailFragment * fix color binding issues * remove manual detection of Theme * refactor onboarding fragments to use Material3 components and improve permission handling * remove all occurences of deprecated colors * rename fragments to Dialog and make consistent rounded corners for Bottom Sheet Dialogs * restore greyed out save changes button for delete study data menu * restore greyed out save changes button for delete study data menu * fix merge issue * replace heart with star icon, add star feature in tracking fragment * delete unused resources * Add support for Material You * Fix animation lag in DevicesFragment and improve loading of DevicesFragment for big databases * Fix animation of background bar in ScanDistanceFragment for error cases, fix Animation and Material Design in ScanFragment * fix play sound button visibility on ScanDistanceFragment * Refactor Export Device Fragment to use significantly more efficient data loading * rephrase all occurrences of following to "could be following" * complete translations in non-english languages * Bugfix: Map not loading when accesing through Notification * Material3 Optimizations for the Map * Clear focus from comment EditText when tapping outside * Refactor Bluetooth event handling to use BluetoothEvent class * Refactor all sound playing devices for better compatibility with modern APIs * Add minimum zoom level and set scrollable area limit for the map * update kotlin to 2.3.10, upgrade dependencies * upgrade Java Compiler to Version 21, increase version number * replace switch style in Settings with Material3 themed pill shape * replace ListPreferences with custom Material3 themed Preferences * fix Ripple effect slowing down to ressource intensive layoutlistener * clean up code, remove unused files, fix references * fix references * fix Onboarding for Android 9 * add better empty list explanations and fix visual bugs when lists are empty * rewrite Observe Tracker logic to be more consistent with modern scheduling guidelines * add long click functionality for Device Type Filters, rename favorite to marked * fix SQL issue in rare cases where Google Find My Network devices were mismatched * fix compile issues in tests * update proguard rules * improve location saving to handle edge cases leading to empty MarkerInfo Pop ups * update old device deletion logic, handle cancel workers better, set default setting to true (delete old devices, but not unsafe ones), add deletion of related notification objects for better cleanup * replace images with new design * update gradle version and dependencies * implement explanation for save state instead of map on TrackingFragment * F-Droid Release Metadata 3.0.0 * adjust Tile Branding to Tile / Life360 * update ATTrackingDetectionApplication access to handle uninitialized state * refactor manual scan to only use one RecyclerView instead of two (should reduce ANR), increase version number to 3.0.1, update dependencies * update JDK version to 21 and fix id issue * migrate to use k2 with legacy-kapt, future proof for upcoming AGP versions, update dependencies * refactor manual scan to avoid a situation where scan would freeze * F-Droid Release 3.0.1 * resolve f-droid by enforcing consistent futures dependency resolution * resolve f-droid build issue by ignoring failed tests and deleting empty tests --------- Co-authored-by: DMyachin <dmitry.myachin@gmail.com> Co-authored-by: Tek <tek@randhome.io> Co-authored-by: Peter Dave Hello <hsu@peterdavehello.org> Co-authored-by: Dennis Arndt <darndt@seemoo.tu-darmstadt.de>
1 parent 4212a67 commit 3482843

228 files changed

Lines changed: 8704 additions & 5607 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/workflows/android.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,11 @@ jobs:
1212
steps:
1313
- uses: actions/checkout@v3
1414

15-
- name: Set up JDK 17 with Gradle cache
16-
uses: actions/setup-java@v3
15+
- name: Set up JDK 21 with Gradle cache
16+
uses: actions/setup-java@v4
1717
with:
18+
java-version: 21
1819
distribution: temurin
19-
java-version: 17
2020
cache: gradle
2121

2222
- name: Grant execute permission for Gradle wrapper

api.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
1-
API_KEY="bcNVTRDK.CtBt37pbZMZnMyZa3Vtb9ot23Q73TvJz"
1+
API_KEY="ZKpHA5D3.93jD8IMBSeZW0mRI6815RTHlPkOLzWBx"
22
API_BASE_ADDRESS="https://tpe.seemoo.tu-darmstadt.de/api/"

app/build.gradle

Lines changed: 32 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,8 @@ import java.util.regex.Pattern
22

33
plugins {
44
id 'com.android.application'
5-
id 'kotlin-android'
5+
id 'com.android.legacy-kapt'
66
id 'androidx.navigation.safeargs.kotlin'
7-
id 'kotlin-kapt'
87
id 'com.google.devtools.ksp'
98
id 'dagger.hilt.android.plugin'
109
id 'com.mikepenz.aboutlibraries.plugin.android'
@@ -16,22 +15,29 @@ def apiPropertiesFile = rootProject.file("api.properties")
1615
def apiProperties = new Properties()
1716
apiProperties.load(new FileInputStream(apiPropertiesFile))
1817

18+
kotlin {
19+
jvmToolchain {
20+
languageVersion.set(JavaLanguageVersion.of(21))
21+
}
22+
}
23+
1924
android {
2025
buildFeatures {
2126
viewBinding true
2227
dataBinding true
2328
compose true
2429
buildConfig true
30+
resValues true
2531
}
2632

2733
compileSdk = 36
2834

2935
defaultConfig {
3036
applicationId "de.seemoo.at_tracking_detection"
31-
minSdkVersion 28
37+
minSdk = 28
3238
targetSdk = 36
33-
versionCode 59
34-
versionName "2.7.1"
39+
versionCode 63
40+
versionName "3.0.1"
3541
buildConfigField "String", "API_KEY", apiProperties["API_KEY"]
3642
buildConfigField "String", "API_BASE_ADDRESS", apiProperties["API_BASE_ADDRESS"]
3743

@@ -56,13 +62,16 @@ android {
5662
resValue "bool", "debug", "true"
5763
}
5864
}
65+
testOptions {
66+
unitTests.all {
67+
it.failOnNoDiscoveredTests = false
68+
}
69+
}
70+
5971
compileOptions {
6072
coreLibraryDesugaringEnabled true
61-
sourceCompatibility JavaVersion.VERSION_17
62-
targetCompatibility JavaVersion.VERSION_17
63-
}
64-
kotlinOptions {
65-
jvmTarget = JavaVersion.VERSION_17.toString()
73+
sourceCompatibility JavaVersion.VERSION_21
74+
targetCompatibility JavaVersion.VERSION_21
6675
}
6776

6877
sourceSets {
@@ -98,13 +107,13 @@ dependencies {
98107
implementation 'com.jakewharton.timber:timber:5.0.1'
99108
implementation 'com.github.bastienpaulfr:Treessence:1.1.2'
100109
implementation "androidx.work:work-runtime-ktx:$work_version"
101-
implementation 'androidx.core:core-ktx:1.17.0'
110+
implementation 'androidx.core:core-ktx:1.18.0'
102111
implementation 'androidx.appcompat:appcompat:1.7.1'
103112
implementation 'com.google.android.material:material:1.13.0'
104113
implementation 'androidx.constraintlayout:constraintlayout:2.2.1'
105114
implementation 'androidx.vectordrawable:vectordrawable:1.2.0'
106-
implementation 'androidx.navigation:navigation-fragment-ktx:2.9.6'
107-
implementation 'androidx.navigation:navigation-ui-ktx:2.9.6'
115+
implementation 'androidx.navigation:navigation-fragment-ktx:2.9.7'
116+
implementation 'androidx.navigation:navigation-ui-ktx:2.9.7'
108117
implementation 'androidx.lifecycle:lifecycle-livedata-ktx:2.10.0'
109118
implementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.10.0'
110119
implementation 'androidx.lifecycle:lifecycle-extensions:2.2.0'
@@ -114,14 +123,14 @@ dependencies {
114123
implementation "androidx.profileinstaller:profileinstaller:1.4.1"
115124
implementation 'androidx.localbroadcastmanager:localbroadcastmanager:1.1.0'
116125

117-
implementation "androidx.activity:activity-ktx:1.12.1"
126+
implementation "androidx.activity:activity-ktx:1.13.0"
118127
implementation 'com.squareup.retrofit2:retrofit:3.0.0'
119128
implementation 'com.squareup.retrofit2:converter-gson:3.0.0'
120129
implementation 'com.squareup.okhttp3:okhttp:5.3.2'
121130
implementation 'com.squareup.okhttp3:logging-interceptor:5.3.2'
122131
implementation 'com.google.code.gson:gson:2.13.2'
123132
implementation "androidx.work:work-testing:$work_version"
124-
implementation 'androidx.core:core-ktx:1.17.0'
133+
implementation 'androidx.core:core-ktx:1.18.0'
125134
debugImplementation 'com.squareup.okhttp3:logging-interceptor:5.3.2'
126135

127136
implementation "com.google.dagger:hilt-android:$hilt_compiler_version"
@@ -168,21 +177,25 @@ dependencies {
168177

169178
//Compose
170179
// Integration with activities
171-
implementation 'androidx.activity:activity-compose:1.12.1'
180+
implementation 'androidx.activity:activity-compose:1.13.0'
172181
// Compose Material3 Design
173182
implementation 'androidx.compose.material3:material3:1.4.0'
174183
implementation 'androidx.compose.material3:material3-window-size-class:1.4.0'
175184
// Animations
176-
implementation 'androidx.compose.animation:animation:1.10.0'
185+
implementation 'androidx.compose.animation:animation:1.10.5'
177186
// Tooling support (Previews, etc.)
178-
implementation 'androidx.compose.ui:ui-tooling:1.10.0'
187+
implementation 'androidx.compose.ui:ui-tooling:1.10.5'
179188
// Integration with ViewModels
180189
implementation 'androidx.lifecycle:lifecycle-viewmodel-compose:2.10.0'
181190
// UI Tests
182-
androidTestImplementation 'androidx.compose.ui:ui-test-junit4:1.10.0'
191+
androidTestImplementation 'androidx.compose.ui:ui-test-junit4:1.10.5'
183192
// When using a MDC theme
184193
implementation "com.google.android.material:compose-theme-adapter:1.2.1"
185194

195+
// needed for correct dependency injection
196+
implementation 'androidx.concurrent:concurrent-futures:1.3.0'
197+
implementation 'androidx.concurrent:concurrent-futures-ktx:1.3.0'
198+
186199
// Google Review Handling (only active in Google Play Builds done from the googlePlyStore Branch)
187200
// implementation("com.google.android.play:review:2.0.2")
188201
// implementation("com.google.android.play:review-ktx:2.0.2")

app/proguard-rules.pro

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -89,11 +89,18 @@
8989
-keep class com.google.gson.stream.JsonReader { *; }
9090
-keep class com.google.gson.stream.JsonWriter { *; }
9191

92-
# Ensure that the classes related to Article are not stripped
93-
-keep class de.seemoo.at_tracking_detection.ui.dashboard.Article { *; }
94-
9592
# Keep ProGuard/R8 from stripping out important methods or classes
96-
-keep class * implements com.google.gson.reflect.TypeToken { *; }
93+
# TypeToken is a class (not an interface), so use 'extends' not 'implements'.
94+
# Also preserve generic signatures so Gson can read the type parameter at runtime.
95+
-keep,allowobfuscation,allowshrinking class com.google.gson.reflect.TypeToken
96+
-keep class * extends com.google.gson.reflect.TypeToken { *; }
97+
98+
# Keep Article data class used for Gson deserialization in DashboardRiskFragment
99+
-keep class de.seemoo.at_tracking_detection.ui.dashboard.Article { *; }
100+
-keepclassmembers class de.seemoo.at_tracking_detection.ui.dashboard.Article {
101+
<fields>;
102+
<init>(...);
103+
}
97104

98105
# Ensure that the DeviceType class is not stripped or obfuscated
99106
-keep class de.seemoo.at_tracking_detection.database.models.device.DeviceType { *; }
@@ -121,7 +128,7 @@
121128
-keep class de.seemoo.at_tracking_detection.util.SharedPrefs { *; }
122129

123130
# Keep Gson annotations
124-
-keepattributes Signature,RuntimeVisibleAnnotations
131+
-keepattributes Signature, InnerClasses, EnclosingMethod, RuntimeVisibleAnnotations
125132

126133
# Keep all data classes with Gson annotations
127134
-keep class de.seemoo.at_tracking_detection.database.relations.** { *; }

0 commit comments

Comments
 (0)