Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
17 commits
Select commit Hold shift + click to select a range
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
78 changes: 38 additions & 40 deletions app/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,17 +1,16 @@
import com.android.build.api.variant.FilterConfiguration
import org.jetbrains.kotlin.gradle.dsl.JvmTarget
import org.jetbrains.kotlin.gradle.dsl.KotlinVersion
import java.util.Properties
import java.io.FileInputStream
import java.util.Properties
import java.lang.reflect.Method

plugins {
id("com.android.application")
id("com.google.devtools.ksp")
alias(libs.plugins.androidApplication)
alias(libs.plugins.ksp)
// rethink-tv fork: Compose Compiler plugin for the `tv` flavor's
// Compose-for-TV UI. Safe to apply project-wide — phone variants
// contain no @Composable and the plugin then no-ops.
id("org.jetbrains.kotlin.plugin.compose")
alias(libs.plugins.kotlinCompose)
// To generate a BOM in CycloneDX format:
// ./gradlew cyclonedxBom
// id("org.cyclonedx.bom") version "3.2.4"
Expand Down Expand Up @@ -91,7 +90,7 @@ logger.info("gradle alphaBuild? $alphaBuild, should split? $shouldSplit")
if (!deGoogled) {
apply(plugin = "com.google.gms.google-services")
apply(plugin = "com.google.firebase.crashlytics")
logger.info("app firebase plugins applied")
logger.warn("app firebase plugins applied")
} else {
logger.info("app firebase plugins SKIPPED (non-play build)")
}
Expand All @@ -114,24 +113,24 @@ val gitVersion = providers.exec {
}.standardOutput.asText.get().trim()

fun getVersionCode(): Int {
var code = 0
try {
val envCode = System.getenv("VERSION_CODE")
if (!envCode.isNullOrEmpty()) {
code = envCode.toInt()
logger.info("env version code: $code")
}
} catch (ex: NumberFormatException) {
logger.info("missing env version code: ${ex.message}")
val envVersionCode = System.getenv("VERSION_CODE")
if (envVersionCode == null) {
logger.info("missing env version code")
}
if (code == 0) {
code = project.properties["VERSION_CODE"]?.toString()?.toIntOrNull() ?: 0
logger.info("project properties version code: $code")
}
return code
val versionCodeValue = envVersionCode
?: project.providers.gradleProperty("VERSION_CODE").orNull
?: throw GradleException(
"VERSION_CODE is missing. Set it in the environment or as a Gradle property; it must be a positive integer."
)

return versionCodeValue.toIntOrNull()?.takeIf { it > 0 }
?: throw GradleException(
"Invalid VERSION_CODE '$versionCodeValue': expected a positive integer greater than zero."
)
}

val appVersionCode = getVersionCode()
logger.info("version code: $appVersionCode")

try {
if (keystorePropertiesFile.exists()) {
Expand All @@ -157,14 +156,14 @@ val hasTvReleaseSigningConfig =
.all { value -> !value.isNullOrEmpty() }

android {
compileSdk = 37
compileSdk = libs.versions.android.compileSdk.get().toInt()
// https://developer.android.com/studio/build/configure-app-module
namespace = "com.celzero.bravedns"

defaultConfig {
applicationId = "com.celzero.bravedns"
minSdk = 23
targetSdk = 37
minSdk = libs.versions.android.minSdk.get().toInt()
targetSdk = libs.versions.android.targetSdk.get().toInt()
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
// Defaults to false; the fdroid flavor overrides it via -PwebsiteDegoogled=true.
buildConfigField("boolean", "IS_WEBSITE_DEGOOGLD_BUILD", "false")
Expand Down Expand Up @@ -206,10 +205,10 @@ android {
splits {
abi {
if (!shouldSplit) {
logger.info("universal apk only (splits disabled)")
logger.warn("universal apk only (splits disabled)")
isEnable = false
} else {
logger.info("split apks and universal apk (splits enabled)")
logger.warn("split apks and universal apk (splits enabled)")
isEnable = true
reset()
// comma-separated list of ABIs to generate apks for
Expand All @@ -221,7 +220,7 @@ android {
}

buildTypes {
getByName("release") {
release {
// AGP 9.3 DSL: enables both code and resource optimization and
// includes the default Android keep rules (equivalent to
// proguard-android-optimize.txt, which the webview removal in #352
Expand Down Expand Up @@ -265,11 +264,11 @@ android {
applicationIdSuffix = ".izzy"
}
}
create("leakCanary") {
register("leakCanary") {
matchingFallbacks += listOf("debug")
initWith(getByName("debug"))
}
create("alpha") {
register("alpha") {
// archive.is/y8uCB
applicationIdSuffix = ".alpha"
optimization {
Expand All @@ -279,7 +278,7 @@ android {
.takeIf { !System.getenv("ALPHA_KS_FILE").isNullOrEmpty() }
resValue("string", "app_name", "Rethink(α)")
}
create("releaseDebug") {
register("releaseDebug") {
initWith(getByName("release"))
// set explicitly; initWith may not copy the optimization block
optimization {
Expand Down Expand Up @@ -352,15 +351,15 @@ android {
// getPackageInfo().versionCode not returning the correct value (in prod builds) when
// value is set in AndroidManifest.xml so setting it here
// for build type alpha, versionCode is set in env overriding gradle.properties
versionCode = getVersionCode()
versionCode = appVersionCode
versionName = gitVersion
buildConfigField("int", "BASE_VERSION_CODE", appVersionCode.toString())
vectorDrawables.useSupportLibrary = true
}
create("tv") {
dimension = "releaseType"
applicationIdSuffix = ".tv"
versionCode = getVersionCode()
versionCode = appVersionCode
versionName = gitVersion
buildConfigField("int", "BASE_VERSION_CODE", appVersionCode.toString())
vectorDrawables.useSupportLibrary = true
Expand Down Expand Up @@ -389,16 +388,17 @@ android {
storePassword = tvKsStorePassphrase
}
buildTypes.getByName("release").signingConfig = tvRelease
println("rethink-tv: TV_RELEASE_KS_* env vars detected; 'release' build type will be signed with signingConfigs.tvRelease")
logger.warn("rethink-tv: TV_RELEASE_KS_* env vars detected; 'release' build type will be signed with signingConfigs.tvRelease")
} else {
println("rethink-tv: TV_RELEASE_KS_* env vars NOT set; using the configured release signing config")
logger.warn("rethink-tv: TV_RELEASE_KS_* env vars NOT set; using the configured release signing config")
}
}

kotlin {
compilerOptions {
languageVersion.set(KotlinVersion.KOTLIN_2_3)
jvmTarget.set(JvmTarget.JVM_17)
languageVersion.set(
KotlinVersion.fromVersion(libs.versions.kotlin.get().substringBeforeLast("."))
)
freeCompilerArgs.addAll("-Xwarning-level=SENSELESS_COMPARISON:disabled")
}
}
Expand Down Expand Up @@ -435,7 +435,7 @@ androidComponents {
}
}

val download by configurations.creating {
val download = configurations.create("download") {
isTransitive = false
}

Expand Down Expand Up @@ -518,8 +518,7 @@ dependencies {
implementation(libs.huAutsoftKrate)

// viewBinding without reflection
"fullImplementation"(libs.githubKirich1409Viewbindingpropertydelegate)
"fullImplementation"(libs.githubKirich1409ViewbindingpropertydelegateNoreflection)
"fullImplementation"(libs.devAndroidbroadcastVbpd)

// add ":debug" suffix to the dependency to include debug symbols
download(firestackDependency())
Expand Down Expand Up @@ -604,8 +603,7 @@ dependencies {
"tvImplementation"(libs.githubBumptechGlideOkhttp3Integration) { exclude(group = "glide-parent") }
"kspTv"(libs.githubBumptechGlideCompilerTv)
"tvImplementation"(libs.facebookShimmerShimmer)
"tvImplementation"(libs.githubKirich1409Viewbindingpropertydelegate)
"tvImplementation"(libs.githubKirich1409ViewbindingpropertydelegateNoreflection)
"tvImplementation"(libs.devAndroidbroadcastVbpd)
"tvImplementation"(libs.androidxNavigationNavigationFragmentKtx)
"tvImplementation"(libs.androidxNavigationNavigationUiKtx)
"tvImplementation"(libs.androidxBiometricBiometric)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,10 +19,10 @@ import android.os.Bundle
import android.view.View
import androidx.core.view.isVisible
import androidx.fragment.app.Fragment
import by.kirich1409.viewbindingdelegate.viewBinding
import com.celzero.bravedns.R
import com.celzero.bravedns.databinding.FragmentRethinkPlusBinding
import com.celzero.bravedns.util.SnackbarHelper.capitalizeWords
import dev.androidbroadcast.vbpd.viewBinding

/**
* F-Droid flavour, Rethink+ is not yet available on F-Droid.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,6 @@ import androidx.fragment.app.Fragment
import androidx.lifecycle.Lifecycle
import androidx.lifecycle.lifecycleScope
import androidx.lifecycle.repeatOnLifecycle
import by.kirich1409.viewbindingdelegate.viewBinding
import com.celzero.bravedns.R
import com.celzero.bravedns.databinding.FragmentSponsorBinding
import com.celzero.bravedns.sponsor.billing.SponsorPurchaseResult
Expand All @@ -31,6 +30,7 @@ import com.celzero.bravedns.sponsor.viewmodel.SponsorViewModel
import com.celzero.bravedns.util.Constants.Companion.RETHINKDNS_SPONSOR_LINK
import com.celzero.bravedns.util.UIUtils.openUrl
import com.celzero.bravedns.util.Utilities
import dev.androidbroadcast.vbpd.viewBinding
import kotlinx.coroutines.launch
import org.koin.android.ext.android.inject

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,9 +18,9 @@ package com.celzero.bravedns.sponsor.ui
import android.os.Bundle
import android.view.View
import androidx.fragment.app.Fragment
import by.kirich1409.viewbindingdelegate.viewBinding
import com.celzero.bravedns.R
import com.celzero.bravedns.databinding.FragmentSponsorSuccessBinding
import dev.androidbroadcast.vbpd.viewBinding

class SponsorSuccessFragment : Fragment(R.layout.fragment_sponsor_success) {

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,6 @@ import android.os.Bundle
import android.view.View
import android.widget.SeekBar
import androidx.core.view.WindowInsetsControllerCompat
import by.kirich1409.viewbindingdelegate.viewBinding
import com.celzero.bravedns.R
import com.celzero.bravedns.RethinkDnsApplication.Companion.DEBUG
import com.celzero.bravedns.data.AppConfig
Expand All @@ -37,6 +36,7 @@ import com.celzero.bravedns.util.Themes
import com.celzero.bravedns.util.Utilities.isAtleastQ
import com.celzero.bravedns.util.handleFrostEffectIfNeeded
import com.google.android.material.dialog.MaterialAlertDialogBuilder
import dev.androidbroadcast.vbpd.viewBinding
import org.koin.android.ext.android.inject

class AdvancedSettingActivity : BaseActivity(R.layout.activity_advanced_setting) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,16 +15,14 @@
*/
package com.celzero.bravedns.ui.activity

import com.celzero.bravedns.util.Logger
import com.celzero.bravedns.util.Logger.LOG_TAG_FIREWALL
import android.content.Context
import android.content.res.Configuration
import android.os.Bundle
import android.view.View
import android.widget.CompoundButton
import android.widget.Toast
import androidx.core.view.WindowInsetsControllerCompat
import by.kirich1409.viewbindingdelegate.viewBinding
import androidx.core.view.isVisible
import com.celzero.bravedns.R
import com.celzero.bravedns.database.EventSource
import com.celzero.bravedns.database.EventType
Expand All @@ -33,14 +31,16 @@ import com.celzero.bravedns.databinding.ActivityAntiCensorshipBinding
import com.celzero.bravedns.service.EventLogger
import com.celzero.bravedns.service.PersistentState
import com.celzero.bravedns.ui.BaseActivity
import com.celzero.bravedns.util.Logger
import com.celzero.bravedns.util.Logger.LOG_TAG_FIREWALL
import com.celzero.bravedns.util.Themes
import com.celzero.bravedns.util.Utilities
import com.celzero.bravedns.util.Utilities.isAtleastQ
import com.celzero.bravedns.util.Utilities.isOsVersionAbove412
import com.celzero.bravedns.util.handleFrostEffectIfNeeded
import com.celzero.firestack.settings.Settings
import dev.androidbroadcast.vbpd.viewBinding
import org.koin.android.ext.android.inject
import androidx.core.view.isVisible
import com.celzero.bravedns.util.SnackbarHelper.applySystemBarEdgeInsets

class AntiCensorshipActivity : BaseActivity(R.layout.activity_anti_censorship) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,6 @@
*/
package com.celzero.bravedns.ui.activity

import com.celzero.bravedns.util.Logger
import com.celzero.bravedns.util.Logger.LOG_TAG_UI
import android.content.Context
import android.content.DialogInterface
import android.content.Intent
Expand Down Expand Up @@ -52,7 +50,6 @@ import androidx.paging.PagingData
import androidx.paging.PagingDataAdapter
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
import by.kirich1409.viewbindingdelegate.viewBinding
import com.bumptech.glide.Glide
import com.celzero.bravedns.R
import com.celzero.bravedns.adapter.AppWiseCountriesAdapter
Expand All @@ -76,17 +73,19 @@ import com.celzero.bravedns.service.ProxyManager
import com.celzero.bravedns.service.ProxyManager.ID_NONE
import com.celzero.bravedns.service.VpnController
import com.celzero.bravedns.ui.BaseActivity
import com.celzero.bravedns.ui.activity.AppInfoActivity.Companion.TOP_SLICES
import com.celzero.bravedns.ui.custom.DonutChartView
import com.celzero.bravedns.ui.fragment.SummaryStatisticsFragment
import com.celzero.bravedns.ui.stats.CountryInsightsMapper
import com.celzero.bravedns.ui.stats.StatsInsightsMath
import com.celzero.bravedns.ui.stats.StatsViewMode
import com.celzero.bravedns.viewmodel.SummaryStatisticsViewModel
import com.celzero.bravedns.util.Constants
import com.celzero.bravedns.util.Constants.Companion.INVALID_UID
import com.celzero.bravedns.util.Constants.Companion.RETHINK_PACKAGE
import com.celzero.bravedns.util.Constants.Companion.VIEW_PAGER_SCREEN_TO_LOAD
import com.celzero.bravedns.util.SnackbarHelper.applySystemBarEdgeInsets
import com.celzero.bravedns.util.Logger
import com.celzero.bravedns.util.Logger.LOG_TAG_UI
import com.celzero.bravedns.util.Themes
import com.celzero.bravedns.util.UIUtils
import com.celzero.bravedns.util.UIUtils.getCountryNameFromFlag
Expand All @@ -101,10 +100,12 @@ import com.celzero.bravedns.viewmodel.AppConnectionsViewModel
import com.celzero.bravedns.viewmodel.AppInfoViewModel
import com.celzero.bravedns.viewmodel.CustomDomainViewModel
import com.celzero.bravedns.viewmodel.CustomIpViewModel
import com.celzero.bravedns.viewmodel.SummaryStatisticsViewModel
import com.celzero.firestack.backend.Backend
import com.google.android.material.button.MaterialButton
import com.google.android.material.button.MaterialButtonToggleGroup
import com.google.android.material.dialog.MaterialAlertDialogBuilder
import dev.androidbroadcast.vbpd.viewBinding
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.Job
import kotlinx.coroutines.launch
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,16 +29,14 @@ import android.view.animation.Animation
import android.view.animation.RotateAnimation
import android.widget.CompoundButton
import android.widget.Toast
import androidx.appcompat.app.AlertDialog
import androidx.appcompat.widget.SearchView
import androidx.appcompat.widget.TooltipCompat
import androidx.core.content.ContextCompat
import androidx.core.view.WindowInsetsControllerCompat
import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.lifecycleScope
import androidx.paging.LoadState
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
import by.kirich1409.viewbindingdelegate.viewBinding
import com.celzero.bravedns.R
import com.celzero.bravedns.adapter.FirewallAppListAdapter
import com.celzero.bravedns.database.EventSource
Expand All @@ -59,6 +57,7 @@ import com.celzero.bravedns.util.SnackbarHelper.applyTopInsetOnly
import com.celzero.bravedns.viewmodel.AppInfoViewModel
import com.google.android.material.chip.Chip
import com.google.android.material.dialog.MaterialAlertDialogBuilder
import dev.androidbroadcast.vbpd.viewBinding
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.FlowPreview
import kotlinx.coroutines.flow.MutableStateFlow
Expand All @@ -67,7 +66,6 @@ import kotlinx.coroutines.flow.distinctUntilChanged
import kotlinx.coroutines.launch
import org.koin.android.ext.android.inject
import org.koin.androidx.viewmodel.ext.android.viewModel
import androidx.paging.LoadState
import com.celzero.bravedns.util.SnackbarHelper.applySystemBarEdgeInsets

class AppListActivity :
Expand Down
Loading
Loading