Repo cloned
This commit is contained in:
commit
496ae75f58
7988 changed files with 1451097 additions and 0 deletions
10
app/.tx/config
Normal file
10
app/.tx/config
Normal file
|
|
@ -0,0 +1,10 @@
|
|||
[main]
|
||||
host = https://www.transifex.com
|
||||
lang_map = da_DK:da-rDK,fil:tl,he:iw,id:in,kn_IN:kn-rIN,pa_PK:pa-rPK,pt_BR:pt-rBR,pt_PT:pt,qu_EC:qu-rEC,sv_SE:sv-rSE,zh_CN:zh-rCN,zh_HK:zh-rHK,zh_TW:zh-rTW
|
||||
|
||||
[signal-android.master]
|
||||
file_filter = src/main/res/values-<lang>/strings.xml
|
||||
source_file = src/main/res/values/strings.xml
|
||||
source_lang = en
|
||||
type = ANDROID
|
||||
|
||||
666
app/build.gradle.kts
Normal file
666
app/build.gradle.kts
Normal file
|
|
@ -0,0 +1,666 @@
|
|||
plugins {
|
||||
alias(libs.plugins.android.application)
|
||||
alias(libs.plugins.jetbrains.kotlin.android)
|
||||
alias(libs.plugins.compose.compiler)
|
||||
alias(libs.plugins.kotlinx.serialization)
|
||||
alias(libs.plugins.licensee)
|
||||
id("androidx.navigation.safeargs")
|
||||
id("kotlin-parcelize")
|
||||
id("com.squareup.wire")
|
||||
id("molly")
|
||||
}
|
||||
|
||||
val canonicalVersionCode = 1633
|
||||
val canonicalVersionName = "7.68.5"
|
||||
val currentHotfixVersion = 0
|
||||
val maxHotfixVersions = 100
|
||||
val mollyRevision = 1
|
||||
|
||||
// MOLLY: Use default debug keystore generated by Android Studio at $HOME/.android/debug.keystore
|
||||
|
||||
val selectableVariants = listOf(
|
||||
"prodWebsiteDebug",
|
||||
"prodWebsiteRelease",
|
||||
"prodStoreDebug",
|
||||
"prodStoreRelease",
|
||||
"prodWebsiteInstrumentation",
|
||||
"stagingWebsiteDebug",
|
||||
"stagingWebsiteRelease",
|
||||
)
|
||||
|
||||
val signalBuildToolsVersion: String by rootProject.extra
|
||||
val signalCompileSdkVersion: String by rootProject.extra
|
||||
val signalTargetSdkVersion: Int by rootProject.extra
|
||||
val signalMinSdkVersion: Int by rootProject.extra
|
||||
val signalNdkVersion: String by rootProject.extra
|
||||
val signalJavaVersion: JavaVersion by rootProject.extra
|
||||
val signalKotlinJvmTarget: String by rootProject.extra
|
||||
|
||||
// Override build config via env vars when project property 'CI' is set
|
||||
val ciEnabled = project.hasProperty("CI")
|
||||
|
||||
val baseAppTitle = getCiEnv("CI_APP_TITLE") ?: properties["baseAppTitle"] as String
|
||||
val baseAppFileName = getCiEnv("CI_APP_FILENAME") ?: properties["baseAppFileName"] as String
|
||||
val basePackageId = getCiEnv("CI_PACKAGE_ID") ?: properties["basePackageId"] as String
|
||||
val buildVariants = getCiEnv("CI_BUILD_VARIANTS") ?: properties["buildVariants"] as String
|
||||
val forceInternalUserFlag = getCiEnv("CI_FORCE_INTERNAL_USER_FLAG") ?: properties["forceInternalUserFlag"] as String
|
||||
|
||||
fun getCiEnv(name: String) = if (ciEnabled) System.getenv(name).takeUnless { it.isNullOrBlank() } else null
|
||||
|
||||
wire {
|
||||
kotlin {
|
||||
javaInterop = true
|
||||
}
|
||||
|
||||
sourcePath {
|
||||
srcDir("src/main/protowire")
|
||||
}
|
||||
|
||||
protoPath {
|
||||
srcDir("${project.rootDir}/libsignal-service/src/main/protowire")
|
||||
}
|
||||
// Handled by libsignal
|
||||
prune("signalservice.DecryptionErrorMessage")
|
||||
}
|
||||
|
||||
android {
|
||||
namespace = "org.thoughtcrime.securesms"
|
||||
|
||||
buildToolsVersion = signalBuildToolsVersion
|
||||
compileSdkVersion = signalCompileSdkVersion
|
||||
ndkVersion = signalNdkVersion
|
||||
|
||||
flavorDimensions += listOf("environment", "distribution")
|
||||
testBuildType = "instrumentation"
|
||||
|
||||
android.bundle.language.enableSplit = false
|
||||
|
||||
kotlinOptions {
|
||||
jvmTarget = signalKotlinJvmTarget
|
||||
freeCompilerArgs = listOf("-Xjvm-default=all")
|
||||
suppressWarnings = true
|
||||
}
|
||||
|
||||
signingConfigs {
|
||||
System.getenv("CI_KEYSTORE_PATH")?.let { path ->
|
||||
create("ci") {
|
||||
println("Signing release build with keystore: '$path'")
|
||||
storeFile = file(path)
|
||||
storePassword = System.getenv("CI_KEYSTORE_PASSWORD")
|
||||
keyAlias = System.getenv("CI_KEYSTORE_ALIAS")
|
||||
keyPassword = System.getenv("CI_KEYSTORE_PASSWORD")
|
||||
enableV4Signing = false
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
testOptions {
|
||||
execution = "ANDROIDX_TEST_ORCHESTRATOR"
|
||||
|
||||
unitTests {
|
||||
isIncludeAndroidResources = true
|
||||
}
|
||||
}
|
||||
|
||||
sourceSets {
|
||||
getByName("test") {
|
||||
java.srcDir("$projectDir/src/testShared")
|
||||
}
|
||||
|
||||
getByName("androidTest") {
|
||||
java.srcDir("$projectDir/src/testShared")
|
||||
}
|
||||
}
|
||||
|
||||
compileOptions {
|
||||
isCoreLibraryDesugaringEnabled = true
|
||||
sourceCompatibility = signalJavaVersion
|
||||
targetCompatibility = signalJavaVersion
|
||||
}
|
||||
|
||||
packaging {
|
||||
jniLibs {
|
||||
excludes += setOf(
|
||||
"**/*.dylib",
|
||||
"**/*.dll"
|
||||
)
|
||||
// MOLLY: Compress native libs by default as APK is not split on ABIs
|
||||
useLegacyPackaging = true
|
||||
}
|
||||
resources {
|
||||
excludes += setOf(
|
||||
"LICENSE.txt",
|
||||
"LICENSE",
|
||||
"NOTICE",
|
||||
"asm-license.txt",
|
||||
"META-INF/LICENSE",
|
||||
"META-INF/LICENSE.md",
|
||||
"META-INF/NOTICE",
|
||||
"META-INF/LICENSE-notice.md",
|
||||
"META-INF/proguard/androidx-annotations.pro",
|
||||
"**/*.dylib",
|
||||
"**/*.dll"
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
buildFeatures {
|
||||
buildConfig = true
|
||||
viewBinding = true
|
||||
compose = true
|
||||
}
|
||||
|
||||
composeOptions {
|
||||
kotlinCompilerExtensionVersion = "1.5.4"
|
||||
}
|
||||
|
||||
if (mollyRevision < 0 || currentHotfixVersion < 0 || (mollyRevision + currentHotfixVersion) >= maxHotfixVersions) {
|
||||
throw GradleException("Molly revision $mollyRevision or Hotfix version $currentHotfixVersion out of range")
|
||||
}
|
||||
|
||||
defaultConfig {
|
||||
val sourceVersionNameWithRevision = "${canonicalVersionName}-${mollyRevision}"
|
||||
|
||||
versionCode = (canonicalVersionCode * maxHotfixVersions) + mollyRevision + currentHotfixVersion
|
||||
versionName = if (ciEnabled) getCommitTag() else sourceVersionNameWithRevision
|
||||
|
||||
minSdk = signalMinSdkVersion
|
||||
targetSdk = signalTargetSdkVersion
|
||||
|
||||
applicationId = basePackageId
|
||||
|
||||
buildConfigField("String", "SIGNAL_PACKAGE_NAME", "\"org.thoughtcrime.securesms\"")
|
||||
buildConfigField("String", "SIGNAL_CANONICAL_VERSION_NAME", "\"$canonicalVersionName\"")
|
||||
buildConfigField("int", "SIGNAL_CANONICAL_VERSION_CODE", "$canonicalVersionCode")
|
||||
buildConfigField("String", "BACKUP_FILENAME", "\"${baseAppFileName.lowercase()}\"")
|
||||
buildConfigField("boolean", "FORCE_INTERNAL_USER_FLAG", forceInternalUserFlag)
|
||||
buildConfigField("String", "FDROID_UPDATE_URL", "\"https://molly.im/fdroid/repo\"")
|
||||
|
||||
vectorDrawables.useSupportLibrary = true
|
||||
|
||||
// MOLLY: BUILD_TIMESTAMP may be zero in debug builds.
|
||||
buildConfigField("long", "BUILD_OR_ZERO_TIMESTAMP", getLastCommitTimestamp() + "L")
|
||||
buildConfigField("String", "GIT_HASH", "\"${getGitHash()}\"")
|
||||
// MOLLY: Ensure to add any new URLs to SignalServiceNetworkAccess.HOSTNAMES list
|
||||
buildConfigField("String", "SIGNAL_URL", "\"https://chat.signal.org\"")
|
||||
buildConfigField("String", "STORAGE_URL", "\"https://storage.signal.org\"")
|
||||
buildConfigField("String", "SIGNAL_CDN_URL", "\"https://cdn.signal.org\"")
|
||||
buildConfigField("String", "SIGNAL_CDN2_URL", "\"https://cdn2.signal.org\"")
|
||||
buildConfigField("String", "SIGNAL_CDN3_URL", "\"https://cdn3.signal.org\"")
|
||||
buildConfigField("String", "SIGNAL_CDSI_URL", "\"https://cdsi.signal.org\"")
|
||||
buildConfigField("String", "SIGNAL_SERVICE_STATUS_URL", "\"uptime.signal.org\"")
|
||||
buildConfigField("String", "SIGNAL_SVR2_URL", "\"https://svr2.signal.org\"")
|
||||
buildConfigField("String", "SIGNAL_SFU_URL", "\"https://sfu.voip.signal.org\"")
|
||||
buildConfigField("String", "SIGNAL_STAGING_SFU_URL", "\"https://sfu.staging.voip.signal.org\"")
|
||||
buildConfigField("String[]", "SIGNAL_SFU_INTERNAL_NAMES", "new String[]{\"Test\", \"Staging\", \"Development\"}")
|
||||
buildConfigField("String[]", "SIGNAL_SFU_INTERNAL_URLS", "new String[]{\"https://sfu.test.voip.signal.org\", \"https://sfu.staging.voip.signal.org\", \"https://sfu.staging.test.voip.signal.org\"}")
|
||||
buildConfigField("String", "CONTENT_PROXY_HOST", "\"contentproxy.signal.org\"")
|
||||
buildConfigField("int", "CONTENT_PROXY_PORT", "443")
|
||||
buildConfigField("String", "SIGNAL_AGENT", "\"OWA\"")
|
||||
buildConfigField("String", "SVR2_MRENCLAVE_LEGACY", "\"093be9ea32405e85ae28dbb48eb668aebeb7dbe29517b9b86ad4bec4dfe0e6a6\"")
|
||||
buildConfigField("String", "SVR2_MRENCLAVE", "\"29cd63c87bea751e3bfd0fbd401279192e2e5c99948b4ee9437eafc4968355fb\"")
|
||||
buildConfigField("String[]", "UNIDENTIFIED_SENDER_TRUST_ROOTS", "new String[]{ \"BXu6QIKVz5MA8gstzfOgRQGqyLqOwNKHL6INkv3IHWMF\", \"BUkY0I+9+oPgDCn4+Ac6Iu813yvqkDr/ga8DzLxFxuk6\"}")
|
||||
buildConfigField("String", "ZKGROUP_SERVER_PUBLIC_PARAMS", "\"AMhf5ywVwITZMsff/eCyudZx9JDmkkkbV6PInzG4p8x3VqVJSFiMvnvlEKWuRob/1eaIetR31IYeAbm0NdOuHH8Qi+Rexi1wLlpzIo1gstHWBfZzy1+qHRV5A4TqPp15YzBPm0WSggW6PbSn+F4lf57VCnHF7p8SvzAA2ZZJPYJURt8X7bbg+H3i+PEjH9DXItNEqs2sNcug37xZQDLm7X36nOoGPs54XsEGzPdEV+itQNGUFEjY6X9Uv+Acuks7NpyGvCoKxGwgKgE5XyJ+nNKlyHHOLb6N1NuHyBrZrgtY/JYJHRooo5CEqYKBqdFnmbTVGEkCvJKxLnjwKWf+fEPoWeQFj5ObDjcKMZf2Jm2Ae69x+ikU5gBXsRmoF94GXTLfN0/vLt98KDPnxwAQL9j5V1jGOY8jQl6MLxEs56cwXN0dqCnImzVH3TZT1cJ8SW1BRX6qIVxEzjsSGx3yxF3suAilPMqGRp4ffyopjMD1JXiKR2RwLKzizUe5e8XyGOy9fplzhw3jVzTRyUZTRSZKkMLWcQ/gv0E4aONNqs4P+NameAZYOD12qRkxosQQP5uux6B2nRyZ7sAV54DgFyLiRcq1FvwKw2EPQdk4HDoePrO/RNUbyNddnM/mMgj4FW65xCoT1LmjrIjsv/Ggdlx46ueczhMgtBunx1/w8k8V+l8LVZ8gAT6wkU5J+DPQalQguMg12Jzug3q4TbdHiGCmD9EunCwOmsLuLJkz6EcSYXtrlDEnAM+hicw7iergYLLlMXpfTdGxJCWJmP4zqUFeTTmsmhsjGBt7NiEB/9pFFEB3pSbf4iiUukw63Eo8Aqnf4iwob6X1QviCWuc8t0LUlT9vALgh/f2DPVOOmR0RW6bgRvc7DSF20V/omg+YBw==\"")
|
||||
buildConfigField("String", "GENERIC_SERVER_PUBLIC_PARAMS", "\"AByD873dTilmOSG0TjKrvpeaKEsUmIO8Vx9BeMmftwUs9v7ikPwM8P3OHyT0+X3EUMZrSe9VUp26Wai51Q9I8mdk0hX/yo7CeFGJyzoOqn8e/i4Ygbn5HoAyXJx5eXfIbqpc0bIxzju4H/HOQeOpt6h742qii5u/cbwOhFZCsMIbElZTaeU+BWMBQiZHIGHT5IE0qCordQKZ5iPZom0HeFa8Yq0ShuEyAl0WINBiY6xE3H/9WnvzXBbMuuk//eRxXgzO8ieCeK8FwQNxbfXqZm6Ro1cMhCOF3u7xoX83QhpN\"")
|
||||
buildConfigField("String", "BACKUP_SERVER_PUBLIC_PARAMS", "\"AJwNSU55fsFCbgaxGRD11wO1juAs8Yr5GF8FPlGzzvdJJIKH5/4CC7ZJSOe3yL2vturVaRU2Cx0n751Vt8wkj1bozK3CBV1UokxV09GWf+hdVImLGjXGYLLhnI1J2TWEe7iWHyb553EEnRb5oxr9n3lUbNAJuRmFM7hrr0Al0F0wrDD4S8lo2mGaXe0MJCOM166F8oYRQqpFeEHfiLnxA1O8ZLh7vMdv4g9jI5phpRBTsJ5IjiJrWeP0zdIGHEssUeprDZ9OUJ14m0v61eYJMKsf59Bn+mAT2a7YfB+Don9O\"")
|
||||
buildConfigField("String[]", "LANGUAGES", "new String[]{ ${languageList().map { "\"$it\"" }.joinToString(separator = ", ")} }")
|
||||
buildConfigField("String", "DEFAULT_CURRENCIES", "\"EUR,AUD,GBP,CAD,CNY\"")
|
||||
buildConfigField("String", "GIPHY_API_KEY", "\"3o6ZsYH6U6Eri53TXy\"")
|
||||
buildConfigField("String", "SIGNAL_CAPTCHA_URL", "\"https://signalcaptchas.org/registration/generate.html\"")
|
||||
buildConfigField("String", "RECAPTCHA_PROOF_URL", "\"https://signalcaptchas.org/challenge/generate.html\"")
|
||||
buildConfigField("org.signal.libsignal.net.Network.Environment", "LIBSIGNAL_NET_ENV", "org.signal.libsignal.net.Network.Environment.PRODUCTION")
|
||||
buildConfigField("int", "LIBSIGNAL_LOG_LEVEL", "org.signal.libsignal.protocol.logging.SignalProtocolLogger.INFO")
|
||||
|
||||
// MOLLY: Rely on the built-in variables FLAVOR and BUILD_TYPE instead of BUILD_*_TYPE
|
||||
buildConfigField("String", "BADGE_STATIC_ROOT", "\"https://updates2.signal.org/static/badges/\"")
|
||||
buildConfigField("String", "STRIPE_BASE_URL", "\"https://api.stripe.com/v1\"")
|
||||
buildConfigField("String", "STRIPE_PUBLISHABLE_KEY", "\"pk_live_6cmGZopuTsV8novGgJJW9JpC00vLIgtQ1D\"")
|
||||
buildConfigField("boolean", "TRACING_ENABLED", "false")
|
||||
buildConfigField("boolean", "USE_STRING_ID", "true")
|
||||
|
||||
ndk {
|
||||
//noinspection ChromeOsAbiSupport
|
||||
abiFilters += listOf("armeabi-v7a", "arm64-v8a", "x86_64")
|
||||
}
|
||||
|
||||
resourceConfigurations += listOf()
|
||||
|
||||
testInstrumentationRunner = "org.thoughtcrime.securesms.testing.SignalTestRunner"
|
||||
testInstrumentationRunnerArguments["clearPackageData"] = "true"
|
||||
}
|
||||
|
||||
buildTypes {
|
||||
getByName("debug") {
|
||||
isDefault = true
|
||||
isMinifyEnabled = false
|
||||
proguardFiles(
|
||||
getDefaultProguardFile("proguard-android.txt"),
|
||||
"proguard/proguard-firebase-messaging.pro",
|
||||
"proguard/proguard-google-play-services.pro",
|
||||
"proguard/proguard-jackson.pro",
|
||||
"proguard/proguard-sqlite.pro",
|
||||
"proguard/proguard-appcompat-v7.pro",
|
||||
"proguard/proguard-square-okhttp.pro",
|
||||
"proguard/proguard-square-okio.pro",
|
||||
"proguard/proguard-rounded-image-view.pro",
|
||||
"proguard/proguard-glide.pro",
|
||||
"proguard/proguard-shortcutbadger.pro",
|
||||
"proguard/proguard-retrofit.pro",
|
||||
"proguard/proguard-klinker.pro",
|
||||
"proguard/proguard-retrolambda.pro",
|
||||
"proguard/proguard-okhttp.pro",
|
||||
"proguard/proguard-ez-vcard.pro",
|
||||
"proguard/proguard.cfg"
|
||||
)
|
||||
testProguardFiles(
|
||||
"proguard/proguard-automation.pro",
|
||||
"proguard/proguard.cfg"
|
||||
)
|
||||
|
||||
buildConfigField("long", "BUILD_OR_ZERO_TIMESTAMP", "0L")
|
||||
buildConfigField("String", "GIT_HASH", "\"abc123def456\"")
|
||||
}
|
||||
|
||||
getByName("release") {
|
||||
isMinifyEnabled = true
|
||||
isShrinkResources = true
|
||||
signingConfig = signingConfigs.findByName("ci")
|
||||
proguardFiles(*buildTypes["debug"].proguardFiles.toTypedArray())
|
||||
}
|
||||
|
||||
create("instrumentation") {
|
||||
initWith(getByName("debug"))
|
||||
isDefault = false
|
||||
isMinifyEnabled = false
|
||||
matchingFallbacks += "debug"
|
||||
applicationIdSuffix = ".instrumentation"
|
||||
|
||||
buildConfigField("String", "STRIPE_BASE_URL", "\"http://127.0.0.1:8080/stripe\"")
|
||||
}
|
||||
}
|
||||
|
||||
productFlavors {
|
||||
create("store") {
|
||||
dimension = "distribution"
|
||||
buildConfigField("boolean", "MANAGE_MOLLY_UPDATES", "false")
|
||||
}
|
||||
|
||||
create("website") {
|
||||
dimension = "distribution"
|
||||
isDefault = true
|
||||
buildConfigField("boolean", "MANAGE_MOLLY_UPDATES", "true")
|
||||
}
|
||||
|
||||
create("prod") {
|
||||
dimension = "environment"
|
||||
isDefault = true
|
||||
}
|
||||
|
||||
create("staging") {
|
||||
dimension = "environment"
|
||||
|
||||
applicationIdSuffix = ".staging"
|
||||
|
||||
buildConfigField("String", "SIGNAL_PACKAGE_NAME", "\"org.thoughtcrime.securesms.staging\"")
|
||||
|
||||
buildConfigField("String", "SIGNAL_URL", "\"https://chat.staging.signal.org\"")
|
||||
buildConfigField("String", "STORAGE_URL", "\"https://storage-staging.signal.org\"")
|
||||
buildConfigField("String", "SIGNAL_CDN_URL", "\"https://cdn-staging.signal.org\"")
|
||||
buildConfigField("String", "SIGNAL_CDN2_URL", "\"https://cdn2-staging.signal.org\"")
|
||||
buildConfigField("String", "SIGNAL_CDN3_URL", "\"https://cdn3-staging.signal.org\"")
|
||||
buildConfigField("String", "SIGNAL_CDSI_URL", "\"https://cdsi.staging.signal.org\"")
|
||||
buildConfigField("String", "SIGNAL_SVR2_URL", "\"https://svr2.staging.signal.org\"")
|
||||
buildConfigField("String", "SVR2_MRENCLAVE_LEGACY", "\"2e8cefe6e3f389d8426adb24e9b7fb7adf10902c96f06f7bbcee36277711ed91\"")
|
||||
buildConfigField("String", "SVR2_MRENCLAVE", "\"a75542d82da9f6914a1e31f8a7407053b99cc99a0e7291d8fbd394253e19b036\"")
|
||||
buildConfigField("String[]", "UNIDENTIFIED_SENDER_TRUST_ROOTS", "new String[]{\"BbqY1DzohE4NUZoVF+L18oUPrK3kILllLEJh2UnPSsEx\", \"BYhU6tPjqP46KGZEzRs1OL4U39V5dlPJ/X09ha4rErkm\"}")
|
||||
buildConfigField("String", "ZKGROUP_SERVER_PUBLIC_PARAMS", "\"ABSY21VckQcbSXVNCGRYJcfWHiAMZmpTtTELcDmxgdFbtp/bWsSxZdMKzfCp8rvIs8ocCU3B37fT3r4Mi5qAemeGeR2X+/YmOGR5ofui7tD5mDQfstAI9i+4WpMtIe8KC3wU5w3Inq3uNWVmoGtpKndsNfwJrCg0Hd9zmObhypUnSkfYn2ooMOOnBpfdanRtrvetZUayDMSC5iSRcXKpdlukrpzzsCIvEwjwQlJYVPOQPj4V0F4UXXBdHSLK05uoPBCQG8G9rYIGedYsClJXnbrgGYG3eMTG5hnx4X4ntARBgELuMWWUEEfSK0mjXg+/2lPmWcTZWR9nkqgQQP0tbzuiPm74H2wMO4u1Wafe+UwyIlIT9L7KLS19Aw8r4sPrXZSSsOZ6s7M1+rTJN0bI5CKY2PX29y5Ok3jSWufIKcgKOnWoP67d5b2du2ZVJjpjfibNIHbT/cegy/sBLoFwtHogVYUewANUAXIaMPyCLRArsKhfJ5wBtTminG/PAvuBdJ70Z/bXVPf8TVsR292zQ65xwvWTejROW6AZX6aqucUjlENAErBme1YHmOSpU6tr6doJ66dPzVAWIanmO/5mgjNEDeK7DDqQdB1xd03HT2Qs2TxY3kCK8aAb/0iM0HQiXjxZ9HIgYhbtvGEnDKW5ILSUydqH/KBhW4Pb0jZWnqN/YgbWDKeJxnDbYcUob5ZY5Lt5ZCMKuaGUvCJRrCtuugSMaqjowCGRempsDdJEt+cMaalhZ6gczklJB/IbdwENW9KeVFPoFNFzhxWUIS5ML9riVYhAtE6JE5jX0xiHNVIIPthb458cfA8daR0nYfYAUKogQArm0iBezOO+mPk5vCNWI+wwkyFCqNDXz/qxl1gAntuCJtSfq9OC3NkdhQlgYQ==\"")
|
||||
buildConfigField("String", "GENERIC_SERVER_PUBLIC_PARAMS", "\"AHILOIrFPXX9laLbalbA9+L1CXpSbM/bTJXZGZiuyK1JaI6dK5FHHWL6tWxmHKYAZTSYmElmJ5z2A5YcirjO/yfoemE03FItyaf8W1fE4p14hzb5qnrmfXUSiAIVrhaXVwIwSzH6RL/+EO8jFIjJ/YfExfJ8aBl48CKHgu1+A6kWynhttonvWWx6h7924mIzW0Czj2ROuh4LwQyZypex4GuOPW8sgIT21KNZaafgg+KbV7XM1x1tF3XA17B4uGUaDbDw2O+nR1+U5p6qHPzmJ7ggFjSN6Utu+35dS1sS0P9N\"")
|
||||
buildConfigField("String", "BACKUP_SERVER_PUBLIC_PARAMS", "\"AHYrGb9IfugAAJiPKp+mdXUx+OL9zBolPYHYQz6GI1gWjpEu5me3zVNSvmYY4zWboZHif+HG1sDHSuvwFd0QszSwuSF4X4kRP3fJREdTZ5MCR0n55zUppTwfHRW2S4sdQ0JGz7YDQIJCufYSKh0pGNEHL6hv79Agrdnr4momr3oXdnkpVBIp3HWAQ6IbXQVSG18X36GaicI1vdT0UFmTwU2KTneluC2eyL9c5ff8PcmiS+YcLzh0OKYQXB5ZfQ06d6DiINvDQLy75zcfUOniLAj0lGJiHxGczin/RXisKSR8\"")
|
||||
buildConfigField("String", "SIGNAL_CAPTCHA_URL", "\"https://signalcaptchas.org/staging/registration/generate.html\"")
|
||||
buildConfigField("String", "RECAPTCHA_PROOF_URL", "\"https://signalcaptchas.org/staging/challenge/generate.html\"")
|
||||
buildConfigField("org.signal.libsignal.net.Network.Environment", "LIBSIGNAL_NET_ENV", "org.signal.libsignal.net.Network.Environment.STAGING")
|
||||
buildConfigField("int", "LIBSIGNAL_LOG_LEVEL", "org.signal.libsignal.protocol.logging.SignalProtocolLogger.DEBUG")
|
||||
buildConfigField("boolean", "USE_STRING_ID", "false")
|
||||
buildConfigField("String", "STRIPE_PUBLISHABLE_KEY", "\"pk_test_sngOd8FnXNkpce9nPXawKrJD00kIDngZkD\"")
|
||||
}
|
||||
}
|
||||
|
||||
lint {
|
||||
abortOnError = true
|
||||
baseline = file("lint-baseline.xml")
|
||||
ignoreWarnings = true
|
||||
quiet = true
|
||||
}
|
||||
|
||||
applicationVariants.all {
|
||||
val isStaging = productFlavors.any { it.name == "staging" }
|
||||
|
||||
resValue("string", "app_name", baseAppTitle + if (isStaging) " Staging" else "")
|
||||
resValue("string", "package_name", applicationId)
|
||||
|
||||
outputs
|
||||
.map { it as com.android.build.gradle.internal.api.ApkVariantOutputImpl }
|
||||
.forEach { output ->
|
||||
val flavors = "-$baseName"
|
||||
.replace("-prod", "")
|
||||
.replace("-website", "")
|
||||
.replace("-release", "")
|
||||
val unsigned = if (isSigningReady) "" else "-unsigned"
|
||||
|
||||
output.outputFileName = "${baseAppFileName}${flavors}${unsigned}-${versionName}.apk"
|
||||
}
|
||||
}
|
||||
|
||||
androidComponents {
|
||||
beforeVariants { variant ->
|
||||
val isSelected = variant.name in selectableVariants
|
||||
val matchesBuild = buildVariants.toRegex().containsMatchIn(variant.name)
|
||||
|
||||
if (isSelected && matchesBuild) {
|
||||
// MOLLY: Disable unit tests for non-debug builds
|
||||
if (variant.buildType != "debug") {
|
||||
(variant as com.android.build.api.variant.HasUnitTestBuilder).enableUnitTest = false
|
||||
}
|
||||
} else {
|
||||
variant.enable = false
|
||||
}
|
||||
}
|
||||
onVariants { variant ->
|
||||
// Include the test-only library on debug builds.
|
||||
if (variant.buildType != "instrumentation") {
|
||||
variant.packaging.jniLibs.excludes.add("**/libsignal_jni_testing.so")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
val releaseDir = "$projectDir/src/release/java"
|
||||
val debugDir = "$projectDir/src/debug/java"
|
||||
|
||||
android.buildTypes.configureEach {
|
||||
val path = if (name == "release") releaseDir else debugDir
|
||||
sourceSets.named(name) {
|
||||
java.srcDir(path)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
dependencies {
|
||||
lintChecks(project(":lintchecks"))
|
||||
coreLibraryDesugaring(libs.android.tools.desugar)
|
||||
|
||||
implementation(project(":libsignal-service"))
|
||||
implementation(project(":paging"))
|
||||
implementation(project(":core-util"))
|
||||
implementation(project(":glide-config"))
|
||||
implementation(project(":video"))
|
||||
implementation(project(":device-transfer"))
|
||||
implementation(project(":image-editor"))
|
||||
implementation(project(":donations"))
|
||||
implementation(project(":debuglogs-viewer"))
|
||||
implementation(project(":contacts"))
|
||||
implementation(project(":qr"))
|
||||
implementation(project(":sticky-header-grid"))
|
||||
implementation(project(":photoview"))
|
||||
implementation(project(":core-ui"))
|
||||
implementation(project(":core-models"))
|
||||
|
||||
implementation(libs.androidx.fragment.ktx)
|
||||
implementation(libs.androidx.appcompat) {
|
||||
version {
|
||||
strictly("1.6.1")
|
||||
}
|
||||
}
|
||||
implementation(libs.androidx.window.window)
|
||||
implementation(libs.androidx.window.java)
|
||||
implementation(libs.androidx.recyclerview)
|
||||
implementation(libs.material.material)
|
||||
implementation(libs.androidx.legacy.support)
|
||||
implementation(libs.androidx.preference)
|
||||
implementation(libs.androidx.legacy.preference)
|
||||
implementation(libs.androidx.gridlayout)
|
||||
implementation(libs.androidx.exifinterface)
|
||||
implementation(libs.androidx.compose.rxjava3)
|
||||
implementation(libs.androidx.compose.runtime.livedata)
|
||||
implementation(libs.androidx.activity.compose)
|
||||
implementation(libs.androidx.constraintlayout)
|
||||
implementation(libs.androidx.navigation.fragment.ktx)
|
||||
implementation(libs.androidx.navigation.ui.ktx)
|
||||
implementation(libs.androidx.navigation.compose)
|
||||
implementation(libs.androidx.lifecycle.viewmodel.ktx)
|
||||
implementation(libs.androidx.lifecycle.livedata.ktx)
|
||||
implementation(libs.androidx.lifecycle.process)
|
||||
implementation(libs.androidx.lifecycle.viewmodel.savedstate)
|
||||
implementation(libs.androidx.lifecycle.common.java8)
|
||||
implementation(libs.androidx.lifecycle.reactivestreams.ktx)
|
||||
implementation(libs.androidx.lifecycle.runtime.compose)
|
||||
implementation(libs.androidx.activity.compose)
|
||||
implementation(libs.androidx.camera.core)
|
||||
implementation(libs.androidx.camera.camera2)
|
||||
implementation(libs.androidx.camera.extensions)
|
||||
implementation(libs.androidx.camera.lifecycle)
|
||||
implementation(libs.androidx.camera.view)
|
||||
implementation(libs.androidx.concurrent.futures)
|
||||
implementation(libs.androidx.autofill)
|
||||
implementation(libs.androidx.biometric)
|
||||
implementation(libs.androidx.sharetarget)
|
||||
implementation(libs.androidx.profileinstaller)
|
||||
implementation(libs.androidx.asynclayoutinflater)
|
||||
implementation(libs.androidx.asynclayoutinflater.appcompat)
|
||||
implementation(libs.androidx.emoji2)
|
||||
implementation(libs.androidx.splashscreen)
|
||||
implementation(libs.androidx.webkit)
|
||||
implementation(libs.firebase.messaging) {
|
||||
exclude(group = "com.google.firebase", module = "firebase-core")
|
||||
exclude(group = "com.google.firebase", module = "firebase-analytics")
|
||||
exclude(group = "com.google.firebase", module = "firebase-measurement-connector")
|
||||
exclude(group = "com.google.firebase", module = "firebase-iid-interop")
|
||||
exclude(group = "com.google.android.gms", module = "play-services-base")
|
||||
exclude(group = "com.google.android.gms", module = "play-services-basement")
|
||||
exclude(group = "com.google.android.gms", module = "play-services-cloud-messaging")
|
||||
exclude(group = "com.google.android.gms", module = "play-services-stats")
|
||||
exclude(group = "com.google.android.gms", module = "play-services-tasks")
|
||||
}
|
||||
implementation(project(":core-gms:cloud-messaging"))
|
||||
implementation(libs.bundles.media3)
|
||||
implementation(libs.conscrypt.android)
|
||||
implementation(libs.signal.aesgcmprovider)
|
||||
implementation(libs.libsignal.android)
|
||||
implementation(libs.molly.ringrtc)
|
||||
implementation(libs.leolin.shortcutbadger)
|
||||
implementation(libs.emilsjolander.stickylistheaders)
|
||||
implementation(libs.glide.glide)
|
||||
implementation(libs.roundedimageview)
|
||||
implementation(libs.materialish.progress)
|
||||
implementation(libs.greenrobot.eventbus)
|
||||
implementation(libs.google.zxing.android.integration)
|
||||
implementation(libs.google.zxing.core)
|
||||
implementation(libs.google.flexbox)
|
||||
implementation(libs.subsampling.scale.image.view) {
|
||||
exclude(group = "com.android.support", module = "support-annotations")
|
||||
}
|
||||
implementation(libs.android.tooltips) {
|
||||
exclude(group = "com.android.support", module = "appcompat-v7")
|
||||
}
|
||||
implementation(libs.stream)
|
||||
implementation(libs.lottie)
|
||||
implementation(libs.lottie.compose)
|
||||
implementation(libs.signal.android.database.sqlcipher)
|
||||
implementation(libs.androidx.sqlite)
|
||||
testImplementation(libs.androidx.sqlite.framework)
|
||||
implementation(libs.google.ez.vcard) {
|
||||
exclude(group = "com.fasterxml.jackson.core")
|
||||
exclude(group = "org.freemarker")
|
||||
}
|
||||
implementation(libs.dnsjava)
|
||||
implementation(libs.kotlinx.collections.immutable)
|
||||
implementation(libs.accompanist.permissions)
|
||||
implementation(libs.accompanist.drawablepainter)
|
||||
implementation(libs.kotlin.stdlib.jdk8)
|
||||
implementation(libs.kotlin.reflect)
|
||||
implementation(libs.kotlinx.coroutines.play.services) {
|
||||
exclude(group = "com.google.android.gms", module = "play-services-tasks")
|
||||
}
|
||||
implementation(libs.kotlinx.coroutines.rx3)
|
||||
implementation(libs.jackson.module.kotlin)
|
||||
implementation(libs.rxjava3.rxandroid)
|
||||
implementation(libs.rxjava3.rxkotlin)
|
||||
implementation(libs.rxdogtag)
|
||||
implementation(libs.androidx.credentials)
|
||||
implementation(libs.kotlinx.serialization.json)
|
||||
|
||||
implementation(project(":libnetcipher"))
|
||||
implementation(libs.molly.argon2) { artifact { type = "aar" } }
|
||||
implementation(libs.molly.native.utils)
|
||||
implementation(libs.gosimple.nbvcxz)
|
||||
implementation(libs.osmdroid.android)
|
||||
implementation(libs.unifiedpush.connector) {
|
||||
exclude(group = "org.jetbrains.kotlin", module = "kotlin-stdlib")
|
||||
exclude(group = "com.google.protobuf", module = "protobuf-java")
|
||||
}
|
||||
implementation(libs.unifiedpush.connector.ui) {
|
||||
exclude(group = "org.jetbrains.kotlin", module = "kotlin-stdlib")
|
||||
}
|
||||
|
||||
"instrumentationImplementation"(libs.androidx.fragment.testing) {
|
||||
exclude(group = "androidx.test", module = "core")
|
||||
}
|
||||
|
||||
testImplementation(testLibs.junit.junit)
|
||||
testImplementation(testLibs.assertk)
|
||||
testImplementation(testLibs.androidx.test.core)
|
||||
testImplementation(testLibs.robolectric.robolectric) {
|
||||
exclude(group = "com.google.protobuf", module = "protobuf-java")
|
||||
}
|
||||
testImplementation(testLibs.bouncycastle.bcprov.jdk15on) {
|
||||
version {
|
||||
strictly("1.70")
|
||||
}
|
||||
}
|
||||
testImplementation(testLibs.bouncycastle.bcpkix.jdk15on) {
|
||||
version {
|
||||
strictly("1.70")
|
||||
}
|
||||
}
|
||||
testImplementation(testLibs.conscrypt.openjdk.uber)
|
||||
testImplementation(testLibs.mockk)
|
||||
testImplementation(testFixtures(project(":libsignal-service")))
|
||||
testImplementation(testLibs.espresso.core)
|
||||
testImplementation(testLibs.kotlinx.coroutines.test)
|
||||
testImplementation(libs.androidx.compose.ui.test.junit4)
|
||||
|
||||
debugImplementation(libs.androidx.compose.ui.test.manifest)
|
||||
|
||||
androidTestImplementation(platform(libs.androidx.compose.bom))
|
||||
androidTestImplementation(libs.androidx.compose.ui.test.junit4)
|
||||
androidTestImplementation(testLibs.androidx.test.ext.junit)
|
||||
androidTestImplementation(testLibs.espresso.core)
|
||||
androidTestImplementation(testLibs.androidx.test.core)
|
||||
androidTestImplementation(testLibs.androidx.test.core.ktx)
|
||||
androidTestImplementation(testLibs.androidx.test.ext.junit.ktx)
|
||||
androidTestImplementation(testLibs.assertk)
|
||||
androidTestImplementation(testLibs.mockk.android)
|
||||
androidTestImplementation(testLibs.diff.utils)
|
||||
|
||||
androidTestUtil(testLibs.androidx.test.orchestrator)
|
||||
}
|
||||
|
||||
licensee {
|
||||
allow("Apache-2.0")
|
||||
allow("BSD-2-Clause")
|
||||
allow("CC0-1.0")
|
||||
allow("MIT")
|
||||
allowDependency("im.molly", "native-utils", "1.0.0") {
|
||||
because("AGPL-3.0-or-later")
|
||||
}
|
||||
allowDependency("org.signal", "sqlcipher-android", "4.6.0-S1") {
|
||||
because("BSD-3-Clause")
|
||||
}
|
||||
allowUrl("http://opensource.org/licenses/bsd-license.php")
|
||||
allowUrl("https://www.gnu.org/licenses/agpl-3.0.html")
|
||||
allowUrl("https://www.gnu.org/licenses/agpl-3.0.txt")
|
||||
allowUrl("https://www.gnu.org/licenses/gpl-3.0.txt")
|
||||
allowUrl("http://jsoup.org/license") {
|
||||
because("MIT")
|
||||
}
|
||||
}
|
||||
|
||||
fun assertIsGitRepo() {
|
||||
if (!project.rootDir.resolve(".git").exists()) {
|
||||
throw GradleException("Must be a git repository to guarantee reproducible builds! (git hash is part of APK)")
|
||||
}
|
||||
}
|
||||
|
||||
fun getLastCommitTimestamp(): String {
|
||||
return try {
|
||||
providers.exec {
|
||||
commandLine("git", "log", "-1", "--pretty=format:%ct000")
|
||||
}.standardOutput.asText.get().trim()
|
||||
} catch (e: Throwable) {
|
||||
logger.warn("Failed to get Git commit timestamp: ${e.message}. Using mtime of current build script.")
|
||||
buildFile.lastModified().toString()
|
||||
}
|
||||
}
|
||||
|
||||
fun getGitHash(): String {
|
||||
return try {
|
||||
providers.exec {
|
||||
commandLine("git", "rev-parse", "--short=12", "HEAD")
|
||||
}.standardOutput.asText.get().trim()
|
||||
} catch (e: Throwable) {
|
||||
logger.warn("Failed to get Git commit hash: ${e.message}. Using default value.")
|
||||
"abc123def456"
|
||||
}
|
||||
}
|
||||
|
||||
fun getCommitTag(): String {
|
||||
assertIsGitRepo()
|
||||
|
||||
val tag = providers.exec {
|
||||
commandLine("git", "describe", "--tags", "--exact-match")
|
||||
}.standardOutput.asText.get().trim()
|
||||
|
||||
return tag.takeIf { it.isNotEmpty() } ?: "untagged"
|
||||
}
|
||||
|
||||
fun getCurrentGitTag(): String? {
|
||||
assertIsGitRepo()
|
||||
|
||||
val output = providers.exec {
|
||||
commandLine("git", "tag", "--points-at", "HEAD")
|
||||
}.standardOutput.asText.get().trim()
|
||||
|
||||
return if (output.isNotEmpty()) {
|
||||
val tags = output.split("\n").toList()
|
||||
tags.firstOrNull { it.contains("nightly") } ?: tags[0]
|
||||
} else {
|
||||
null
|
||||
}
|
||||
}
|
||||
|
||||
tasks.withType<Test>().configureEach {
|
||||
testLogging {
|
||||
events("failed")
|
||||
showCauses = true
|
||||
showExceptions = true
|
||||
showStackTraces = true
|
||||
}
|
||||
}
|
||||
|
||||
fun Project.languageList(): List<String> {
|
||||
// In API 35, language codes for Hebrew and Indonesian now use the ISO 639-1 code ("he" and "id").
|
||||
// However, the value resources still only support the outdated code ("iw" and "in") so we have
|
||||
// to manually indicate that we support these languages.
|
||||
val updatedLanguageCodes = listOf("he", "id")
|
||||
|
||||
return fileTree("src/main/res") { include("**/strings.xml") }
|
||||
.map { stringFile -> stringFile.parentFile.name }
|
||||
.map { valuesFolderName -> valuesFolderName.replace("values-", "") }
|
||||
.filter { valuesFolderName -> valuesFolderName != "values" }
|
||||
.map { languageCode -> languageCode.replace("-r", "_") }
|
||||
.distinct()
|
||||
.sorted() + updatedLanguageCodes + "en"
|
||||
}
|
||||
|
||||
fun String.capitalize(): String {
|
||||
return this.replaceFirstChar { it.uppercase() }
|
||||
}
|
||||
8
app/gradle.properties
Normal file
8
app/gradle.properties
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
# Set the app title and package ID
|
||||
baseAppTitle=Molly
|
||||
baseAppFileName=Molly
|
||||
basePackageId=im.molly.app
|
||||
# Pattern to partial match the flavors to build
|
||||
buildVariants=
|
||||
# Enable internal testing extensions
|
||||
forceInternalUserFlag=false
|
||||
4
app/lint-baseline.xml
Normal file
4
app/lint-baseline.xml
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<issues format="6" by="lint 8.7.3" type="baseline" client="gradle" dependencies="false" name="AGP (8.7.3)" variant="all" version="8.7.3">
|
||||
|
||||
</issues>
|
||||
53
app/lint.xml
Normal file
53
app/lint.xml
Normal file
|
|
@ -0,0 +1,53 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<lint>
|
||||
|
||||
<!-- Wont pass lint or qa with a STOPSHIP in a comment -->
|
||||
<issue id="StopShip" severity="fatal" />
|
||||
|
||||
<!-- L10N errors -->
|
||||
<!-- This is a runtime crash so we don't want to ship with this. -->
|
||||
<issue id="StringFormatMatches" severity="error" />
|
||||
|
||||
<!-- L10N warnings -->
|
||||
<issue id="MissingTranslation" severity="ignore" />
|
||||
<issue id="MissingQuantity" severity="warning" />
|
||||
<issue id="MissingDefaultResource" severity="error">
|
||||
<ignore path="*/res/values-*/strings.xml" /> <!-- Ignore for non-English, excludeNonTranslatables task will remove these -->
|
||||
</issue>
|
||||
<issue id="ExtraTranslation" severity="warning" />
|
||||
<issue id="ImpliedQuantity" severity="warning" />
|
||||
<issue id="TypographyDashes" severity="error" >
|
||||
<ignore path="*/res/values-*/strings.xml" /> <!-- Ignore for non-English -->
|
||||
</issue>
|
||||
|
||||
<issue id="CanvasSize" severity="error" />
|
||||
<issue id="HardcodedText" severity="error" />
|
||||
<issue id="VectorRaster" severity="error" />
|
||||
<issue id="ButtonOrder" severity="error" />
|
||||
<issue id="ExtraTranslation" severity="warning" />
|
||||
<issue id="UnspecifiedImmutableFlag" severity="error" />
|
||||
|
||||
<!-- Custom lints -->
|
||||
<issue id="LogNotSignal" severity="error" />
|
||||
<issue id="LogNotAppSignal" severity="error" />
|
||||
<issue id="LogTagInlined" severity="error" />
|
||||
|
||||
<issue id="AlertDialogBuilderUsage" severity="warning" />
|
||||
|
||||
<issue id="RestrictedApi" severity="error">
|
||||
<ignore path="*/org/thoughtcrime/securesms/mediasend/camerax/VideoCapture.java" />
|
||||
<ignore path="*/org/thoughtcrime/securesms/mediasend/camerax/CameraXModule.java" />
|
||||
<ignore path="*/org/thoughtcrime/securesms/conversation/*.java" />
|
||||
<ignore path="*/org/thoughtcrime/securesms/lock/v2/CreateKbsPinViewModel.java" />
|
||||
<ignore path="*/org/thoughtcrime/securesms/jobs/StickerPackDownloadJob.java" />
|
||||
</issue>
|
||||
|
||||
<issue id="OptionalUsedAsFieldOrParameterType" severity="ignore" />
|
||||
<issue id="SameParameterValue" severity="ignore" />
|
||||
|
||||
<!-- Disables check for digital asset linking in manifest. It's not needed, since we are not using CredentialManager for passkey support. -->
|
||||
<issue id="CredManMissingDal" severity="ignore" />
|
||||
|
||||
<!-- MOLLY -->
|
||||
<issue id="ForegroundServiceType" severity="warning" />
|
||||
</lint>
|
||||
13
app/proguard/proguard-appcompat-v7.pro
Normal file
13
app/proguard/proguard-appcompat-v7.pro
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
# https://code.google.com/p/android/issues/detail?id=78377
|
||||
-keepnames class !android.support.v7.internal.view.menu.**, ** { *; }
|
||||
|
||||
-keep public class android.support.v7.widget.** { *; }
|
||||
-keep public class android.support.v7.internal.widget.** { *; }
|
||||
|
||||
-keep public class * extends android.support.v4.view.ActionProvider {
|
||||
public <init>(android.content.Context);
|
||||
}
|
||||
|
||||
-keepattributes *Annotation*
|
||||
-keep public class * extends android.support.design.widget.CoordinatorLayout.Behavior { *; }
|
||||
-keep public class * extends android.support.design.widget.ViewOffsetBehavior { *; }
|
||||
11
app/proguard/proguard-automation.pro
Normal file
11
app/proguard/proguard-automation.pro
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
-keepattributes Exceptions
|
||||
-dontskipnonpubliclibraryclassmembers
|
||||
|
||||
-dontwarn android.test.**
|
||||
-dontwarn com.android.support.test.**
|
||||
-dontwarn sun.reflect.**
|
||||
-dontwarn sun.misc.**
|
||||
-dontwarn assertk.**
|
||||
-dontwarn com.squareup.**
|
||||
|
||||
-dontobfuscate
|
||||
1
app/proguard/proguard-ez-vcard.pro
Normal file
1
app/proguard/proguard-ez-vcard.pro
Normal file
|
|
@ -0,0 +1 @@
|
|||
-dontwarn ezvcard.io.html.HCardPage
|
||||
1
app/proguard/proguard-firebase-messaging.pro
Normal file
1
app/proguard/proguard-firebase-messaging.pro
Normal file
|
|
@ -0,0 +1 @@
|
|||
-dontwarn com.google.firebase.analytics.connector.AnalyticsConnector
|
||||
6
app/proguard/proguard-glide.pro
Normal file
6
app/proguard/proguard-glide.pro
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
-keep public class * implements com.bumptech.glide.module.GlideModule
|
||||
-keep public class * extends com.bumptech.glide.AppGlideModule
|
||||
-keep public enum com.bumptech.glide.load.resource.bitmap.ImageHeaderParser$** {
|
||||
**[] $VALUES;
|
||||
public *;
|
||||
}
|
||||
19
app/proguard/proguard-google-play-services.pro
Normal file
19
app/proguard/proguard-google-play-services.pro
Normal file
|
|
@ -0,0 +1,19 @@
|
|||
## Google Play Services 4.3.23 specific rules ##
|
||||
## https://developer.android.com/google/play-services/setup.html#Proguard ##
|
||||
|
||||
-keep class * extends java.util.ListResourceBundle {
|
||||
protected Object[][] getContents();
|
||||
}
|
||||
|
||||
-keep public class com.google.android.gms.common.internal.safeparcel.SafeParcelable {
|
||||
public static final *** NULL;
|
||||
}
|
||||
|
||||
-keepnames @com.google.android.gms.common.annotation.KeepName class *
|
||||
-keepclassmembernames class * {
|
||||
@com.google.android.gms.common.annotation.KeepName *;
|
||||
}
|
||||
|
||||
-keepnames class * implements android.os.Parcelable {
|
||||
public static final ** CREATOR;
|
||||
}
|
||||
12
app/proguard/proguard-jackson.pro
Normal file
12
app/proguard/proguard-jackson.pro
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
# Proguard configuration for Jackson 2.x (fasterxml package instead of codehaus package)
|
||||
|
||||
-keepattributes *Annotation*,EnclosingMethod,Signature
|
||||
-keepnames class com.fasterxml.jackson.** {
|
||||
*;
|
||||
}
|
||||
-keepnames interface com.fasterxml.jackson.** {
|
||||
*;
|
||||
}
|
||||
-dontwarn com.fasterxml.jackson.databind.**
|
||||
-keep class org.codehaus.** { *; }
|
||||
|
||||
3
app/proguard/proguard-klinker.pro
Normal file
3
app/proguard/proguard-klinker.pro
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
-dontwarn android.net.ConnectivityManager
|
||||
-dontwarn android.net.ConnectivityManager$NetworkCallback
|
||||
-dontwarn org.webrtc.NetworkMonitorAutoDetect$ConnectivityManagerDelegate
|
||||
3
app/proguard/proguard-okhttp.pro
Normal file
3
app/proguard/proguard-okhttp.pro
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
-dontwarn okio.**
|
||||
-dontwarn javax.annotation.Nullable
|
||||
-dontwarn javax.annotation.ParametersAreNonnullByDefault
|
||||
4
app/proguard/proguard-retrofit.pro
Normal file
4
app/proguard/proguard-retrofit.pro
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
-dontwarn retrofit.**
|
||||
-keep class retrofit.** { *; }
|
||||
-keepattributes Signature
|
||||
-keepattributes Exceptions
|
||||
2
app/proguard/proguard-retrolambda.pro
Normal file
2
app/proguard/proguard-retrolambda.pro
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
-dontwarn java.lang.invoke.*
|
||||
-dontwarn **$$Lambda$*
|
||||
1
app/proguard/proguard-rounded-image-view.pro
Normal file
1
app/proguard/proguard-rounded-image-view.pro
Normal file
|
|
@ -0,0 +1 @@
|
|||
-dontwarn com.squareup.picasso.**
|
||||
1
app/proguard/proguard-shortcutbadger.pro
Normal file
1
app/proguard/proguard-shortcutbadger.pro
Normal file
|
|
@ -0,0 +1 @@
|
|||
-keep class me.leolin.shortcutbadger.** {*;}
|
||||
8
app/proguard/proguard-sqlite.pro
Normal file
8
app/proguard/proguard-sqlite.pro
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
-keep class org.sqlite.** { *; }
|
||||
-keep class org.sqlite.database.** { *; }
|
||||
|
||||
-keep class net.sqlcipher.** { *; }
|
||||
-dontwarn net.sqlcipher.**
|
||||
|
||||
-keep class net.zetetic.** { *; }
|
||||
-dontwarn net.zetetic.**
|
||||
6
app/proguard/proguard-square-okhttp.pro
Normal file
6
app/proguard/proguard-square-okhttp.pro
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
# OkHttp
|
||||
-keepattributes Signature
|
||||
-keepattributes *Annotation*
|
||||
-keep class com.squareup.okhttp.** { *; }
|
||||
-keep interface com.squareup.okhttp.** { *; }
|
||||
-dontwarn com.squareup.okhttp.**
|
||||
5
app/proguard/proguard-square-okio.pro
Normal file
5
app/proguard/proguard-square-okio.pro
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
# Okio
|
||||
-keep class sun.misc.Unsafe { *; }
|
||||
-dontwarn java.nio.file.*
|
||||
-dontwarn org.codehaus.mojo.animal_sniffer.IgnoreJRERequirement
|
||||
-dontwarn okio.**
|
||||
28
app/proguard/proguard.cfg
Normal file
28
app/proguard/proguard.cfg
Normal file
|
|
@ -0,0 +1,28 @@
|
|||
-dontobfuscate
|
||||
-keepattributes SourceFile,LineNumberTable
|
||||
-keep class org.whispersystems.** { *; }
|
||||
-keep class im.molly.** { *; }
|
||||
-keep class org.signal.libsignal.net.** { *; }
|
||||
-keep class org.signal.libsignal.protocol.** { *; }
|
||||
-keep class org.signal.libsignal.usernames.** { *; }
|
||||
-keep class org.thoughtcrime.securesms.** { *; }
|
||||
-keep class org.signal.donations.json.** { *; }
|
||||
-keepclassmembers class ** {
|
||||
public void onEvent*(**);
|
||||
}
|
||||
|
||||
# Protobuf lite
|
||||
-keep class * extends com.google.protobuf.GeneratedMessageLite { *; }
|
||||
|
||||
-keep class androidx.window.** { *; }
|
||||
|
||||
-keepclassmembers class * extends androidx.constraintlayout.motion.widget.Key {
|
||||
public <init>();
|
||||
}
|
||||
|
||||
# AGP generated dont warns
|
||||
-dontwarn com.android.org.conscrypt.SSLParametersImpl
|
||||
-dontwarn org.apache.harmony.xnet.provider.jsse.SSLParametersImpl
|
||||
-dontwarn org.slf4j.impl.StaticLoggerBinder
|
||||
-dontwarn sun.net.spi.nameservice.NameService
|
||||
-dontwarn sun.net.spi.nameservice.NameServiceDescriptor
|
||||
29
app/sampledata/contacts.json
Normal file
29
app/sampledata/contacts.json
Normal file
|
|
@ -0,0 +1,29 @@
|
|||
{
|
||||
"data": [
|
||||
{
|
||||
"name": "Ottttooooooooo Ocataaaaaaaavius",
|
||||
"number": "+1 (555) 555-5555",
|
||||
"label": "Mobile"
|
||||
},
|
||||
{
|
||||
"name": "Victor Von Doom Phd",
|
||||
"number": "+1 (555) 123-4567",
|
||||
"label": "Home"
|
||||
},
|
||||
{
|
||||
"name": "Flash Thompson",
|
||||
"number": "+1 (555) 435-1261",
|
||||
"label": "Work"
|
||||
},
|
||||
{
|
||||
"name": "Dr. Curtis Connors",
|
||||
"number": "+1 (555) 992-1567",
|
||||
"label": "Mobile"
|
||||
},
|
||||
{
|
||||
"name": "Billy Russo",
|
||||
"number": "+1 (555) 234-1516",
|
||||
"label": "Mobile"
|
||||
}
|
||||
]
|
||||
}
|
||||
BIN
app/src/androidTest/assets/backupTests/account_data_00.binproto
Normal file
BIN
app/src/androidTest/assets/backupTests/account_data_00.binproto
Normal file
Binary file not shown.
BIN
app/src/androidTest/assets/backupTests/account_data_01.binproto
Normal file
BIN
app/src/androidTest/assets/backupTests/account_data_01.binproto
Normal file
Binary file not shown.
BIN
app/src/androidTest/assets/backupTests/account_data_02.binproto
Normal file
BIN
app/src/androidTest/assets/backupTests/account_data_02.binproto
Normal file
Binary file not shown.
BIN
app/src/androidTest/assets/backupTests/account_data_03.binproto
Normal file
BIN
app/src/androidTest/assets/backupTests/account_data_03.binproto
Normal file
Binary file not shown.
BIN
app/src/androidTest/assets/backupTests/account_data_04.binproto
Normal file
BIN
app/src/androidTest/assets/backupTests/account_data_04.binproto
Normal file
Binary file not shown.
BIN
app/src/androidTest/assets/backupTests/account_data_05.binproto
Normal file
BIN
app/src/androidTest/assets/backupTests/account_data_05.binproto
Normal file
Binary file not shown.
BIN
app/src/androidTest/assets/backupTests/account_data_06.binproto
Normal file
BIN
app/src/androidTest/assets/backupTests/account_data_06.binproto
Normal file
Binary file not shown.
BIN
app/src/androidTest/assets/backupTests/account_data_07.binproto
Normal file
BIN
app/src/androidTest/assets/backupTests/account_data_07.binproto
Normal file
Binary file not shown.
BIN
app/src/androidTest/assets/backupTests/account_data_08.binproto
Normal file
BIN
app/src/androidTest/assets/backupTests/account_data_08.binproto
Normal file
Binary file not shown.
BIN
app/src/androidTest/assets/backupTests/account_data_09.binproto
Normal file
BIN
app/src/androidTest/assets/backupTests/account_data_09.binproto
Normal file
Binary file not shown.
BIN
app/src/androidTest/assets/backupTests/account_data_10.binproto
Normal file
BIN
app/src/androidTest/assets/backupTests/account_data_10.binproto
Normal file
Binary file not shown.
BIN
app/src/androidTest/assets/backupTests/account_data_11.binproto
Normal file
BIN
app/src/androidTest/assets/backupTests/account_data_11.binproto
Normal file
Binary file not shown.
BIN
app/src/androidTest/assets/backupTests/account_data_12.binproto
Normal file
BIN
app/src/androidTest/assets/backupTests/account_data_12.binproto
Normal file
Binary file not shown.
BIN
app/src/androidTest/assets/backupTests/account_data_13.binproto
Normal file
BIN
app/src/androidTest/assets/backupTests/account_data_13.binproto
Normal file
Binary file not shown.
BIN
app/src/androidTest/assets/backupTests/account_data_14.binproto
Normal file
BIN
app/src/androidTest/assets/backupTests/account_data_14.binproto
Normal file
Binary file not shown.
BIN
app/src/androidTest/assets/backupTests/account_data_15.binproto
Normal file
BIN
app/src/androidTest/assets/backupTests/account_data_15.binproto
Normal file
Binary file not shown.
BIN
app/src/androidTest/assets/backupTests/account_data_16.binproto
Normal file
BIN
app/src/androidTest/assets/backupTests/account_data_16.binproto
Normal file
Binary file not shown.
BIN
app/src/androidTest/assets/backupTests/account_data_17.binproto
Normal file
BIN
app/src/androidTest/assets/backupTests/account_data_17.binproto
Normal file
Binary file not shown.
BIN
app/src/androidTest/assets/backupTests/account_data_18.binproto
Normal file
BIN
app/src/androidTest/assets/backupTests/account_data_18.binproto
Normal file
Binary file not shown.
BIN
app/src/androidTest/assets/backupTests/account_data_19.binproto
Normal file
BIN
app/src/androidTest/assets/backupTests/account_data_19.binproto
Normal file
Binary file not shown.
BIN
app/src/androidTest/assets/backupTests/account_data_20.binproto
Normal file
BIN
app/src/androidTest/assets/backupTests/account_data_20.binproto
Normal file
Binary file not shown.
BIN
app/src/androidTest/assets/backupTests/account_data_21.binproto
Normal file
BIN
app/src/androidTest/assets/backupTests/account_data_21.binproto
Normal file
Binary file not shown.
BIN
app/src/androidTest/assets/backupTests/account_data_22.binproto
Normal file
BIN
app/src/androidTest/assets/backupTests/account_data_22.binproto
Normal file
Binary file not shown.
BIN
app/src/androidTest/assets/backupTests/account_data_23.binproto
Normal file
BIN
app/src/androidTest/assets/backupTests/account_data_23.binproto
Normal file
Binary file not shown.
BIN
app/src/androidTest/assets/backupTests/account_data_24.binproto
Normal file
BIN
app/src/androidTest/assets/backupTests/account_data_24.binproto
Normal file
Binary file not shown.
BIN
app/src/androidTest/assets/backupTests/account_data_25.binproto
Normal file
BIN
app/src/androidTest/assets/backupTests/account_data_25.binproto
Normal file
Binary file not shown.
BIN
app/src/androidTest/assets/backupTests/account_data_26.binproto
Normal file
BIN
app/src/androidTest/assets/backupTests/account_data_26.binproto
Normal file
Binary file not shown.
BIN
app/src/androidTest/assets/backupTests/account_data_27.binproto
Normal file
BIN
app/src/androidTest/assets/backupTests/account_data_27.binproto
Normal file
Binary file not shown.
BIN
app/src/androidTest/assets/backupTests/ad_hoc_call_00.binproto
Normal file
BIN
app/src/androidTest/assets/backupTests/ad_hoc_call_00.binproto
Normal file
Binary file not shown.
BIN
app/src/androidTest/assets/backupTests/ad_hoc_call_01.binproto
Normal file
BIN
app/src/androidTest/assets/backupTests/ad_hoc_call_01.binproto
Normal file
Binary file not shown.
BIN
app/src/androidTest/assets/backupTests/ad_hoc_call_02.binproto
Normal file
BIN
app/src/androidTest/assets/backupTests/ad_hoc_call_02.binproto
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
app/src/androidTest/assets/backupTests/chat_00.binproto
Normal file
BIN
app/src/androidTest/assets/backupTests/chat_00.binproto
Normal file
Binary file not shown.
BIN
app/src/androidTest/assets/backupTests/chat_01.binproto
Normal file
BIN
app/src/androidTest/assets/backupTests/chat_01.binproto
Normal file
Binary file not shown.
BIN
app/src/androidTest/assets/backupTests/chat_02.binproto
Normal file
BIN
app/src/androidTest/assets/backupTests/chat_02.binproto
Normal file
Binary file not shown.
BIN
app/src/androidTest/assets/backupTests/chat_03.binproto
Normal file
BIN
app/src/androidTest/assets/backupTests/chat_03.binproto
Normal file
Binary file not shown.
BIN
app/src/androidTest/assets/backupTests/chat_04.binproto
Normal file
BIN
app/src/androidTest/assets/backupTests/chat_04.binproto
Normal file
Binary file not shown.
BIN
app/src/androidTest/assets/backupTests/chat_05.binproto
Normal file
BIN
app/src/androidTest/assets/backupTests/chat_05.binproto
Normal file
Binary file not shown.
BIN
app/src/androidTest/assets/backupTests/chat_06.binproto
Normal file
BIN
app/src/androidTest/assets/backupTests/chat_06.binproto
Normal file
Binary file not shown.
BIN
app/src/androidTest/assets/backupTests/chat_07.binproto
Normal file
BIN
app/src/androidTest/assets/backupTests/chat_07.binproto
Normal file
Binary file not shown.
BIN
app/src/androidTest/assets/backupTests/chat_08.binproto
Normal file
BIN
app/src/androidTest/assets/backupTests/chat_08.binproto
Normal file
Binary file not shown.
BIN
app/src/androidTest/assets/backupTests/chat_09.binproto
Normal file
BIN
app/src/androidTest/assets/backupTests/chat_09.binproto
Normal file
Binary file not shown.
BIN
app/src/androidTest/assets/backupTests/chat_10.binproto
Normal file
BIN
app/src/androidTest/assets/backupTests/chat_10.binproto
Normal file
Binary file not shown.
BIN
app/src/androidTest/assets/backupTests/chat_11.binproto
Normal file
BIN
app/src/androidTest/assets/backupTests/chat_11.binproto
Normal file
Binary file not shown.
BIN
app/src/androidTest/assets/backupTests/chat_12.binproto
Normal file
BIN
app/src/androidTest/assets/backupTests/chat_12.binproto
Normal file
Binary file not shown.
BIN
app/src/androidTest/assets/backupTests/chat_13.binproto
Normal file
BIN
app/src/androidTest/assets/backupTests/chat_13.binproto
Normal file
Binary file not shown.
BIN
app/src/androidTest/assets/backupTests/chat_14.binproto
Normal file
BIN
app/src/androidTest/assets/backupTests/chat_14.binproto
Normal file
Binary file not shown.
BIN
app/src/androidTest/assets/backupTests/chat_15.binproto
Normal file
BIN
app/src/androidTest/assets/backupTests/chat_15.binproto
Normal file
Binary file not shown.
BIN
app/src/androidTest/assets/backupTests/chat_16.binproto
Normal file
BIN
app/src/androidTest/assets/backupTests/chat_16.binproto
Normal file
Binary file not shown.
BIN
app/src/androidTest/assets/backupTests/chat_17.binproto
Normal file
BIN
app/src/androidTest/assets/backupTests/chat_17.binproto
Normal file
Binary file not shown.
BIN
app/src/androidTest/assets/backupTests/chat_18.binproto
Normal file
BIN
app/src/androidTest/assets/backupTests/chat_18.binproto
Normal file
Binary file not shown.
BIN
app/src/androidTest/assets/backupTests/chat_19.binproto
Normal file
BIN
app/src/androidTest/assets/backupTests/chat_19.binproto
Normal file
Binary file not shown.
BIN
app/src/androidTest/assets/backupTests/chat_20.binproto
Normal file
BIN
app/src/androidTest/assets/backupTests/chat_20.binproto
Normal file
Binary file not shown.
BIN
app/src/androidTest/assets/backupTests/chat_21.binproto
Normal file
BIN
app/src/androidTest/assets/backupTests/chat_21.binproto
Normal file
Binary file not shown.
BIN
app/src/androidTest/assets/backupTests/chat_22.binproto
Normal file
BIN
app/src/androidTest/assets/backupTests/chat_22.binproto
Normal file
Binary file not shown.
BIN
app/src/androidTest/assets/backupTests/chat_23.binproto
Normal file
BIN
app/src/androidTest/assets/backupTests/chat_23.binproto
Normal file
Binary file not shown.
BIN
app/src/androidTest/assets/backupTests/chat_24.binproto
Normal file
BIN
app/src/androidTest/assets/backupTests/chat_24.binproto
Normal file
Binary file not shown.
BIN
app/src/androidTest/assets/backupTests/chat_25.binproto
Normal file
BIN
app/src/androidTest/assets/backupTests/chat_25.binproto
Normal file
Binary file not shown.
BIN
app/src/androidTest/assets/backupTests/chat_26.binproto
Normal file
BIN
app/src/androidTest/assets/backupTests/chat_26.binproto
Normal file
Binary file not shown.
BIN
app/src/androidTest/assets/backupTests/chat_folder_00.binproto
Normal file
BIN
app/src/androidTest/assets/backupTests/chat_folder_00.binproto
Normal file
Binary file not shown.
BIN
app/src/androidTest/assets/backupTests/chat_folder_01.binproto
Normal file
BIN
app/src/androidTest/assets/backupTests/chat_folder_01.binproto
Normal file
Binary file not shown.
BIN
app/src/androidTest/assets/backupTests/chat_folder_02.binproto
Normal file
BIN
app/src/androidTest/assets/backupTests/chat_folder_02.binproto
Normal file
Binary file not shown.
BIN
app/src/androidTest/assets/backupTests/chat_folder_03.binproto
Normal file
BIN
app/src/androidTest/assets/backupTests/chat_folder_03.binproto
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue