Skip to content

Commit 8265fba

Browse files
committed
Merge branch 'dev'
2 parents df94acf + d395aca commit 8265fba

File tree

72 files changed

+1141
-563
lines changed

Some content is hidden

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

72 files changed

+1141
-563
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,3 +69,4 @@ signing.gradle
6969
.externalNativeBuild
7070
.cxx
7171
/.kotlin/sessions/kotlin-compiler-*.salive
72+
/app/src/main/resources/libraries.json

.proguard/proguard-okhttp.pro

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,4 @@
1919
-dontwarn org.conscrypt.*
2020
-dontwarn org.openjsse.javax.net.ssl.SSLParameters
2121
-dontwarn org.openjsse.javax.net.ssl.SSLSocket
22-
-dontwarn org.openjsse.net.ssl.OpenJSSE
23-
24-
-keep class com.bumptech.glide.integration.okhttp3.OkHttpGlideModule
22+
-dontwarn org.openjsse.net.ssl.OpenJSSE

.proguard/proguard-retrofit.pro

Lines changed: 46 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,48 @@
1+
# Retrofit does reflection on generic parameters. InnerClasses is required to use Signature and
2+
# EnclosingMethod is required to use InnerClasses.
3+
-keepattributes Signature, InnerClasses, EnclosingMethod
4+
5+
# Retrofit does reflection on method and parameter annotations.
6+
-keepattributes RuntimeVisibleAnnotations, RuntimeVisibleParameterAnnotations
7+
8+
# Keep annotation default values (e.g., retrofit2.http.Field.encoded).
9+
-keepattributes AnnotationDefault
10+
11+
# Retain service method parameters when optimizing.
12+
-keepclassmembers,allowshrinking,allowobfuscation interface * {
13+
@retrofit2.http.* <methods>;
14+
}
15+
16+
# Ignore annotation used for build tooling.
17+
-dontwarn org.codehaus.mojo.animal_sniffer.IgnoreJRERequirement
18+
19+
# Ignore JSR 305 annotations for embedding nullability information.
20+
-dontwarn javax.annotation.**
21+
22+
# Guarded by a NoClassDefFoundError try/catch and only used when on the classpath.
23+
-dontwarn kotlin.Unit
24+
25+
# Top-level functions that can only be used by Kotlin.
26+
-dontwarn retrofit2.KotlinExtensions
27+
-dontwarn retrofit2.KotlinExtensions$*
28+
29+
# With R8 full mode, it sees no subtypes of Retrofit interfaces since they are created with a Proxy
30+
# and replaces all potential values with null. Explicitly keeping the interfaces prevents this.
31+
-if interface * { @retrofit2.http.* <methods>; }
32+
-keep,allowobfuscation interface <1>
33+
34+
# Keep inherited services.
35+
-if interface * { @retrofit2.http.* <methods>; }
36+
-keep,allowobfuscation interface * extends <1>
37+
38+
# With R8 full mode generic signatures are stripped for classes that are not
39+
# kept. Suspend functions are wrapped in continuations where the type argument
40+
# is used.
41+
-keep,allowoptimization,allowshrinking,allowobfuscation class kotlin.coroutines.Continuation
42+
143
# R8 full mode strips generic signatures from return types if not kept.
244
-if interface * { @retrofit2.http.* public *** *(...); }
3-
-keep,allowoptimization,allowshrinking,allowobfuscation class <3>
45+
-keep,allowoptimization,allowshrinking,allowobfuscation class <3>
46+
47+
# With R8 full mode generic signatures are stripped for classes that are not kept.
48+
-keep,allowoptimization,allowshrinking,allowobfuscation class retrofit2.Response

.proguard/proguard-submarine.pro

Lines changed: 0 additions & 4 deletions
This file was deleted.

app/build.gradle

Lines changed: 76 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,10 @@
11
import org.jetbrains.kotlin.gradle.dsl.JvmTarget
22

33
plugins {
4-
id("com.google.devtools.ksp").version("2.2.0-2.0.2")
4+
id("com.google.devtools.ksp").version('2.3.5')
55
}
66

77
apply plugin: 'com.android.application'
8-
apply plugin: 'kotlin-android'
98
apply plugin: 'org.sonarqube'
109
apply plugin: 'com.google.gms.google-services'
1110
apply plugin: 'com.google.firebase.crashlytics'
@@ -16,15 +15,6 @@ if (file('signing.gradle').exists()) {
1615
apply from: 'signing.gradle'
1716
}
1817

19-
aboutLibraries {
20-
exclusionPatterns = [~"com_google_android.*", ~"android.*", ~"com_mikepenz__fastadapter_extensions.*"]
21-
configPath = "about-config"
22-
additionalLicenses {
23-
LGPL_2_1_or_later
24-
BSD_3_Clause
25-
}
26-
}
27-
2818
kotlin {
2919
compilerOptions {
3020
jvmTarget = JvmTarget.JVM_17
@@ -43,7 +33,7 @@ android {
4333
minSdkVersion 26
4434
targetSdkVersion 36
4535
versionCode 130 // is updated automatically by BitRise; only used when building locally
46-
versionName '1.21.5'
36+
versionName '1.21.6'
4737

4838
def includeObjectBoxBrowser = System.getenv("INCLUDE_OBJECTBOX_BROWSER") ?: "false"
4939
def includeLeakCanary = System.getenv("INCLUDE_LEAK_CANARY") ?: "false"
@@ -53,9 +43,8 @@ android {
5343

5444
buildConfigField 'String', 'GITHUB_API_URL', '"https://api.github.com/repos/avluis/Hentoid/"'
5545

56-
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
46+
// Only include complete translations
5747
resourceConfigurations += ['en', 'ru', 'it', 'uk', 'hu', 'ko', 'ja', 'es', 'sv']
58-
// Only include complete translations
5948
}
6049
buildFeatures {
6150
viewBinding = true
@@ -68,9 +57,9 @@ android {
6857

6958
buildConfigField 'String', 'UPDATE_URL', '"https://raw.githubusercontent.com/avluis/Hentoid/dev/app/"'
7059

71-
proguardFile 'proguard-rules-debug.pro'
60+
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro', 'proguard-rules-debug.pro'
7261

73-
// Library specific proguard files
62+
// Library-specific proguard files
7463
proguardFiles fileTree(dir: '../.proguard', include: ['*.pro']).asList().toArray()
7564
}
7665
release {
@@ -79,10 +68,10 @@ android {
7968

8069
buildConfigField 'String', 'UPDATE_URL', '"https://raw.githubusercontent.com/avluis/Hentoid/master/app/"'
8170

82-
proguardFile 'proguard-rules-release.pro'
71+
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro', 'proguard-rules-release.pro'
8372
testProguardFile 'proguard-rules-test.pro'
8473

85-
// Library specific proguard files
74+
// Library-specific proguard files
8675
proguardFiles fileTree(dir: '../.proguard', include: ['*.pro']).asList().toArray()
8776
}
8877
}
@@ -122,11 +111,11 @@ dependencies {
122111
* TESTING
123112
*/
124113
testImplementation 'junit:junit:4.13.2'
125-
testImplementation 'org.mockito:mockito-core:5.19.0'
114+
testImplementation 'org.mockito:mockito-core:5.21.0'
126115
testImplementation 'androidx.test:core:1.7.0'
127116
testImplementation 'io.kotlintest:kotlintest-assertions:3.4.2'
128117
testImplementation 'androidx.arch.core:core-testing:2.2.0'
129-
testImplementation 'org.robolectric:robolectric:4.15.1'
118+
testImplementation 'org.robolectric:robolectric:4.16.1'
130119
// Auto Timber trees that redirect logs to the JUnit output
131120
testImplementation 'net.lachlanmckee:timber-junit-rule:1.0.1'
132121
androidTestImplementation 'androidx.test:runner:1.7.0'
@@ -149,9 +138,9 @@ dependencies {
149138
implementation 'androidx.viewpager2:viewpager2:1.1.0'
150139
implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.10.2'
151140
implementation 'androidx.core:core-ktx:1.17.0'
152-
implementation 'androidx.webkit:webkit:1.14.0'
141+
implementation 'androidx.webkit:webkit:1.15.0'
153142

154-
def android_work_version = '2.11.0'
143+
def android_work_version = '2.11.1'
155144
implementation "androidx.work:work-runtime:$android_work_version"
156145
implementation "androidx.work:work-runtime-ktx:$android_work_version"
157146

@@ -184,7 +173,7 @@ dependencies {
184173
implementation "com.github.penfeizhou.android.animation:avif:$APNG4Android_version"
185174

186175
// Animated GIF creator -> https://github.com/shaksternano/gif.kt
187-
implementation("com.shakster:gifkt:0.3.0")
176+
implementation("com.shakster:gifkt:0.3.1")
188177

189178
// PDF creator/extractor
190179
implementation 'com.itextpdf:itext7-core:8.0.5'
@@ -210,7 +199,7 @@ dependencies {
210199
implementation 'com.github.AppIntro:AppIntro:6.1.0'
211200

212201
// Tooltips
213-
implementation 'com.github.skydoves:balloon:1.6.13'
202+
implementation 'com.github.skydoves:balloon:1.7.3'
214203

215204
// Popup menus with icons
216205
implementation 'com.github.skydoves:powermenu:2.2.4'
@@ -251,15 +240,15 @@ dependencies {
251240
implementation "pl.droidsonroids:jspoon:1.3.3"
252241

253242
// JSOUP HTML parser: github.com/jhy/jsoup
254-
implementation 'org.jsoup:jsoup:1.21.2'
243+
implementation 'org.jsoup:jsoup:1.22.1'
255244

256245
// https://github.com/square/retrofit
257246
def retrofit_version = '3.0.0'
258247
implementation "com.squareup.retrofit2:retrofit:$retrofit_version"
259248
implementation "com.squareup.retrofit2:converter-moshi:$retrofit_version"
260249

261250
// Download speed limit
262-
implementation 'com.bucket4j:bucket4j_jdk17-core:8.16.0'
251+
implementation 'com.bucket4j:bucket4j_jdk17-core:8.16.1'
263252

264253
// TLS v1.3 support for Android <= 9
265254
implementation 'org.conscrypt:conscrypt-android:2.5.3'
@@ -270,7 +259,7 @@ dependencies {
270259

271260
// ObjectBox browser dependencies must be set before applying ObjectBox plugin so it does not add objectbox-android
272261
// (would result in two conflicting versions, e.g. "Duplicate files copied in APK lib/armeabi-v7a/libobjectbox.so").
273-
def objectbox_version = "5.0.1"
262+
def objectbox_version = "5.1.0"
274263
if (includeObjectBoxBrowser.toBoolean()) {
275264
debugImplementation "io.objectbox:objectbox-android-objectbrowser:$objectbox_version"
276265
releaseImplementation "io.objectbox:objectbox-android:$objectbox_version"
@@ -288,7 +277,7 @@ dependencies {
288277
}
289278

290279
// https://mvnrepository.com/artifact/org.apache.commons/commons-text/
291-
implementation 'org.apache.commons:commons-text:1.14.0'
280+
implementation 'org.apache.commons:commons-text:1.15.0'
292281

293282
// Archive management
294283
implementation 'com.github.omicronapps:7-Zip-JBinding-4Android:Release-16.02-2.03'
@@ -297,19 +286,19 @@ dependencies {
297286
implementation 'net.grey-panther:natural-comparator:1.1'
298287

299288
// Efficient hashing
300-
implementation 'io.whitfin:siphash:2.0.0'
289+
implementation 'io.whitfin:siphash:3.0.0'
301290

302291
// Sentence similarity detection
303292
implementation 'info.debatty:java-string-similarity:2.0.0'
304293

305294
// Biometrics
306-
implementation 'dev.skomlach:biometric:2.3.4'
295+
implementation 'dev.skomlach:biometric:2.3.5'
307296

308297
// Searchable prefs
309298
implementation 'com.github.ByteHamster:SearchPreference:2.7.3'
310299

311300
// Automated generation of the Licenses screen
312-
def about_version = '8.9.4'
301+
def about_version = '13.2.1'
313302
implementation "com.mikepenz:aboutlibraries-core:$about_version"
314303
implementation "com.mikepenz:aboutlibraries:$about_version"
315304

@@ -318,7 +307,7 @@ dependencies {
318307
* ANALYTICS
319308
*/
320309
// Import the BoM for the Firebase platform
321-
implementation platform('com.google.firebase:firebase-bom:34.6.0')
310+
implementation platform('com.google.firebase:firebase-bom:34.9.0')
322311

323312
// Crashlytics
324313
implementation 'com.google.firebase:firebase-crashlytics'
@@ -336,6 +325,59 @@ sonarqube {
336325
property "sonar.login", "3d0dc80792bad95f0193e7ed626cf090ac83e208"
337326
}
338327
}
328+
/*
329+
aboutLibraries {
330+
collect {
331+
// Define the path configuration files are located in. E.g. additional libraries, licenses to add to the target .json
332+
// Warning: Please do not use the parent folder of a module as path, as this can result in issues. More details: https://github.com/mikepenz/AboutLibraries/issues/936
333+
// The path provided is relative to the modules path (not project root)
334+
configPath = file("../config")
335+
336+
// Enable fetching of "remote" licenses. Uses the API of supported source hosts
337+
// See https://github.com/mikepenz/AboutLibraries#special-repository-support
338+
// A `gitHubApiToken` is required for this to work as it fetches information from GitHub's API.
339+
fetchRemoteLicense = false
340+
341+
// Enables fetching of "remote" funding information. Uses the API of supported source hosts
342+
// See https://github.com/mikepenz/AboutLibraries#special-repository-support
343+
// A `gitHubApiToken` is required for this to work as it fetches information from GitHub's API.
344+
fetchRemoteFunding = false
345+
346+
// Allows to only collect dependencies of specific variants during the `collectDependencies` step.
347+
// filterVariants.addAll("debug", "release")
348+
349+
// Enable inclusion of `platform` dependencies in the library report
350+
includePlatform = true
351+
}
352+
353+
license {
354+
// Define the strict mode, will fail if the project uses licenses not allowed
355+
// - This will only automatically fail for Android projects using the Android-specific plugin (com.mikepenz.aboutlibraries.plugin.android)
356+
// For other projects, execute `exportLibraryDefinitions` manually
357+
strictMode = com.mikepenz.aboutlibraries.plugin.StrictMode.FAIL
358+
359+
// Allowed set of licenses, this project will be able to use without build failure
360+
allowedLicenses.addAll("Apache-2.0", "asdkl")
361+
362+
// Allowed set of licenses for specific dependencies, this project will be able to use without build failure
363+
allowedLicensesMap = mapOf(
364+
"asdkl" to listOf("androidx.jetpack.library"),
365+
"NOASSERTION" to listOf("org.jetbrains.kotlinx"),
366+
)
367+
368+
// Full license text for license IDs mentioned here will be included, even if no detected dependency uses them.
369+
// additionalLicenses.addAll("mit", "mpl_2_0")
370+
}
371+
372+
library {
373+
// Enable the duplication mode, allows to merge, or link dependencies which relate
374+
duplicationMode = com.mikepenz.aboutlibraries.plugin.DuplicateMode.MERGE
375+
// Configure the duplication rule, to match "duplicates" with
376+
duplicationRule = com.mikepenz.aboutlibraries.plugin.DuplicateRule.SIMPLE
377+
}
378+
}
379+
380+
*/
339381

340-
apply plugin: 'io.objectbox'
341-
apply plugin: 'org.jetbrains.kotlin.android'// apply last
382+
apply plugin: 'com.android.legacy-kapt'
383+
apply plugin: 'io.objectbox'

app/customssiv/build.gradle

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
11
import org.jetbrains.kotlin.gradle.dsl.JvmTarget
22

33
apply plugin: 'com.android.library'
4-
apply plugin: 'kotlin-android'
5-
apply plugin: 'org.jetbrains.kotlin.android'
64

75
kotlin {
86
compilerOptions {
@@ -32,7 +30,12 @@ android {
3230
}
3331
}
3432
namespace = 'me.devsaki.hentoid.customssiv'
35-
33+
lint {
34+
targetSdk 36
35+
}
36+
testOptions {
37+
targetSdk 36
38+
}
3639
}
3740

3841
dependencies {

app/customssiv/src/main/java/me/devsaki/hentoid/customssiv/decoder/SkiaPooledImageRegionDecoder.kt

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -59,16 +59,6 @@ internal class SkiaPooledImageRegionDecoder(private val bitmapConfig: Bitmap.Con
5959
private val imageDimensions = Point(0, 0)
6060
private val lazyInited = AtomicBoolean(false)
6161

62-
/**
63-
* Controls logging of debug messages. All instances are affected.
64-
*
65-
* @param debug true to enable debug logging, false to disable.
66-
*/
67-
@Keep
68-
@Suppress("unused")
69-
fun setDebug(debug: Boolean) {
70-
this.debug = debug
71-
}
7262

7363
/**
7464
* Initialises the decoder pool. This method creates one decoder on the current thread and uses

app/gles-renderer/build.gradle

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ import org.jetbrains.kotlin.gradle.dsl.JvmTarget
22

33
plugins {
44
id 'com.android.library'
5-
id 'org.jetbrains.kotlin.android'
65
}
76

87
kotlin {
@@ -17,7 +16,7 @@ android {
1716

1817
defaultConfig {
1918
minSdk = 26
20-
targetSdk = 36
19+
targetSdkVersion 36
2120

2221
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
2322
consumerProguardFiles "consumer-rules.pro"
@@ -33,6 +32,12 @@ android {
3332
sourceCompatibility JavaVersion.VERSION_17
3433
targetCompatibility JavaVersion.VERSION_17
3534
}
35+
lint {
36+
targetSdk 36
37+
}
38+
testOptions {
39+
targetSdk 36
40+
}
3641
}
3742

3843
dependencies {

0 commit comments

Comments
 (0)