Skip to content

Commit 1228e1a

Browse files
Merge pull request #868 from session-foundation/release/1.21.0
Prepare for release 1.21.0
2 parents 75e2b87 + 3bdba53 commit 1228e1a

File tree

512 files changed

+52899
-28599
lines changed

Some content is hidden

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

512 files changed

+52899
-28599
lines changed

.drone.jsonnet

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ local ci_dep_mirror(want_mirror) = (if want_mirror then ' -DLOCAL_MIRROR=https:/
3838
pull: 'always',
3939
environment: { ANDROID_HOME: '/usr/lib/android-sdk' },
4040
commands: [
41-
'apt-get update',
41+
'apt-get update --allow-releaseinfo-change',
4242
'apt-get install -y ninja-build openjdk-17-jdk',
4343
'update-java-alternatives -s java-1.17.0-openjdk-amd64',
4444
'./gradlew testPlayDebugUnitTestCoverageReport'
@@ -80,7 +80,7 @@ local ci_dep_mirror(want_mirror) = (if want_mirror then ' -DLOCAL_MIRROR=https:/
8080
pull: 'always',
8181
environment: { SSH_KEY: { from_secret: 'SSH_KEY' }, ANDROID_HOME: '/usr/lib/android-sdk' },
8282
commands: [
83-
'apt-get update',
83+
'apt-get update --allow-releaseinfo-change',
8484
'apt-get install -y ninja-build openjdk-17-jdk',
8585
'update-java-alternatives -s java-1.17.0-openjdk-amd64',
8686
'./gradlew assemblePlayDebug',

.drone.yml

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
---
2+
kind: pipeline
3+
type: docker
4+
name: default
5+
6+
steps:
7+
- name: test
8+
image: mingc/android-build-box:1.24.0
9+
commands:
10+
- bash ./gradlew test

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
project.properties
33
.project
44
.settings
5+
.kotlin
56
bin/
67
gen/
78
.idea/

README.md

Lines changed: 18 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -22,43 +22,45 @@ Build instructions can be found in [BUILDING.md](BUILDING.md).
2222

2323
## Translations
2424

25-
Want to help us translate Session into your language? You can do so at https://crowdin.com/project/session-android!
25+
Want to help us translate Session into your language? You can do so at https://getsession.org/translate
2626

2727
## Verifying signatures
2828

2929
**Step 1:**
3030

31+
Add Jason's GPG key. Jason Rhinelander, a member of the [Session Technology Foundation](https://session.foundation/) and is the current signer for all Session Android releases. His GPG key can be found on his GitHub and other sources.
32+
3133
```
3234
wget https://github.com/jagerman.gpg
3335
gpg --import jagerman.gpg
3436
```
3537

3638
**Step 2:**
3739

38-
Get the signed hash for this release. `SESSION_VERSION` needs to be updated for the release you want to verify.
40+
Get the signed hashes for this release. `SESSION_VERSION` needs to be updated for the release you want to verify.
3941

4042
```
41-
export SESSION_VERSION=1.10.4
42-
wget https://github.com/session-foundation/session-android/releases/download/$SESSION_VERSION/signatures.asc
43+
export SESSION_VERSION=1.20.8
44+
wget https://github.com/session-foundation/session-android/releases/download/$SESSION_VERSION/signature.asc
4345
```
4446

4547
**Step 3:**
4648

4749
Verify the signature of the hashes of the files.
4850

4951
```
50-
gpg --verify signatures.asc 2>&1 |grep "Good signature from"
52+
gpg --verify signature.asc 2>&1 |grep "Good signature from"
5153
```
5254

53-
The command above should print "`Good signature from "Kee Jefferys...`". If it does, the hashes are valid but we still have to make the sure the signed hashes matches the downloaded files.
55+
The command above should print "`Good signature from "Jason Rhinelander...`". If it does, the hashes are valid but we still have to make the sure the signed hashes match the downloaded files.
5456

5557
**Step 4:**
5658

57-
Make sure the two commands below returns the same hash. If they do, files are valid.
59+
Make sure the two commands below return the same hash for the file you are checking. If they do, file is valid.
5860

5961
```
6062
sha256sum session-$SESSION_VERSION-universal.apk
61-
grep universal.apk signatures.asc
63+
grep universal.apk signature.asc
6264
```
6365

6466
## License
@@ -67,10 +69,17 @@ Copyright 2011 Whisper Systems
6769

6870
Copyright 2013-2017 Open Whisper Systems
6971

70-
Copyright 2019-2021 The Oxen Project
72+
Copyright 2019-2024 The Oxen Project
73+
74+
Copyright 2024-2025 Session Technology Foundation
7175

7276
Licensed under the GPLv3: http://www.gnu.org/licenses/gpl-3.0.html
7377

78+
## Attributions
79+
80+
This project uses [Lucide Icon Font](https://lucide.dev/), which is licensed under the
81+
[ISC License](third_party_licenses/LucideLicense.txt).
82+
7483
## Socials
7584
<a href="https://twitter.com/session_app">
7685
<img align="left" width="26px" src="https://www.vectorlogo.zone/logos/twitter/twitter-official.svg" />

app/build.gradle

Lines changed: 29 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,22 @@
11
plugins {
2+
id 'com.android.application'
3+
id 'org.jetbrains.kotlin.android'
4+
id 'org.jetbrains.kotlin.plugin.serialization'
5+
id 'org.jetbrains.kotlin.plugin.compose'
26
id 'com.google.devtools.ksp'
37
id 'com.google.dagger.hilt.android'
8+
id 'kotlin-parcelize'
9+
id 'kotlinx-serialization'
410
}
511

6-
apply plugin: 'com.android.application'
7-
apply plugin: 'kotlin-android'
812
apply plugin: 'witness'
9-
apply plugin: 'kotlin-parcelize'
10-
apply plugin: 'kotlinx-serialization'
1113

12-
configurations.forEach {
13-
it.exclude module: "commons-logging"
14+
configurations.configureEach {
15+
exclude module: "commons-logging"
1416
}
1517

16-
def canonicalVersionCode = 390
17-
def canonicalVersionName = "1.20.8"
18+
def canonicalVersionCode = 396
19+
def canonicalVersionName = "1.21.0"
1820

1921
def postFixSize = 10
2022
def abiPostFix = ['armeabi-v7a' : 1,
@@ -40,12 +42,12 @@ android {
4042
useLibrary 'org.apache.http.legacy'
4143

4244
compileOptions {
43-
sourceCompatibility JavaVersion.VERSION_1_8
44-
targetCompatibility JavaVersion.VERSION_1_8
45+
sourceCompatibility JavaVersion.VERSION_17
46+
targetCompatibility JavaVersion.VERSION_17
4547
}
4648

4749
kotlinOptions {
48-
jvmTarget = '1.8'
50+
jvmTarget = '17'
4951
}
5052

5153
packagingOptions {
@@ -54,6 +56,7 @@ android {
5456
}
5557
}
5658

59+
5760
splits {
5861
abi {
5962
enable !project.hasProperty('huawei') // huawei builds do not need the split variants
@@ -64,7 +67,8 @@ android {
6467
}
6568

6669
buildFeatures {
67-
compose true
70+
viewBinding true
71+
buildConfig true
6872
}
6973

7074
composeOptions {
@@ -198,11 +202,11 @@ android {
198202
}
199203
}
200204

201-
buildFeatures {
202-
viewBinding true
203-
}
204-
205205
def huaweiEnabled = project.properties['huawei'] != null
206+
lint {
207+
abortOnError true
208+
baseline file('lint-baseline.xml')
209+
}
206210

207211
applicationVariants.configureEach { variant ->
208212
if (variant.flavorName == 'huawei') {
@@ -261,6 +265,8 @@ dependencies {
261265
ksp("androidx.hilt:hilt-compiler:$jetpackHiltVersion")
262266
ksp("com.google.dagger:hilt-compiler:$daggerHiltVersion")
263267
ksp("com.github.bumptech.glide:ksp:$glideVersion")
268+
implementation("androidx.hilt:hilt-navigation-compose:$androidxHiltVersion")
269+
implementation("androidx.hilt:hilt-work:$androidxHiltVersion")
264270

265271
implementation("com.google.dagger:hilt-android:$daggerHiltVersion")
266272
implementation "androidx.appcompat:appcompat:$appcompatVersion"
@@ -340,7 +346,6 @@ dependencies {
340346
implementation "com.squareup.okhttp3:okhttp:$okhttpVersion"
341347
implementation "com.squareup.phrase:phrase:$phraseVersion"
342348
implementation 'app.cash.copper:copper-flow:1.0.0'
343-
implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlinVersion"
344349
implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:$coroutinesVersion"
345350
implementation "nl.komponents.kovenant:kovenant:$kovenantVersion"
346351
implementation "nl.komponents.kovenant:kovenant-android:$kovenantVersion"
@@ -363,7 +368,6 @@ dependencies {
363368
androidTestImplementation('com.adevinta.android:barista:4.2.0') {
364369
exclude group: 'org.jetbrains.kotlin'
365370
}
366-
367371
// AndroidJUnitRunner and JUnit Rules
368372
androidTestImplementation 'androidx.test:runner:1.5.2'
369373
androidTestImplementation 'androidx.test:rules:1.5.0'
@@ -382,6 +386,8 @@ dependencies {
382386
androidTestImplementation 'androidx.test.espresso:espresso-web:3.5.1'
383387
androidTestImplementation 'androidx.test.espresso.idling:idling-concurrent:3.5.1'
384388
androidTestImplementation 'androidx.test.espresso:espresso-idling-resource:3.5.1'
389+
androidTestImplementation "androidx.compose.ui:ui-test-junit4:1.5.3"
390+
debugImplementation "androidx.compose.ui:ui-test-manifest:1.5.3"
385391
androidTestUtil 'androidx.test:orchestrator:1.4.2'
386392

387393
testImplementation 'org.robolectric:robolectric:4.12.2'
@@ -405,6 +411,11 @@ dependencies {
405411
androidTestImplementation "androidx.compose.ui:ui-test-junit4-android"
406412
debugImplementation "androidx.compose.ui:ui-test-manifest"
407413

414+
// Navigation
415+
implementation "androidx.navigation:navigation-fragment-ktx:$navVersion"
416+
implementation "androidx.navigation:navigation-ui-ktx:$navVersion"
417+
implementation "androidx.navigation:navigation-compose:$navVersion"
418+
408419
implementation "com.google.accompanist:accompanist-themeadapter-appcompat:0.33.1-alpha"
409420
implementation "com.google.accompanist:accompanist-permissions:0.36.0"
410421
implementation "com.google.accompanist:accompanist-drawablepainter:0.33.1-alpha"

app/src/androidTest/AndroidManifest.xml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,5 +3,8 @@
33
<application>
44
<uses-library android:name="android.test.runner"
55
android:required="false" />
6+
7+
<activity android:name="androidx.activity.ComponentActivity"/>
8+
69
</application>
710
</manifest>

0 commit comments

Comments
 (0)