mirror of
https://github.com/signalapp/Signal-Android.git
synced 2026-02-15 15:37:29 +00:00
Compare commits
1236 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
9b9734f82a | ||
|
|
fe437b5234 | ||
|
|
59bb505a3e | ||
|
|
28d8d62cbd | ||
|
|
cb05608422 | ||
|
|
e384a37fab | ||
|
|
9a04cd9e3b | ||
|
|
dd396eb75a | ||
|
|
611b52780e | ||
|
|
20a05220ea | ||
|
|
38e8f24c20 | ||
|
|
58d2c92102 | ||
|
|
f90ba45940 | ||
|
|
1ecf42bfd3 | ||
|
|
ed56c21e5b | ||
|
|
a0c55baf39 | ||
|
|
3b3ef0d545 | ||
|
|
78e7f99344 | ||
|
|
d709d67f54 | ||
|
|
6d30fd11a7 | ||
|
|
4a39c7950f | ||
|
|
3dd5ad2a8a | ||
|
|
d7b7727aa6 | ||
|
|
0199cd24ef | ||
|
|
8513e8c4f9 | ||
|
|
5d2d9017f1 | ||
|
|
879e8f98bd | ||
|
|
2c6524f6c0 | ||
|
|
c9bd81d332 | ||
|
|
2d29b02cea | ||
|
|
c0a279fcc5 | ||
|
|
1a612fab0b | ||
|
|
63e821634a | ||
|
|
62d951b438 | ||
|
|
8d749c404f | ||
|
|
d5b2f4fdd3 | ||
|
|
fae4ca91bd | ||
|
|
6e92ff5096 | ||
|
|
61522cd682 | ||
|
|
74dbd0814a | ||
|
|
05751a5b79 | ||
|
|
7741844055 | ||
|
|
09c07f0707 | ||
|
|
c565db812e | ||
|
|
00b72c9263 | ||
|
|
5c415139fd | ||
|
|
6d944c0f8c | ||
|
|
6744a79325 | ||
|
|
472d86acc0 | ||
|
|
c1ee7a53b5 | ||
|
|
8d44640377 | ||
|
|
cbcbe3f564 | ||
|
|
698923423f | ||
|
|
bc6114f6e0 | ||
|
|
21d91bb2cf | ||
|
|
bda9664cb9 | ||
|
|
9c055a35a9 | ||
|
|
bf794c41da | ||
|
|
de698c8a1a | ||
|
|
f972382f5e | ||
|
|
73b0331884 | ||
|
|
2248abb749 | ||
|
|
13435c0b54 | ||
|
|
5575f75118 | ||
|
|
4ce3c2309c | ||
|
|
cd7ee1a042 | ||
|
|
cd087113e3 | ||
|
|
36b6122b0f | ||
|
|
a74651d915 | ||
|
|
c274805eb0 | ||
|
|
d86d88f313 | ||
|
|
265e875a78 | ||
|
|
8353ad4962 | ||
|
|
9369cafd38 | ||
|
|
989cda6662 | ||
|
|
0570aaeb6e | ||
|
|
5a19117850 | ||
|
|
ff726ec4d2 | ||
|
|
0cd93986bd | ||
|
|
bc7ba5f2c6 | ||
|
|
1ddde6ab92 | ||
|
|
e9f2580bb8 | ||
|
|
b9dc2d3969 | ||
|
|
7e27203bd8 | ||
|
|
5a582c12d8 | ||
|
|
cd925d5f53 | ||
|
|
853a37920c | ||
|
|
2aa0b3700f | ||
|
|
35190ebb63 | ||
|
|
d74350b708 | ||
|
|
bd3e4f9f87 | ||
|
|
7370756344 | ||
|
|
7894377d1d | ||
|
|
6416df241f | ||
|
|
85408f2b12 | ||
|
|
b698daa4cf | ||
|
|
3a035a1b33 | ||
|
|
a11888ff71 | ||
|
|
423b8c942c | ||
|
|
26739491a5 | ||
|
|
6bf39c5102 | ||
|
|
daac3bd143 | ||
|
|
028242826e | ||
|
|
99d9c670b6 | ||
|
|
bc592cc4e2 | ||
|
|
04707b00e7 | ||
|
|
d44abfaeac | ||
|
|
6c30f3d573 | ||
|
|
2e70ed14dd | ||
|
|
7823d4f49f | ||
|
|
7bd3482367 | ||
|
|
709adf05aa | ||
|
|
524736c5b2 | ||
|
|
f53ae66fc9 | ||
|
|
0c102b061c | ||
|
|
ee198e47c8 | ||
|
|
75c2931c8d | ||
|
|
2bb4edecd7 | ||
|
|
b79d9af7ae | ||
|
|
5c50372021 | ||
|
|
d0d32c8f33 | ||
|
|
2aaaa1791e | ||
|
|
6ed63a67cd | ||
|
|
b858955243 | ||
|
|
63a676b0ef | ||
|
|
155b59d71f | ||
|
|
d9dba89781 | ||
|
|
0a572153f0 | ||
|
|
ce46c44b5d | ||
|
|
e6918b592e | ||
|
|
ddbbb4c21a | ||
|
|
d23290107b | ||
|
|
69f4c89f84 | ||
|
|
279f9578cc | ||
|
|
af7989839f | ||
|
|
01fb0c0eb6 | ||
|
|
dab47828c6 | ||
|
|
c070743723 | ||
|
|
9bbd9b56e7 | ||
|
|
311793ac33 | ||
|
|
986923ea6c | ||
|
|
2f6baf8743 | ||
|
|
4c43bf2228 | ||
|
|
585bd5f24c | ||
|
|
d420c0332b | ||
|
|
e32df5d247 | ||
|
|
19a8ec02cb | ||
|
|
798d4b90c3 | ||
|
|
206f1f3775 | ||
|
|
96273bb724 | ||
|
|
c0d9efc930 | ||
|
|
6722d9d15d | ||
|
|
52c2c58988 | ||
|
|
e3efc53b64 | ||
|
|
9a18f5ef6b | ||
|
|
ce8d545d6f | ||
|
|
f875a0c882 | ||
|
|
4bbddf736c | ||
|
|
c1da17df48 | ||
|
|
f6fa8166d2 | ||
|
|
20016adef1 | ||
|
|
265bb29626 | ||
|
|
d16be8c4d7 | ||
|
|
791a38a181 | ||
|
|
d1010eb886 | ||
|
|
471b214b4a | ||
|
|
f505d48d80 | ||
|
|
6d9a2d4787 | ||
|
|
a36e2408f7 | ||
|
|
9012a2afc0 | ||
|
|
4921198cd8 | ||
|
|
530b57644f | ||
|
|
921415632b | ||
|
|
c723b2c6bf | ||
|
|
17d338f7af | ||
|
|
3d9e12e4c1 | ||
|
|
4ca849c151 | ||
|
|
3e6145aed0 | ||
|
|
c960f29e38 | ||
|
|
c230eb179b | ||
|
|
05e77b1d33 | ||
|
|
a2bdea5df2 | ||
|
|
b2b2860a48 | ||
|
|
f71c1d0c5d | ||
|
|
43607edc1c | ||
|
|
08beb7ff43 | ||
|
|
b24c4e3302 | ||
|
|
06a6f0ea0b | ||
|
|
bd38c4f5d2 | ||
|
|
2e4665e5c4 | ||
|
|
1b250300c7 | ||
|
|
7f3966ff07 | ||
|
|
1f7e9df7ff | ||
|
|
fd32ec9598 | ||
|
|
ed12a7691d | ||
|
|
5759609a11 | ||
|
|
6a423cb18b | ||
|
|
c727f93534 | ||
|
|
623d2f2659 | ||
|
|
4dede65e32 | ||
|
|
1c5f4da20f | ||
|
|
33d9840a78 | ||
|
|
3e89e07ad3 | ||
|
|
99c3e043e7 | ||
|
|
3858024116 | ||
|
|
b06f0bba61 | ||
|
|
73ea50d162 | ||
|
|
98580e6a6b | ||
|
|
2f0a63774f | ||
|
|
3d8f364d59 | ||
|
|
2d93b31469 | ||
|
|
e27abcb047 | ||
|
|
29b4b32692 | ||
|
|
bdd6bcb932 | ||
|
|
062fb1fe0b | ||
|
|
4a0631a10c | ||
|
|
a0fdc735e7 | ||
|
|
fa842ac281 | ||
|
|
f8d17b04cb | ||
|
|
0ac9f5d7c0 | ||
|
|
1ad7aa901a | ||
|
|
b0aa440b9d | ||
|
|
dc6deee231 | ||
|
|
1cf52cae71 | ||
|
|
c730a09123 | ||
|
|
01fc7fa179 | ||
|
|
d2c6698824 | ||
|
|
e014779b32 | ||
|
|
fe400894b1 | ||
|
|
051e98898d | ||
|
|
9cf77d320c | ||
|
|
7c11239875 | ||
|
|
3e5af23f43 | ||
|
|
a349fdd79e | ||
|
|
af32996728 | ||
|
|
5fa5a98b87 | ||
|
|
a7f239576f | ||
|
|
c2ec9e579e | ||
|
|
b56e2222f5 | ||
|
|
fc94a9d748 | ||
|
|
4b41989b30 | ||
|
|
e3b569ca5b | ||
|
|
6459ef5b66 | ||
|
|
b085989b22 | ||
|
|
888e7f8ed5 | ||
|
|
d50a9c61b0 | ||
|
|
4fdc2bd76b | ||
|
|
3f990327d8 | ||
|
|
8ccd2864fe | ||
|
|
e7bfefa027 | ||
|
|
1da75018eb | ||
|
|
88be84297e | ||
|
|
e1467480e9 | ||
|
|
92c71b3630 | ||
|
|
24c994d5b2 | ||
|
|
f7d87f3436 | ||
|
|
fd635542c0 | ||
|
|
eb826b2786 | ||
|
|
8cd0381df5 | ||
|
|
305c32cfc5 | ||
|
|
bb21363ca8 | ||
|
|
6968edbeec | ||
|
|
a6acbacaef | ||
|
|
870ae8a46f | ||
|
|
a3c9f04719 | ||
|
|
fdcd24feb1 | ||
|
|
c31b2edeab | ||
|
|
ffecdb3747 | ||
|
|
3031d68863 | ||
|
|
fe1755f250 | ||
|
|
e162eb27c7 | ||
|
|
f4863efb2e | ||
|
|
5b3c51013b | ||
|
|
06bdc36136 | ||
|
|
6e4edbd12d | ||
|
|
c38fafe9fd | ||
|
|
6f213158ed | ||
|
|
3db8f5a2af | ||
|
|
0b5fa18504 | ||
|
|
7ea1080801 | ||
|
|
4c47f337ea | ||
|
|
952990c8af | ||
|
|
f2582cae54 | ||
|
|
e089be310b | ||
|
|
ed5c51d954 | ||
|
|
08915befa5 | ||
|
|
062e958db5 | ||
|
|
9be82a2739 | ||
|
|
0ea3d524da | ||
|
|
437979373c | ||
|
|
22ed8872e6 | ||
|
|
39fe5b1eb5 | ||
|
|
717794a12e | ||
|
|
4ce51c77a8 | ||
|
|
d9ecab5240 | ||
|
|
71b15d269e | ||
|
|
a1009da324 | ||
|
|
26b8de2282 | ||
|
|
9db33c3fec | ||
|
|
2538e48d0f | ||
|
|
68bf41b36a | ||
|
|
3a91bb8947 | ||
|
|
ee930f59db | ||
|
|
6b5feadf6c | ||
|
|
bd084e606c | ||
|
|
bb674a1539 | ||
|
|
951d073ad6 | ||
|
|
b7d671dcbd | ||
|
|
eb4540600e | ||
|
|
22fc874b99 | ||
|
|
282a707bf9 | ||
|
|
942c155723 | ||
|
|
286ae25ac5 | ||
|
|
38ad0903ff | ||
|
|
d76eb9a9e4 | ||
|
|
a3e8ca8d33 | ||
|
|
e1454cfc6a | ||
|
|
df6d446e83 | ||
|
|
2d17082a76 | ||
|
|
9aa4797792 | ||
|
|
3508269c17 | ||
|
|
c18e6e5e67 | ||
|
|
ce86b511f0 | ||
|
|
b65079ec20 | ||
|
|
b99fec4274 | ||
|
|
15677c663b | ||
|
|
1bd5b03636 | ||
|
|
3542c363d9 | ||
|
|
ec44b9aae7 | ||
|
|
e4ec538f13 | ||
|
|
3e54cc5c77 | ||
|
|
b1feb76535 | ||
|
|
a4b7804c9b | ||
|
|
18b2587936 | ||
|
|
1238151d73 | ||
|
|
c25f6d0bc4 | ||
|
|
2ca4748e00 | ||
|
|
1c30a8f38e | ||
|
|
cd29a1715e | ||
|
|
c9d0a11e85 | ||
|
|
4d8ed34d94 | ||
|
|
d98f51395f | ||
|
|
657a7d2a6b | ||
|
|
d6ade56233 | ||
|
|
d88a862e09 | ||
|
|
9c06b07262 | ||
|
|
c5aedc7d85 | ||
|
|
b9c91d195d | ||
|
|
d4d32c2d36 | ||
|
|
b6538101df | ||
|
|
7e4602863f | ||
|
|
0cc35fe881 | ||
|
|
0620410072 | ||
|
|
ea758edb5e | ||
|
|
1ded375f6f | ||
|
|
c67267b589 | ||
|
|
b1eba86445 | ||
|
|
53accdb446 | ||
|
|
3b40ae3ad3 | ||
|
|
298271fc2b | ||
|
|
7b965bac71 | ||
|
|
e930a0f8ac | ||
|
|
10133b16b3 | ||
|
|
f610c1a8b1 | ||
|
|
e7aed3bab3 | ||
|
|
081ffe2c11 | ||
|
|
3e7b101dbf | ||
|
|
0e50e9b26a | ||
|
|
b7c9c53176 | ||
|
|
d75e9b7a4b | ||
|
|
a967cd8541 | ||
|
|
ea42653ae8 | ||
|
|
0ce5a2eb2b | ||
|
|
e75d28cfca | ||
|
|
224503f6bb | ||
|
|
86aa866626 | ||
|
|
067a22ff90 | ||
|
|
673cff8eed | ||
|
|
413bdb7b38 | ||
|
|
5e81f9c720 | ||
|
|
22078bd774 | ||
|
|
c33716c7b5 | ||
|
|
587c9cb46f | ||
|
|
dda020b2bf | ||
|
|
6fba1b0153 | ||
|
|
cf04bf8018 | ||
|
|
c1caff8005 | ||
|
|
04ccefbcf8 | ||
|
|
6d32e534dc | ||
|
|
293dcb93d6 | ||
|
|
6cb716516d | ||
|
|
aa3079673f | ||
|
|
37e77a53f9 | ||
|
|
7969df4e4c | ||
|
|
4b06e14df6 | ||
|
|
da9c5edcc6 | ||
|
|
109fc7f1fa | ||
|
|
cc381513ef | ||
|
|
1ad19a7d45 | ||
|
|
3185bb6031 | ||
|
|
630c21b07a | ||
|
|
6594b8532e | ||
|
|
c6de4c7650 | ||
|
|
7297f7a894 | ||
|
|
0f5b790461 | ||
|
|
783af42b1a | ||
|
|
ab5426e6bb | ||
|
|
464345ee5f | ||
|
|
bafa9a26c6 | ||
|
|
5d08906afd | ||
|
|
a4dc4a8a1b | ||
|
|
5a19ec10f5 | ||
|
|
0a41bbd22d | ||
|
|
2b4d5d74f2 | ||
|
|
fea836d20b | ||
|
|
cbee088d09 | ||
|
|
145b654533 | ||
|
|
7a90e285b5 | ||
|
|
c8b7bc2f5b | ||
|
|
ba63a5255d | ||
|
|
30e43e99fc | ||
|
|
706d89db87 | ||
|
|
abf32bf6ff | ||
|
|
2a45e1cbf2 | ||
|
|
56e6c4ab34 | ||
|
|
4d782491f4 | ||
|
|
f41a0f8f97 | ||
|
|
188f1c52a9 | ||
|
|
559a665831 | ||
|
|
8fd17fd909 | ||
|
|
6d01fff7ee | ||
|
|
2d5a56a88a | ||
|
|
fbbcf30737 | ||
|
|
3ba120cc10 | ||
|
|
81305bfc6b | ||
|
|
6b7509d4f8 | ||
|
|
448dda37bf | ||
|
|
2a21fe1784 | ||
|
|
f4c246eef0 | ||
|
|
002d70496f | ||
|
|
61be2b92ba | ||
|
|
54fb7ff23f | ||
|
|
804f479cb0 | ||
|
|
864867f60e | ||
|
|
8e2f2b8d1a | ||
|
|
38bc2b950f | ||
|
|
37f67f9717 | ||
|
|
5ea5279fbb | ||
|
|
1a5163fc47 | ||
|
|
d2c3861ac7 | ||
|
|
c9a0fb30b0 | ||
|
|
44ec15c0e0 | ||
|
|
40008bddc7 | ||
|
|
80598d42cc | ||
|
|
22701da765 | ||
|
|
7c9aa3de72 | ||
|
|
b3b934e009 | ||
|
|
acd82353b1 | ||
|
|
87e56bf4bf | ||
|
|
8783d69406 | ||
|
|
ae4a3433f9 | ||
|
|
a3aeceb041 | ||
|
|
d4a03ae16b | ||
|
|
4219e2d16f | ||
|
|
1b77a523e4 | ||
|
|
872c7c5ce2 | ||
|
|
8eef29cd77 | ||
|
|
02f4867d8a | ||
|
|
8e06637b4f | ||
|
|
df07f4fee4 | ||
|
|
66c8790e1c | ||
|
|
2bf3ec60eb | ||
|
|
fee062e727 | ||
|
|
becacb5913 | ||
|
|
7640dde28f | ||
|
|
246abb9b80 | ||
|
|
03bbf196c8 | ||
|
|
c2ea1ba225 | ||
|
|
8608942387 | ||
|
|
e80aecbb4c | ||
|
|
180dcb3a41 | ||
|
|
ac3fced0b4 | ||
|
|
04ed3d0334 | ||
|
|
1ad838d8ce | ||
|
|
25481b7408 | ||
|
|
cc3919244b | ||
|
|
9cd2838cbf | ||
|
|
cd3c0dc5c1 | ||
|
|
8030be031f | ||
|
|
a3f1cc508e | ||
|
|
d918e11cab | ||
|
|
6680e74cea | ||
|
|
0afa75564f | ||
|
|
7978cc668d | ||
|
|
eebf3e0836 | ||
|
|
cffc445048 | ||
|
|
412b014b13 | ||
|
|
94241f7068 | ||
|
|
c851387f57 | ||
|
|
16d5db3639 | ||
|
|
69d2ad410f | ||
|
|
9f0f8b7cbc | ||
|
|
d5150d44e3 | ||
|
|
b5f444d1cf | ||
|
|
8f83bf43af | ||
|
|
be3d231fcc | ||
|
|
8149c469c8 | ||
|
|
a3e3291d9c | ||
|
|
4efcf14b7a | ||
|
|
be600f769d | ||
|
|
2a3888472f | ||
|
|
9997ac2ef9 | ||
|
|
925e46ff3a | ||
|
|
0e46ab33e8 | ||
|
|
2e1291b3c3 | ||
|
|
90fe924d18 | ||
|
|
37179a9199 | ||
|
|
12a0264e4b | ||
|
|
278030d950 | ||
|
|
69b63a020c | ||
|
|
5ebbcc0e26 | ||
|
|
ec86d6f8bd | ||
|
|
caa0c26a54 | ||
|
|
c46a005758 | ||
|
|
92389284a5 | ||
|
|
2ab04f67b9 | ||
|
|
d0e09c0792 | ||
|
|
b316c6f29e | ||
|
|
9798a11e51 | ||
|
|
6352271e31 | ||
|
|
2e316cbea0 | ||
|
|
a17bad36b2 | ||
|
|
88b0e716e6 | ||
|
|
912489d1c8 | ||
|
|
5be3721869 | ||
|
|
385efaaebd | ||
|
|
46672dfed8 | ||
|
|
46596fe79e | ||
|
|
9173aeabf2 | ||
|
|
2c7beb9258 | ||
|
|
1abd09754f | ||
|
|
d5aba6cd9a | ||
|
|
5ed4813331 | ||
|
|
5bbc526923 | ||
|
|
e4224a5576 | ||
|
|
baf3309a04 | ||
|
|
dd8104bf61 | ||
|
|
ccdec5113f | ||
|
|
bca406c8d3 | ||
|
|
1a4eabd074 | ||
|
|
7e4085b9a9 | ||
|
|
7adcc466ad | ||
|
|
ad45ca1fcc | ||
|
|
a5d5770f2e | ||
|
|
b047f8bc0a | ||
|
|
f4e82e6aab | ||
|
|
70cf74ff4f | ||
|
|
7d4da76895 | ||
|
|
62b0e21f67 | ||
|
|
2147ad29fa | ||
|
|
66f136903f | ||
|
|
e87aa22d32 | ||
|
|
ddaabafe44 | ||
|
|
2225a14e13 | ||
|
|
b9a999b0d0 | ||
|
|
76b1f3451b | ||
|
|
a97dca7b44 | ||
|
|
b2e547f9f2 | ||
|
|
945453cb81 | ||
|
|
ad0b240550 | ||
|
|
dd8f36f280 | ||
|
|
632aec423f | ||
|
|
d241aebade | ||
|
|
ba378d28f4 | ||
|
|
696dba9dee | ||
|
|
44527f3763 | ||
|
|
be5500e990 | ||
|
|
0c3a77f75a | ||
|
|
6bf2efd96c | ||
|
|
c8e0ba8194 | ||
|
|
0c0e1600e6 | ||
|
|
4be3a58f96 | ||
|
|
72206b9523 | ||
|
|
2fad52abdc | ||
|
|
4040b3badd | ||
|
|
a96a0a7009 | ||
|
|
75346c3f6b | ||
|
|
4c00337b1a | ||
|
|
27e6ecb2a0 | ||
|
|
cf14101a24 | ||
|
|
5d5c8803bd | ||
|
|
366badbe92 | ||
|
|
3272e2edc7 | ||
|
|
aa5f5a9c2a | ||
|
|
85aab85d87 | ||
|
|
f5d5ebadf0 | ||
|
|
db5e74b9a8 | ||
|
|
00120e8c33 | ||
|
|
881ad53612 | ||
|
|
7048476399 | ||
|
|
076b78759e | ||
|
|
a79a059816 | ||
|
|
6a6b56e50c | ||
|
|
498481dce3 | ||
|
|
9138a8972f | ||
|
|
677686fa40 | ||
|
|
b2013e5d75 | ||
|
|
800155e5a6 | ||
|
|
e5b8262cfe | ||
|
|
1b5f49e94e | ||
|
|
c0fe2dfdc0 | ||
|
|
b9897eba79 | ||
|
|
89ba3a83ff | ||
|
|
e6f11c7443 | ||
|
|
4cce6d3c86 | ||
|
|
fa334b3752 | ||
|
|
977b291bc7 | ||
|
|
42c3f7ead4 | ||
|
|
95837b09db | ||
|
|
abbec60465 | ||
|
|
8c99843b2d | ||
|
|
04d8f7d9aa | ||
|
|
a0997e6a87 | ||
|
|
4a99d468c7 | ||
|
|
d6156ab3f2 | ||
|
|
10d6e5293b | ||
|
|
683da1f167 | ||
|
|
4b5c9723c1 | ||
|
|
aed9b3afaa | ||
|
|
07f33d22bf | ||
|
|
19192437ad | ||
|
|
1d7ae669b6 | ||
|
|
ab9c8626c0 | ||
|
|
4bb93c653a | ||
|
|
32894ff0a4 | ||
|
|
ea82600a83 | ||
|
|
a09195d9de | ||
|
|
8448cbef52 | ||
|
|
4a61e45fba | ||
|
|
8ac0c42f44 | ||
|
|
587bfcb524 | ||
|
|
179bd17680 | ||
|
|
765c1eeab0 | ||
|
|
107ee5268e | ||
|
|
6aa6b490b5 | ||
|
|
2ba08965d2 | ||
|
|
a7da663d4f | ||
|
|
a4bf92b6a8 | ||
|
|
3258e9dc39 | ||
|
|
dd61187f9a | ||
|
|
9944fbb487 | ||
|
|
bf0307f4b0 | ||
|
|
680d436038 | ||
|
|
2b2e3e1d02 | ||
|
|
6d5bb65c19 | ||
|
|
501f3466a2 | ||
|
|
84c713c2f7 | ||
|
|
303c2ea14a | ||
|
|
109f651681 | ||
|
|
95c9776b4d | ||
|
|
89e6479021 | ||
|
|
e6cb2a9273 | ||
|
|
636f6a338e | ||
|
|
41ba3383b2 | ||
|
|
9095ddaf19 | ||
|
|
b4802c4bf6 | ||
|
|
eb72b88a16 | ||
|
|
be933648b2 | ||
|
|
d4588d738f | ||
|
|
f4cca5ecc1 | ||
|
|
605b85455b | ||
|
|
18c7dbca08 | ||
|
|
55040091af | ||
|
|
24c8501985 | ||
|
|
5f5e0963e1 | ||
|
|
4a163167e0 | ||
|
|
e690c54f7c | ||
|
|
1a39119c2b | ||
|
|
3cd86182db | ||
|
|
c89a3a2bf9 | ||
|
|
908ca124f1 | ||
|
|
5640e9c9b8 | ||
|
|
6d84ea984d | ||
|
|
47201f4955 | ||
|
|
3f5a4ebf7b | ||
|
|
e0d56bfadf | ||
|
|
b9e0d9978b | ||
|
|
ec76372e4d | ||
|
|
fd902159ee | ||
|
|
f16405fabf | ||
|
|
bf4aa9cae9 | ||
|
|
ae8b8bbe7c | ||
|
|
443463aca8 | ||
|
|
b300c911d7 | ||
|
|
6196fb4f44 | ||
|
|
4ecd3ec052 | ||
|
|
b10a57de63 | ||
|
|
3c27a690fd | ||
|
|
dcbd4a3fc4 | ||
|
|
043b7b0a3d | ||
|
|
1862dded65 | ||
|
|
75a53974a4 | ||
|
|
21138b9190 | ||
|
|
8fbfc40ed5 | ||
|
|
63ab448a27 | ||
|
|
d88c8baa83 | ||
|
|
8d931391db | ||
|
|
19afd5c0e6 | ||
|
|
5a9c546dac | ||
|
|
e288b8b429 | ||
|
|
9ddc914cac | ||
|
|
17e7b1735f | ||
|
|
0b27c42e89 | ||
|
|
b15b50798a | ||
|
|
7b7b6a32ee | ||
|
|
4fc516c84f | ||
|
|
76e92f29b9 | ||
|
|
55617c18f0 | ||
|
|
ef05f33f08 | ||
|
|
c25ce2bcdd | ||
|
|
9ed921f58c | ||
|
|
56a4ccb96d | ||
|
|
a8e65619d9 | ||
|
|
123b88e032 | ||
|
|
c268625f52 | ||
|
|
74f9f39656 | ||
|
|
9ddc600972 | ||
|
|
d903bcf2b1 | ||
|
|
19558c5325 | ||
|
|
9d545412a5 | ||
|
|
7301dda5d1 | ||
|
|
c88c565af3 | ||
|
|
f932ea9f1f | ||
|
|
77e2d58dea | ||
|
|
d261f3ebf5 | ||
|
|
9f69ffbb88 | ||
|
|
ab781cab8a | ||
|
|
6d843a9725 | ||
|
|
a387d63b77 | ||
|
|
37544aa8b7 | ||
|
|
963a72a660 | ||
|
|
c316381159 | ||
|
|
3c44d90da7 | ||
|
|
90201a464d | ||
|
|
5f8eaa4f1c | ||
|
|
d6446d2954 | ||
|
|
d763baa270 | ||
|
|
ea70d68ecc | ||
|
|
26cb17e25c | ||
|
|
602fc8c6e7 | ||
|
|
e4fd7a6aee | ||
|
|
12cb74bc05 | ||
|
|
0266de3532 | ||
|
|
e235ce52e5 | ||
|
|
d4c266561f | ||
|
|
bd25447a8f | ||
|
|
2c435ef751 | ||
|
|
96310ba1d0 | ||
|
|
869eada21c | ||
|
|
1d13a62088 | ||
|
|
43bb32e64b | ||
|
|
f38262c0ab | ||
|
|
6e0bfa2cee | ||
|
|
07d270a82d | ||
|
|
1b2e80d2c8 | ||
|
|
329389bb41 | ||
|
|
c8f801da83 | ||
|
|
20f0764c68 | ||
|
|
10f17a1bba | ||
|
|
c2b02ea07c | ||
|
|
81e8ebe839 | ||
|
|
d665856a7c | ||
|
|
1544cb81d5 | ||
|
|
e4abc6d256 | ||
|
|
7901cad90b | ||
|
|
ea5a84b3dd | ||
|
|
9d0422a898 | ||
|
|
4fd4792dd8 | ||
|
|
802f980c6f | ||
|
|
435be7c63d | ||
|
|
e2b57b55d6 | ||
|
|
b3f74d37e1 | ||
|
|
91b70038e6 | ||
|
|
08eca9ac27 | ||
|
|
55916f31aa | ||
|
|
b9abe9c119 | ||
|
|
cb1605bf23 | ||
|
|
dcc533ef49 | ||
|
|
cdafe47c9a | ||
|
|
365ad54f10 | ||
|
|
ded8c99ce2 | ||
|
|
b1d7da5320 | ||
|
|
467fa11a17 | ||
|
|
3346497a25 | ||
|
|
6ea0e176c9 | ||
|
|
8ea443cde1 | ||
|
|
c2d0d80b9f | ||
|
|
cbe72307a0 | ||
|
|
e57b47ec82 | ||
|
|
518bf04e1d | ||
|
|
a430e9b3d3 | ||
|
|
75ce72ee83 | ||
|
|
5d60ab35de | ||
|
|
33f9369883 | ||
|
|
7d1abf0f7c | ||
|
|
17d1061204 | ||
|
|
feb37eea2d | ||
|
|
6bde2fd20a | ||
|
|
7b25cc399d | ||
|
|
525175f04a | ||
|
|
a2aabeaad2 | ||
|
|
cdfcdcc3b7 | ||
|
|
56244ad873 | ||
|
|
e6399517ee | ||
|
|
1c3223f551 | ||
|
|
f4f2976907 | ||
|
|
76f65198bb | ||
|
|
971bcf4f41 | ||
|
|
b49074a786 | ||
|
|
eea89d3b62 | ||
|
|
3f7b73cf5e | ||
|
|
cbc547d322 | ||
|
|
c9a59a7417 | ||
|
|
f8eaa96412 | ||
|
|
33a7f55fa3 | ||
|
|
7cbee2e5f4 | ||
|
|
56725f0f5c | ||
|
|
7b6c2fa729 | ||
|
|
7b34dc75b3 | ||
|
|
8d3d86372f | ||
|
|
7de9218b80 | ||
|
|
f9ddba5aed | ||
|
|
9ab1996f4a | ||
|
|
c7666626a1 | ||
|
|
9a6c869bb5 | ||
|
|
ac86140133 | ||
|
|
534756c833 | ||
|
|
0f35eb7f7b | ||
|
|
a5cca5b0fd | ||
|
|
6e8f982e7b | ||
|
|
a14517fceb | ||
|
|
fe17e01ff5 | ||
|
|
585fb3eea8 | ||
|
|
3e07834c20 | ||
|
|
14cc0f12a6 | ||
|
|
1d403d3dee | ||
|
|
d36a4232be | ||
|
|
5b8750a84f | ||
|
|
0323cb5d98 | ||
|
|
f4369f90e0 | ||
|
|
8b19cbb603 | ||
|
|
aa3a797e19 | ||
|
|
827ceafffb | ||
|
|
cf1afb739f | ||
|
|
b9fe377afd | ||
|
|
a381697949 | ||
|
|
2d87078495 | ||
|
|
1b9695cb98 | ||
|
|
5324290fab | ||
|
|
b8e4ffb5ae | ||
|
|
67a693107e | ||
|
|
e08b86cda6 | ||
|
|
92bab9fb20 | ||
|
|
e7502f08ce | ||
|
|
3a530022fc | ||
|
|
2c8144b32f | ||
|
|
87535a917a | ||
|
|
76448f5426 | ||
|
|
019df97a22 | ||
|
|
51897bb74f | ||
|
|
5f3b4056e9 | ||
|
|
73a3c21716 | ||
|
|
a37209d8ba | ||
|
|
415021eedf | ||
|
|
ea6d512cc8 | ||
|
|
fba6673907 | ||
|
|
faba4682ed | ||
|
|
71b92f03bc | ||
|
|
d4a1cb0bfb | ||
|
|
e16ca2b2d2 | ||
|
|
77e678e05c | ||
|
|
efe0e3b816 | ||
|
|
6c497e131a | ||
|
|
ccb8c1b1b9 | ||
|
|
4aa965144d | ||
|
|
786bcc3da7 | ||
|
|
4447b29e6c | ||
|
|
3ebbb94a1a | ||
|
|
64a7cdafa8 | ||
|
|
c3350c0bb0 | ||
|
|
e2be1e0c79 | ||
|
|
228a993237 | ||
|
|
04923487c4 | ||
|
|
9777aa411c | ||
|
|
d0c1e93b3c | ||
|
|
9b517a14cb | ||
|
|
369085e162 | ||
|
|
93815a0504 | ||
|
|
b88097a6ae | ||
|
|
120cc9c521 | ||
|
|
58304a0fb6 | ||
|
|
6e867d678c | ||
|
|
8b2f58e0e7 | ||
|
|
6976ac7d44 | ||
|
|
8dc2077ad0 | ||
|
|
52fa86046b | ||
|
|
3352ebaa06 | ||
|
|
cbfdc4b57a | ||
|
|
c5753b96ff | ||
|
|
f39ad24cc1 | ||
|
|
6b6877bae7 | ||
|
|
930254da7b | ||
|
|
3df2fa53e8 | ||
|
|
c901639ce8 | ||
|
|
9e1cec7a60 | ||
|
|
9269c66d1e | ||
|
|
fd999be41a | ||
|
|
146a5f5701 | ||
|
|
d49ef1dd7d | ||
|
|
49c5fead39 | ||
|
|
9c705f3a45 | ||
|
|
bea204ab82 | ||
|
|
9350438866 | ||
|
|
4d827adc8b | ||
|
|
9f839b75fb | ||
|
|
c0482e8247 | ||
|
|
17f27f45fc | ||
|
|
2401e33222 | ||
|
|
4345179a1d | ||
|
|
5aa6fc78ee | ||
|
|
e0a86ead58 | ||
|
|
169d0fa964 | ||
|
|
c5397bc7d2 | ||
|
|
43f6e0ad8e | ||
|
|
736811393f | ||
|
|
957ddc82b5 | ||
|
|
16d6e98355 | ||
|
|
2a90809ba3 | ||
|
|
0713a88ddb | ||
|
|
c78b47fbe3 | ||
|
|
5807cbc9e9 | ||
|
|
6d90330e86 | ||
|
|
862bab55af | ||
|
|
7235a3730c | ||
|
|
c24993960d | ||
|
|
7f429dc769 | ||
|
|
a575626abb | ||
|
|
0b71b1837c | ||
|
|
f0df1b99e5 | ||
|
|
23b7ea90a1 | ||
|
|
53a6b0c719 | ||
|
|
bf3135b2d0 | ||
|
|
897461b594 | ||
|
|
63800306a0 | ||
|
|
b649b8c943 | ||
|
|
2c0aa40c61 | ||
|
|
2eb4f650d8 | ||
|
|
7af811eb3f | ||
|
|
d7f43c436e | ||
|
|
2792b9e676 | ||
|
|
bdf2ef5a05 | ||
|
|
23b5a3dcb0 | ||
|
|
909ea6b925 | ||
|
|
a5922c31b1 | ||
|
|
d8758bcc4e | ||
|
|
f88181cc82 | ||
|
|
c3f1036686 | ||
|
|
96292cd4a1 | ||
|
|
81f6035027 | ||
|
|
52005cf62c | ||
|
|
f5effa5be9 | ||
|
|
cae7906f04 | ||
|
|
7ea8cc6b0a | ||
|
|
8669a3d6e0 | ||
|
|
cb3bc91865 | ||
|
|
1a0c4b8135 | ||
|
|
6a456a288d | ||
|
|
901a81fb74 | ||
|
|
b1b99855b2 | ||
|
|
c6f0b4cf83 | ||
|
|
1a5dede780 | ||
|
|
2c8b1c6acb | ||
|
|
d7da56b82f | ||
|
|
d9cfdd1b32 | ||
|
|
b3b3a4bebf | ||
|
|
9021883baa | ||
|
|
c19017f037 | ||
|
|
bff40ff60b | ||
|
|
299445d5f9 | ||
|
|
b2e3d7ba20 | ||
|
|
60df7502ee | ||
|
|
28ea4dbc16 | ||
|
|
c4d9942f0e | ||
|
|
3e50d2318f | ||
|
|
040881e5a6 | ||
|
|
681234ace3 | ||
|
|
98e9694b35 | ||
|
|
95c46b9d82 | ||
|
|
76dfa5d7fe | ||
|
|
b39d562d56 | ||
|
|
148cf63a92 | ||
|
|
c155b4e025 | ||
|
|
90ae9e1636 | ||
|
|
79ee14826d | ||
|
|
179bb6e1da | ||
|
|
c393d65ce6 | ||
|
|
eeb8164c18 | ||
|
|
ea772cbf55 | ||
|
|
dd67398a70 | ||
|
|
d44bed0379 | ||
|
|
236c79bfbb | ||
|
|
7dfee7e315 | ||
|
|
6600849cc4 | ||
|
|
c4255157ac | ||
|
|
3bb6a0a560 | ||
|
|
a05d5ff5e6 | ||
|
|
da6ad2b629 | ||
|
|
09a05c9f4c | ||
|
|
57319d3189 | ||
|
|
40ba967192 | ||
|
|
3c7534f7fa | ||
|
|
79ec47f901 | ||
|
|
6108b5ab77 | ||
|
|
49417bdf9d | ||
|
|
d2fcb191b6 | ||
|
|
dca876e40d | ||
|
|
5e35c209c2 | ||
|
|
22382bc8a3 | ||
|
|
bf9e75d983 | ||
|
|
f96e29c9c9 | ||
|
|
0bf2f9aca7 | ||
|
|
2ba427e3dd | ||
|
|
624ae32a0e | ||
|
|
1339c44892 | ||
|
|
8499402831 | ||
|
|
4df6b87c13 | ||
|
|
7d16e857d4 | ||
|
|
a6c215801b | ||
|
|
b3a9b92717 | ||
|
|
071496e0c1 | ||
|
|
af36b9adbd | ||
|
|
630f998ea4 | ||
|
|
9058f7ed55 | ||
|
|
0dac6344ab | ||
|
|
8adb16912f | ||
|
|
21868878cf | ||
|
|
51e0142f10 | ||
|
|
e8e851dbe0 | ||
|
|
8809b8f77c | ||
|
|
f8aa3644aa | ||
|
|
e1e41b6f7f | ||
|
|
b1f067536b | ||
|
|
217a6187c2 | ||
|
|
1d1f0c0b3a | ||
|
|
ba3c30f768 | ||
|
|
bc85552ded | ||
|
|
ccf1be2359 | ||
|
|
0d3727f08b | ||
|
|
94b464e37c | ||
|
|
ca2cc722d4 | ||
|
|
2c47cd2422 | ||
|
|
1c9d68a932 | ||
|
|
807d10837b | ||
|
|
6e5c569f7e | ||
|
|
4179592ae7 | ||
|
|
1f40c7ab7e | ||
|
|
89a0541574 | ||
|
|
5294bd8a1a | ||
|
|
2d9c572c01 | ||
|
|
8520108bb2 | ||
|
|
2572dac8a7 | ||
|
|
54b31514ba | ||
|
|
1166b99d01 | ||
|
|
b44cd5d4c4 | ||
|
|
08a8c56d5c | ||
|
|
33645c302b | ||
|
|
a7ac138ea3 | ||
|
|
06b85cc3cb | ||
|
|
662404d335 | ||
|
|
631b51baf2 | ||
|
|
c29d77d4a5 | ||
|
|
d4c1c39179 | ||
|
|
71dd1d9d8b | ||
|
|
3b715bc461 | ||
|
|
712616e569 | ||
|
|
c18cb6a926 | ||
|
|
b975e2ed69 | ||
|
|
b87a060251 | ||
|
|
c493fc1c4c | ||
|
|
e083076e40 | ||
|
|
a5c4c3b54a | ||
|
|
3bcfb5ab61 | ||
|
|
8ce17e3e2d | ||
|
|
460b097a71 | ||
|
|
8e9dc78957 | ||
|
|
1ee5d32322 | ||
|
|
42905b5bb8 | ||
|
|
b8c25a4d78 | ||
|
|
cdbe2c1c71 | ||
|
|
d4f08e6d46 | ||
|
|
8322bf3ecc | ||
|
|
21363f085e | ||
|
|
9903a664d4 | ||
|
|
1a1ddbfa39 | ||
|
|
23bbe704ab | ||
|
|
0dda3d54c9 | ||
|
|
dde1d9b2c8 | ||
|
|
7bb0b513e8 | ||
|
|
2046b44fce | ||
|
|
45c64f825d | ||
|
|
94ed0650dc | ||
|
|
0d390769d4 | ||
|
|
2872020c1f | ||
|
|
8723fd9a24 | ||
|
|
9a9661149b | ||
|
|
5dfbfccc08 | ||
|
|
a344618c63 | ||
|
|
24b93fb517 | ||
|
|
f052b1fd90 | ||
|
|
a234896438 | ||
|
|
bed718347c | ||
|
|
53f2049c48 | ||
|
|
00d425356d | ||
|
|
6c42ce411b | ||
|
|
1833248c96 | ||
|
|
f5b1857866 | ||
|
|
114524adc6 | ||
|
|
47fb0deca4 | ||
|
|
98f4baa7b2 | ||
|
|
e051939adb | ||
|
|
a16ac3394c | ||
|
|
62fdf3d1aa | ||
|
|
9969b10c02 | ||
|
|
ac656e4cb5 | ||
|
|
b3d2e31bae | ||
|
|
c117082f23 | ||
|
|
3c02ff0894 | ||
|
|
e917d39a8e | ||
|
|
38bb15ed44 | ||
|
|
2db87c36a3 | ||
|
|
92d31ee6ff | ||
|
|
d92286297f | ||
|
|
7d35cf1374 | ||
|
|
dcce8ea35a | ||
|
|
71c34e17eb | ||
|
|
ecddf34083 | ||
|
|
958dde0f6e | ||
|
|
d636ef8ec9 | ||
|
|
eb4abf2a9e | ||
|
|
3a06f604fd | ||
|
|
8992ed047d | ||
|
|
dfdadc9d7a | ||
|
|
03c6094ea3 | ||
|
|
ccd36f199a | ||
|
|
7c7f2ff2aa | ||
|
|
47508495ed | ||
|
|
cc43add7af | ||
|
|
19b3d6d1d3 | ||
|
|
1c7f6a68e4 | ||
|
|
8df8cdf28d | ||
|
|
dd01cd15ca | ||
|
|
1e2b1a8b78 | ||
|
|
734aa485ce | ||
|
|
2b56e00e89 | ||
|
|
6f051ce4c2 | ||
|
|
f7bd2ee020 | ||
|
|
a542b65f51 | ||
|
|
4c59a746a5 | ||
|
|
73ad6221a6 | ||
|
|
9ccdbb8e40 | ||
|
|
cd26929d39 | ||
|
|
d7714a2067 | ||
|
|
1056e79361 | ||
|
|
515f3dd43f | ||
|
|
affe97a060 | ||
|
|
ad57b7a2db | ||
|
|
91cd4641f2 | ||
|
|
f919961cb2 | ||
|
|
9dd1f0d17d | ||
|
|
286ad3873f | ||
|
|
748b94e6ba | ||
|
|
d983538122 | ||
|
|
50ed455717 | ||
|
|
f23622d498 | ||
|
|
625941e2e2 | ||
|
|
a2444ffa69 | ||
|
|
ff708eb4ee | ||
|
|
4f3f48aa2f | ||
|
|
b93937e866 | ||
|
|
0ed4785935 | ||
|
|
939dcc9295 | ||
|
|
0d596af187 | ||
|
|
1944b5c61e | ||
|
|
b823e0a9af | ||
|
|
117baf7b65 | ||
|
|
33f7fdedfa | ||
|
|
a34ccd8ce7 | ||
|
|
fc1cd6d262 | ||
|
|
859bb02c86 | ||
|
|
638f718d7c | ||
|
|
58d2fbc94e | ||
|
|
0bbbee645d | ||
|
|
2190a4a58d | ||
|
|
b1feffa627 | ||
|
|
150e98bbc1 | ||
|
|
709ff90d35 | ||
|
|
ee657cb075 | ||
|
|
86ef32cd4c | ||
|
|
2988e22612 | ||
|
|
be41c2e8cb | ||
|
|
f518862dc3 | ||
|
|
3995608fd8 | ||
|
|
9f7a78bf3c | ||
|
|
71a588da39 | ||
|
|
17b42f76a2 | ||
|
|
5e8d72e19e | ||
|
|
308f4c817f | ||
|
|
75df8c0e2a | ||
|
|
1edc94d5ad | ||
|
|
c0f826808b | ||
|
|
e93f889115 | ||
|
|
995215be2a | ||
|
|
784a64c353 | ||
|
|
a549fff6fa | ||
|
|
7b88b07170 | ||
|
|
3273787a05 | ||
|
|
27ddc97ea4 | ||
|
|
f255160c4a | ||
|
|
7cf170ab3d | ||
|
|
8e6664f41c | ||
|
|
2ced30b557 | ||
|
|
1a531548e8 | ||
|
|
d0b53f21bd | ||
|
|
3772df146a | ||
|
|
9a1a6e5c5d | ||
|
|
c4c9fd9f65 |
2
.github/workflows/android.yml
vendored
2
.github/workflows/android.yml
vendored
@@ -28,7 +28,7 @@ jobs:
|
||||
cache: gradle
|
||||
|
||||
- name: Validate Gradle Wrapper
|
||||
uses: gradle/wrapper-validation-action@v3
|
||||
uses: gradle/actions/wrapper-validation@v5
|
||||
|
||||
- name: Build with Gradle
|
||||
run: ./gradlew qa
|
||||
|
||||
2
.github/workflows/diffuse.yml
vendored
2
.github/workflows/diffuse.yml
vendored
@@ -32,7 +32,7 @@ jobs:
|
||||
run: echo "y" | ${ANDROID_SDK_ROOT}/cmdline-tools/latest/bin/sdkmanager --install "ndk;${{ env.NDK_VERSION }}"
|
||||
|
||||
- name: Validate Gradle Wrapper
|
||||
uses: gradle/wrapper-validation-action@v1
|
||||
uses: gradle/actions/wrapper-validation@v5
|
||||
|
||||
- name: Cache base apk
|
||||
id: cache-base
|
||||
|
||||
19
.github/workflows/docker.yml
vendored
19
.github/workflows/docker.yml
vendored
@@ -1,21 +1,20 @@
|
||||
name: Reproducible Build Check
|
||||
name: Check reproducible-build Dockerfile
|
||||
|
||||
on:
|
||||
schedule:
|
||||
- cron: '0 5 * * *'
|
||||
- cron: "0 5 * * *"
|
||||
|
||||
permissions:
|
||||
contents: read # to fetch code (actions/checkout)
|
||||
|
||||
jobs:
|
||||
build:
|
||||
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- name: Build image
|
||||
run: cd reproducible-builds && docker build -t signal-android . && cd ..
|
||||
|
||||
- name: Test build
|
||||
run: docker run --rm -v $(pwd):/project -w /project signal-android ./gradlew clean assemblePlayProdRelease
|
||||
- uses: actions/checkout@v6
|
||||
- name: Build image
|
||||
run: |
|
||||
cd reproducible-builds
|
||||
docker build -t signal-android .
|
||||
- name: Test build
|
||||
run: docker run --memory=12g --rm -v "$(pwd)":/project -w /project signal-android ./gradlew --no-daemon --max-workers=1 -Dorg.gradle.jvmargs="-Xmx4g -XX:MaxMetaspaceSize=512m" -Dkotlin.compiler.execution.strategy=in-process bundlePlayProdRelease
|
||||
|
||||
1
.gitignore
vendored
1
.gitignore
vendored
@@ -32,3 +32,4 @@ maps.key
|
||||
/local/
|
||||
kls_database.db
|
||||
.kotlin
|
||||
lefthook-local.yml
|
||||
|
||||
@@ -1 +1,2 @@
|
||||
java openjdk-17.0.2
|
||||
uv latest
|
||||
|
||||
@@ -62,7 +62,7 @@ You will need to [sign our CLA](https://signal.org/cla/) before your pull reques
|
||||
### Follow the Code Style Guidelines
|
||||
Ensure that your code adheres to the [Code Style Guidelines](https://github.com/signalapp/Signal-Android/wiki/Code-Style-Guidelines) before submitting a pull request.
|
||||
|
||||
You can run `./gradlew format` to automatically check conformance with some of these guidelines.
|
||||
You can run `./gradlew format` to automatically format your code. See `lefthook.yml` for instructions on how to run this as a git hook.
|
||||
|
||||
### Submit finished and well-tested pull requests
|
||||
Please do not submit pull requests that are still a work in progress. Pull requests should be thoroughly tested and ready to merge before they are submitted.
|
||||
|
||||
17
README.md
17
README.md
@@ -1,14 +1,18 @@
|
||||
# Signal Android
|
||||
|
||||
Signal is a simple, powerful, and secure messenger.
|
||||
Signal is a simple, powerful, and secure messenger that uses your phone's data connection (WiFi/3G/4G/5G) to communicate securely.
|
||||
|
||||
Signal uses your phone's data connection (WiFi/3G/4G/5G) to communicate securely. Millions of people use Signal every day for free and instantaneous communication anywhere in the world. Send and receive high-fidelity messages, participate in HD voice/video calls, and explore a growing set of new features that help you stay connected. Signal’s advanced privacy-preserving technology is always enabled, so you can focus on sharing the moments that matter with the people who matter to you.
|
||||
Millions of people use Signal every day for free and instantaneous communication anywhere in the world. Send and receive high-fidelity messages, participate in HD voice/video calls, and explore a growing set of new features that help you stay connected.
|
||||
|
||||
Currently available on the Play Store and [signal.org](https://signal.org/android/apk/).
|
||||
Signal’s advanced privacy-preserving technology is always enabled, so you can focus on sharing the moments that matter with the people who matter to you.
|
||||
|
||||
Currently available on the [Play Store](https://play.google.com/store/apps/details?id=org.thoughtcrime.securesms) and [signal.org](https://signal.org/android/apk/).
|
||||
|
||||
<a href='https://play.google.com/store/apps/details?id=org.thoughtcrime.securesms&pcampaignid=MKT-Other-global-all-co-prtnr-py-PartBadge-Mar2515-1'><img alt='Get it on Google Play' src='https://play.google.com/intl/en_us/badges/images/generic/en_badge_web_generic.png' height='80px'/></a>
|
||||
|
||||
## Contributing Bug reports
|
||||
Also available on [iOS](https://github.com/signalapp/signal-ios) and [Desktop](https://github.com/signalapp/signal-desktop).
|
||||
|
||||
## Contributing Bug Reports
|
||||
We use GitHub for bug tracking. Please search the existing issues for your bug and create a new one if the issue is not yet tracked!
|
||||
|
||||
https://github.com/signalapp/Signal-Android/issues
|
||||
@@ -21,6 +25,11 @@ https://play.google.com/apps/testing/org.thoughtcrime.securesms
|
||||
|
||||
If you're interested in a life of peace and tranquility, stick with the standard releases.
|
||||
|
||||
## Contributing Translations
|
||||
Interested in helping translate Signal? Contribute here:
|
||||
|
||||
https://community.signalusers.org/c/translation-feedback/
|
||||
|
||||
## Contributing Code
|
||||
|
||||
If you're new to the Signal codebase, we recommend going through our issues and picking out a simple bug to fix in order to get yourself familiar. Also please have a look at the [CONTRIBUTING.md](https://github.com/signalapp/Signal-Android/blob/main/CONTRIBUTING.md), that might answer some of your questions.
|
||||
|
||||
@@ -1,10 +1,17 @@
|
||||
@file:Suppress("UnstableApiUsage")
|
||||
|
||||
import com.android.build.api.dsl.ManagedVirtualDevice
|
||||
import org.gradle.api.file.DirectoryProperty
|
||||
import org.gradle.api.file.RegularFileProperty
|
||||
import org.gradle.api.provider.ValueSource
|
||||
import org.gradle.api.provider.ValueSourceParameters
|
||||
import org.gradle.api.tasks.InputDirectory
|
||||
import org.gradle.api.tasks.InputFile
|
||||
import org.gradle.api.tasks.Optional
|
||||
import org.gradle.api.tasks.PathSensitive
|
||||
import org.gradle.api.tasks.PathSensitivity
|
||||
import org.gradle.api.tasks.testing.logging.TestExceptionFormat
|
||||
import java.io.FileInputStream
|
||||
import java.text.SimpleDateFormat
|
||||
import java.util.Date
|
||||
import java.io.File
|
||||
import java.util.Properties
|
||||
|
||||
plugins {
|
||||
@@ -12,6 +19,8 @@ plugins {
|
||||
alias(libs.plugins.jetbrains.kotlin.android)
|
||||
alias(libs.plugins.ktlint)
|
||||
alias(libs.plugins.compose.compiler)
|
||||
alias(libs.plugins.kotlinx.serialization)
|
||||
alias(benchmarkLibs.plugins.baselineprofile)
|
||||
id("androidx.navigation.safeargs")
|
||||
id("kotlin-parcelize")
|
||||
id("com.squareup.wire")
|
||||
@@ -21,12 +30,25 @@ plugins {
|
||||
|
||||
apply(from = "static-ips.gradle.kts")
|
||||
|
||||
val canonicalVersionCode = 1570
|
||||
val canonicalVersionName = "7.52.1"
|
||||
val canonicalVersionCode = 1648
|
||||
val canonicalVersionName = "7.74.0"
|
||||
val currentHotfixVersion = 0
|
||||
val maxHotfixVersions = 100
|
||||
|
||||
val keystores: Map<String, Properties?> = mapOf("debug" to loadKeystoreProperties("keystore.debug.properties"))
|
||||
// We don't want versions to ever end in 0 so that they don't conflict with nightly versions
|
||||
val possibleHotfixVersions = (0 until maxHotfixVersions).toList().filter { it % 10 != 0 }
|
||||
|
||||
val debugKeystorePropertiesProvider = providers.of(PropertiesFileValueSource::class.java) {
|
||||
parameters.file.set(rootProject.layout.projectDirectory.file("keystore.debug.properties"))
|
||||
}
|
||||
|
||||
val languagesProvider = providers.of(LanguageListValueSource::class.java) {
|
||||
parameters.resDir.set(layout.projectDirectory.dir("src/main/res"))
|
||||
}
|
||||
|
||||
val languagesForBuildConfigProvider = languagesProvider.map { languages ->
|
||||
languages.joinToString(separator = ", ") { language -> "\"$language\"" }
|
||||
}
|
||||
|
||||
val selectableVariants = listOf(
|
||||
"nightlyBackupRelease",
|
||||
@@ -39,6 +61,8 @@ val selectableVariants = listOf(
|
||||
"playProdSpinner",
|
||||
"playProdCanary",
|
||||
"playProdPerf",
|
||||
"playProdMocked",
|
||||
"playProdNonMinifiedMocked",
|
||||
"playProdBenchmark",
|
||||
"playProdInstrumentation",
|
||||
"playProdRelease",
|
||||
@@ -49,17 +73,11 @@ val selectableVariants = listOf(
|
||||
"playStagingInstrumentation",
|
||||
"playStagingRelease",
|
||||
"websiteProdSpinner",
|
||||
"websiteProdRelease"
|
||||
"websiteProdRelease",
|
||||
"githubProdSpinner",
|
||||
"githubProdRelease"
|
||||
)
|
||||
|
||||
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
|
||||
|
||||
wire {
|
||||
kotlin {
|
||||
javaInterop = true
|
||||
@@ -70,22 +88,22 @@ wire {
|
||||
}
|
||||
|
||||
protoPath {
|
||||
srcDir("${project.rootDir}/libsignal-service/src/main/protowire")
|
||||
srcDir("${project.rootDir}/lib/libsignal-service/src/main/protowire")
|
||||
}
|
||||
// Handled by libsignal
|
||||
prune("signalservice.DecryptionErrorMessage")
|
||||
}
|
||||
|
||||
ktlint {
|
||||
version.set("1.2.1")
|
||||
version.set("1.5.0")
|
||||
}
|
||||
|
||||
android {
|
||||
namespace = "org.thoughtcrime.securesms"
|
||||
|
||||
buildToolsVersion = signalBuildToolsVersion
|
||||
compileSdkVersion = signalCompileSdkVersion
|
||||
ndkVersion = signalNdkVersion
|
||||
buildToolsVersion = libs.versions.buildTools.get()
|
||||
compileSdkVersion = libs.versions.compileSdk.get()
|
||||
ndkVersion = libs.versions.ndk.get()
|
||||
|
||||
flavorDimensions += listOf("distribution", "environment")
|
||||
testBuildType = "instrumentation"
|
||||
@@ -93,12 +111,12 @@ android {
|
||||
android.bundle.language.enableSplit = false
|
||||
|
||||
kotlinOptions {
|
||||
jvmTarget = signalKotlinJvmTarget
|
||||
jvmTarget = libs.versions.kotlinJvmTarget.get()
|
||||
freeCompilerArgs = listOf("-Xjvm-default=all")
|
||||
suppressWarnings = true
|
||||
}
|
||||
|
||||
keystores["debug"]?.let { properties ->
|
||||
debugKeystorePropertiesProvider.orNull?.let { properties ->
|
||||
signingConfigs.getByName("debug").apply {
|
||||
storeFile = file("${project.rootDir}/${properties.getProperty("storeFile")}")
|
||||
storePassword = properties.getProperty("storePassword")
|
||||
@@ -138,8 +156,8 @@ android {
|
||||
|
||||
compileOptions {
|
||||
isCoreLibraryDesugaringEnabled = true
|
||||
sourceCompatibility = signalJavaVersion
|
||||
targetCompatibility = signalJavaVersion
|
||||
sourceCompatibility = JavaVersion.toVersion(libs.versions.javaVersion.get())
|
||||
targetCompatibility = JavaVersion.toVersion(libs.versions.javaVersion.get())
|
||||
}
|
||||
|
||||
packaging {
|
||||
@@ -161,7 +179,8 @@ android {
|
||||
"META-INF/LICENSE-notice.md",
|
||||
"META-INF/proguard/androidx-annotations.pro",
|
||||
"**/*.dylib",
|
||||
"**/*.dll"
|
||||
"**/*.dll",
|
||||
"**/*.proto"
|
||||
)
|
||||
}
|
||||
}
|
||||
@@ -177,11 +196,14 @@ android {
|
||||
}
|
||||
|
||||
defaultConfig {
|
||||
versionCode = (canonicalVersionCode * maxHotfixVersions) + currentHotfixVersion
|
||||
if (currentHotfixVersion >= maxHotfixVersions) {
|
||||
throw AssertionError("Hotfix version offset is too large!")
|
||||
}
|
||||
versionCode = (canonicalVersionCode * maxHotfixVersions) + possibleHotfixVersions[currentHotfixVersion]
|
||||
versionName = canonicalVersionName
|
||||
|
||||
minSdk = signalMinSdkVersion
|
||||
targetSdk = signalTargetSdkVersion
|
||||
minSdk = libs.versions.minSdk.get().toInt()
|
||||
targetSdk = libs.versions.targetSdk.get().toInt()
|
||||
|
||||
vectorDrawables.useSupportLibrary = true
|
||||
project.ext.set("archivesBaseName", "Signal")
|
||||
@@ -214,14 +236,13 @@ android {
|
||||
buildConfigField("String[]", "SIGNAL_CDSI_IPS", rootProject.extra["cdsi_ips"] as String)
|
||||
buildConfigField("String[]", "SIGNAL_SVR2_IPS", rootProject.extra["svr2_ips"] as String)
|
||||
buildConfigField("String", "SIGNAL_AGENT", "\"OWA\"")
|
||||
buildConfigField("String", "SVR2_MRENCLAVE_LEGACY_LEGACY", "\"9314436a9a144992bb3680770ea5fd7934a7ffd29257844a33763a238903d570\"")
|
||||
buildConfigField("String", "SVR2_MRENCLAVE_LEGACY", "\"093be9ea32405e85ae28dbb48eb668aebeb7dbe29517b9b86ad4bec4dfe0e6a6\"")
|
||||
buildConfigField("String", "SVR2_MRENCLAVE", "\"29cd63c87bea751e3bfd0fbd401279192e2e5c99948b4ee9437eafc4968355fb\"")
|
||||
buildConfigField("String", "UNIDENTIFIED_SENDER_TRUST_ROOT", "\"BXu6QIKVz5MA8gstzfOgRQGqyLqOwNKHL6INkv3IHWMF\"")
|
||||
buildConfigField("String", "SVR2_MRENCLAVE_LEGACY", "\"29cd63c87bea751e3bfd0fbd401279192e2e5c99948b4ee9437eafc4968355fb\"")
|
||||
buildConfigField("String", "SVR2_MRENCLAVE", "\"1240acbd4aa26974184844c8a46b1022d3957ac8a76c1fd8f5b1a15141ee0708\"")
|
||||
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[]", "LANGUAGES", "new String[]{ ${languagesForBuildConfigProvider.get()} }")
|
||||
buildConfigField("int", "CANONICAL_VERSION_CODE", "$canonicalVersionCode")
|
||||
buildConfigField("String", "DEFAULT_CURRENCIES", "\"EUR,AUD,GBP,CAD,CNY\"")
|
||||
buildConfigField("String", "GIPHY_API_KEY", "\"3o6ZsYH6U6Eri53TXy\"")
|
||||
@@ -237,8 +258,8 @@ android {
|
||||
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", "MESSAGE_BACKUP_RESTORE_ENABLED", "false")
|
||||
buildConfigField("boolean", "LINK_DEVICE_UX_ENABLED", "false")
|
||||
buildConfigField("boolean", "USE_STRING_ID", "true")
|
||||
|
||||
ndk {
|
||||
abiFilters += listOf("armeabi-v7a", "arm64-v8a", "x86", "x86_64")
|
||||
@@ -260,7 +281,7 @@ android {
|
||||
|
||||
buildTypes {
|
||||
getByName("debug") {
|
||||
if (keystores["debug"] != null) {
|
||||
if (debugKeystorePropertiesProvider.orNull != null) {
|
||||
signingConfig = signingConfigs["debug"]
|
||||
}
|
||||
isDefault = true
|
||||
@@ -293,6 +314,7 @@ android {
|
||||
manifestPlaceholders["mapsKey"] = getMapsKey()
|
||||
|
||||
buildConfigField("String", "BUILD_VARIANT_TYPE", "\"Debug\"")
|
||||
buildConfigField("boolean", "LINK_DEVICE_UX_ENABLED", "true")
|
||||
}
|
||||
|
||||
getByName("release") {
|
||||
@@ -318,7 +340,6 @@ android {
|
||||
isMinifyEnabled = false
|
||||
matchingFallbacks += "debug"
|
||||
buildConfigField("String", "BUILD_VARIANT_TYPE", "\"Spinner\"")
|
||||
buildConfigField("boolean", "LINK_DEVICE_UX_ENABLED", "true")
|
||||
}
|
||||
|
||||
create("perf") {
|
||||
@@ -341,6 +362,16 @@ android {
|
||||
buildConfigField("boolean", "TRACING_ENABLED", "true")
|
||||
}
|
||||
|
||||
create("mocked") {
|
||||
initWith(getByName("debug"))
|
||||
isDefault = false
|
||||
isDebuggable = false
|
||||
isMinifyEnabled = true
|
||||
matchingFallbacks += "debug"
|
||||
buildConfigField("String", "BUILD_VARIANT_TYPE", "\"Benchmark\"")
|
||||
buildConfigField("boolean", "TRACING_ENABLED", "true")
|
||||
}
|
||||
|
||||
create("canary") {
|
||||
initWith(getByName("debug"))
|
||||
isDefault = false
|
||||
@@ -366,19 +397,20 @@ android {
|
||||
buildConfigField("String", "BUILD_DISTRIBUTION_TYPE", "\"website\"")
|
||||
}
|
||||
|
||||
create("nightly") {
|
||||
val apkUpdateManifestUrl = if (file("${project.rootDir}/nightly-url.txt").exists()) {
|
||||
file("${project.rootDir}/nightly-url.txt").readText().trim()
|
||||
} else {
|
||||
"<unset>"
|
||||
}
|
||||
|
||||
create("github") {
|
||||
dimension = "distribution"
|
||||
versionNameSuffix = "-nightly-untagged-${getDateSuffix()}"
|
||||
buildConfigField("boolean", "MANAGES_APP_UPDATES", "true")
|
||||
buildConfigField("String", "APK_UPDATE_MANIFEST_URL", "\"${apkUpdateManifestUrl}\"")
|
||||
buildConfigField("boolean", "MANAGES_APP_UPDATES", "false")
|
||||
buildConfigField("String", "APK_UPDATE_MANIFEST_URL", "null")
|
||||
buildConfigField("String", "BUILD_DISTRIBUTION_TYPE", "\"github\"")
|
||||
}
|
||||
|
||||
create("nightly") {
|
||||
dimension = "distribution"
|
||||
versionNameSuffix = "-nightly-untagged-${getGitHash()}"
|
||||
buildConfigField("boolean", "MANAGES_APP_UPDATES", "false")
|
||||
buildConfigField("String", "APK_UPDATE_MANIFEST_URL", "null")
|
||||
buildConfigField("String", "BUILD_DISTRIBUTION_TYPE", "\"nightly\"")
|
||||
buildConfigField("boolean", "MESSAGE_BACKUP_RESTORE_ENABLED", "true")
|
||||
buildConfigField("boolean", "LINK_DEVICE_UX_ENABLED", "true")
|
||||
}
|
||||
|
||||
create("prod") {
|
||||
@@ -402,10 +434,9 @@ android {
|
||||
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_LEGACY", "\"38e01eff4fe357dc0b0e8ef7a44b4abc5489fbccba3a78780f3872c277f62bf3\"")
|
||||
buildConfigField("String", "SVR2_MRENCLAVE_LEGACY", "\"2e8cefe6e3f389d8426adb24e9b7fb7adf10902c96f06f7bbcee36277711ed91\"")
|
||||
buildConfigField("String", "SVR2_MRENCLAVE", "\"a75542d82da9f6914a1e31f8a7407053b99cc99a0e7291d8fbd394253e19b036\"")
|
||||
buildConfigField("String", "UNIDENTIFIED_SENDER_TRUST_ROOT", "\"BbqY1DzohE4NUZoVF+L18oUPrK3kILllLEJh2UnPSsEx\"")
|
||||
buildConfigField("String", "SVR2_MRENCLAVE_LEGACY", "\"a75542d82da9f6914a1e31f8a7407053b99cc99a0e7291d8fbd394253e19b036\"")
|
||||
buildConfigField("String", "SVR2_MRENCLAVE", "\"97f151f6ed078edbbfd72fa9cae694dcc08353f1f5e8d9ccd79a971b10ffc535\"")
|
||||
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\"")
|
||||
@@ -414,10 +445,10 @@ android {
|
||||
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", "BUILD_ENVIRONMENT_TYPE", "\"Staging\"")
|
||||
buildConfigField("String", "STRIPE_PUBLISHABLE_KEY", "\"pk_test_sngOd8FnXNkpce9nPXawKrJD00kIDngZkD\"")
|
||||
buildConfigField("boolean", "MESSAGE_BACKUP_RESTORE_ENABLED", "true")
|
||||
}
|
||||
|
||||
create("backup") {
|
||||
@@ -429,7 +460,6 @@ android {
|
||||
|
||||
buildConfigField("boolean", "MANAGES_APP_UPDATES", "true")
|
||||
buildConfigField("String", "BUILD_ENVIRONMENT_TYPE", "\"Backup\"")
|
||||
buildConfigField("boolean", "MESSAGE_BACKUP_RESTORE_ENABLED", "true")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -440,42 +470,43 @@ android {
|
||||
ignoreWarnings = true
|
||||
quiet = true
|
||||
disable += "LintError"
|
||||
}
|
||||
|
||||
applicationVariants.all {
|
||||
outputs
|
||||
.map { it as com.android.build.gradle.internal.api.ApkVariantOutputImpl }
|
||||
.forEach { output ->
|
||||
if (output.baseName.contains("nightly")) {
|
||||
var tag = getCurrentGitTag()
|
||||
if (!tag.isNullOrEmpty()) {
|
||||
if (tag.startsWith("v")) {
|
||||
tag = tag.substring(1)
|
||||
}
|
||||
output.versionNameOverride = tag
|
||||
output.outputFileName = output.outputFileName.replace(".apk", "-${output.versionNameOverride}.apk")
|
||||
} else {
|
||||
output.outputFileName = output.outputFileName.replace(".apk", "-$versionName.apk")
|
||||
}
|
||||
} else {
|
||||
output.outputFileName = output.outputFileName.replace(".apk", "-$versionName.apk")
|
||||
|
||||
if (currentHotfixVersion >= maxHotfixVersions) {
|
||||
throw AssertionError("Hotfix version is too large!")
|
||||
}
|
||||
}
|
||||
}
|
||||
lintConfig = rootProject.file("lint.xml")
|
||||
}
|
||||
|
||||
androidComponents {
|
||||
beforeVariants { variant ->
|
||||
variant.enable = variant.name in selectableVariants
|
||||
}
|
||||
onVariants { variant ->
|
||||
onVariants(selector().all()) { variant: com.android.build.api.variant.ApplicationVariant ->
|
||||
// Include the test-only library on debug builds.
|
||||
if (variant.buildType != "instrumentation") {
|
||||
variant.packaging.jniLibs.excludes.add("**/libsignal_jni_testing.so")
|
||||
}
|
||||
|
||||
// Starting with minSdk 23, Android leaves native libraries uncompressed, which is fine for the Play Store, but not for our self-distributed APKs.
|
||||
// This reverts it to the legacy behavior, compressing the native libraries, and drastically reducing the APK file size.
|
||||
if (variant.name.contains("website", ignoreCase = true) || variant.name.contains("github", ignoreCase = true)) {
|
||||
variant.packaging.jniLibs.useLegacyPackaging.set(true)
|
||||
}
|
||||
|
||||
// Version overrides
|
||||
if (variant.name.contains("nightly", ignoreCase = true)) {
|
||||
var tag = getNightlyTagForCurrentCommit()
|
||||
if (!tag.isNullOrEmpty()) {
|
||||
if (tag.startsWith("v")) {
|
||||
tag = tag.substring(1)
|
||||
}
|
||||
|
||||
// We add a multiple of maxHotfixVersions to nightlies to ensure we're always at least that many versions ahead
|
||||
val nightlyBuffer = (5 * maxHotfixVersions)
|
||||
val nightlyVersionCode = (canonicalVersionCode * maxHotfixVersions) + (getNightlyBuildNumber(tag) * 10) + nightlyBuffer
|
||||
|
||||
variant.outputs.forEach { output ->
|
||||
output.versionName.set(tag)
|
||||
output.versionCode.set(nightlyVersionCode)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -488,6 +519,40 @@ android {
|
||||
java.srcDir(path)
|
||||
}
|
||||
}
|
||||
|
||||
sourceSets {
|
||||
getByName("mocked") {
|
||||
java.srcDir("$projectDir/src/benchmarkShared/java")
|
||||
manifest.srcFile("$projectDir/src/benchmarkShared/AndroidManifest.xml")
|
||||
}
|
||||
|
||||
getByName("benchmark") {
|
||||
java.srcDir("$projectDir/src/benchmarkShared/java")
|
||||
manifest.srcFile("$projectDir/src/benchmarkShared/AndroidManifest.xml")
|
||||
}
|
||||
}
|
||||
|
||||
applicationVariants.configureEach {
|
||||
outputs.configureEach {
|
||||
if (this is com.android.build.gradle.internal.api.BaseVariantOutputImpl) {
|
||||
outputFileName = outputFileName.replace(".apk", "-$versionName.apk")
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
baselineProfile {
|
||||
warnings {
|
||||
disabledVariants = false
|
||||
}
|
||||
|
||||
mergeIntoMain = true
|
||||
|
||||
variants.create("mocked") {
|
||||
from(project(":baseline-profile"))
|
||||
}
|
||||
|
||||
dexLayoutOptimization = false
|
||||
}
|
||||
|
||||
dependencies {
|
||||
@@ -495,23 +560,26 @@ dependencies {
|
||||
ktlintRuleset(libs.ktlint.twitter.compose)
|
||||
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(":lib:libsignal-service"))
|
||||
implementation(project(":lib:paging"))
|
||||
implementation(project(":core:util"))
|
||||
implementation(project(":lib:glide"))
|
||||
implementation(project(":lib:video"))
|
||||
implementation(project(":lib:device-transfer"))
|
||||
implementation(project(":lib:image-editor"))
|
||||
implementation(project(":lib:donations"))
|
||||
implementation(project(":lib:debuglogs-viewer"))
|
||||
implementation(project(":lib:contacts"))
|
||||
implementation(project(":lib:qr"))
|
||||
implementation(project(":lib:sticky-header-grid"))
|
||||
implementation(project(":lib:photoview"))
|
||||
implementation(project(":lib:blurhash"))
|
||||
implementation(project(":core:ui"))
|
||||
implementation(project(":core:models"))
|
||||
implementation(project(":core:models-jvm"))
|
||||
implementation(project(":feature:camera"))
|
||||
|
||||
implementation(libs.androidx.fragment.ktx)
|
||||
implementation(libs.androidx.fragment.compose)
|
||||
implementation(libs.androidx.appcompat) {
|
||||
version {
|
||||
strictly("1.6.1")
|
||||
@@ -533,6 +601,8 @@ dependencies {
|
||||
implementation(libs.androidx.navigation.fragment.ktx)
|
||||
implementation(libs.androidx.navigation.ui.ktx)
|
||||
implementation(libs.androidx.navigation.compose)
|
||||
implementation(libs.androidx.navigation3.runtime)
|
||||
implementation(libs.androidx.navigation3.ui)
|
||||
implementation(libs.androidx.lifecycle.viewmodel.ktx)
|
||||
implementation(libs.androidx.lifecycle.livedata.ktx)
|
||||
implementation(libs.androidx.lifecycle.process)
|
||||
@@ -607,11 +677,12 @@ dependencies {
|
||||
implementation(libs.rxdogtag)
|
||||
implementation(libs.androidx.credentials)
|
||||
implementation(libs.androidx.credentials.compat)
|
||||
implementation(libs.kotlinx.serialization.json)
|
||||
|
||||
"playImplementation"(project(":billing"))
|
||||
"nightlyImplementation"(project(":billing"))
|
||||
implementation(project(":lib:billing"))
|
||||
implementation(project(":feature:media-send"))
|
||||
|
||||
"spinnerImplementation"(project(":spinner"))
|
||||
"spinnerImplementation"(project(":lib:spinner"))
|
||||
|
||||
"canaryImplementation"(libs.square.leakcanary)
|
||||
|
||||
@@ -637,9 +708,12 @@ dependencies {
|
||||
}
|
||||
testImplementation(testLibs.conscrypt.openjdk.uber)
|
||||
testImplementation(testLibs.mockk)
|
||||
testImplementation(testFixtures(project(":libsignal-service")))
|
||||
testImplementation(testFixtures(project(":lib:libsignal-service")))
|
||||
testImplementation(testLibs.espresso.core)
|
||||
testImplementation(testLibs.kotlinx.coroutines.test)
|
||||
testImplementation(libs.androidx.compose.ui.test.junit4)
|
||||
|
||||
"perfImplementation"(libs.androidx.compose.ui.test.manifest)
|
||||
|
||||
androidTestImplementation(platform(libs.androidx.compose.bom))
|
||||
androidTestImplementation(libs.androidx.compose.ui.test.junit4)
|
||||
@@ -650,49 +724,11 @@ dependencies {
|
||||
androidTestImplementation(testLibs.androidx.test.ext.junit.ktx)
|
||||
androidTestImplementation(testLibs.assertk)
|
||||
androidTestImplementation(testLibs.mockk.android)
|
||||
androidTestImplementation(testLibs.square.okhttp.mockserver)
|
||||
androidTestImplementation(testLibs.diff.utils)
|
||||
|
||||
androidTestUtil(testLibs.androidx.test.orchestrator)
|
||||
}
|
||||
|
||||
fun assertIsGitRepo() {
|
||||
if (!file("${project.rootDir}/.git").exists()) {
|
||||
throw IllegalStateException("Must be a git repository to guarantee reproducible builds! (git hash is part of APK)")
|
||||
}
|
||||
}
|
||||
|
||||
fun getLastCommitTimestamp(): String {
|
||||
assertIsGitRepo()
|
||||
|
||||
return providers.exec {
|
||||
commandLine("git", "log", "-1", "--pretty=format:%ct")
|
||||
}.standardOutput.asText.get() + "000"
|
||||
}
|
||||
|
||||
fun getGitHash(): String {
|
||||
assertIsGitRepo()
|
||||
|
||||
return providers.exec {
|
||||
commandLine("git", "rev-parse", "HEAD")
|
||||
}.standardOutput.asText.get().trim().substring(0, 12)
|
||||
}
|
||||
|
||||
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")
|
||||
@@ -703,53 +739,94 @@ tasks.withType<Test>().configureEach {
|
||||
}
|
||||
}
|
||||
|
||||
gradle.taskGraph.whenReady {
|
||||
if (gradle.startParameter.taskNames.any { it.contains("nightly", ignoreCase = true) }) {
|
||||
if (!file("${project.rootDir}/nightly-url.txt").exists()) {
|
||||
throw GradleException("Missing required file: nightly-url.txt")
|
||||
}
|
||||
}
|
||||
fun getLastCommitTimestamp(): String {
|
||||
return providers.exec {
|
||||
commandLine("git", "log", "-1", "--pretty=format:%ct")
|
||||
}.standardOutput.asText.get() + "000"
|
||||
}
|
||||
|
||||
fun loadKeystoreProperties(filename: String): Properties? {
|
||||
val keystorePropertiesFile = file("${project.rootDir}/$filename")
|
||||
fun getGitHash(): String {
|
||||
return providers.exec {
|
||||
commandLine("git", "rev-parse", "HEAD")
|
||||
}.standardOutput.asText.get().trim().substring(0, 12)
|
||||
}
|
||||
|
||||
return if (keystorePropertiesFile.exists()) {
|
||||
val keystoreProperties = Properties()
|
||||
keystoreProperties.load(FileInputStream(keystorePropertiesFile))
|
||||
keystoreProperties
|
||||
fun getNightlyTagForCurrentCommit(): String? {
|
||||
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
|
||||
}
|
||||
}
|
||||
|
||||
fun getDateSuffix(): String {
|
||||
return SimpleDateFormat("yyyy-MM-dd-HH:mm").format(Date())
|
||||
fun getNightlyBuildNumber(tag: String?): Int {
|
||||
if (tag == null) {
|
||||
return 0
|
||||
}
|
||||
|
||||
val match = Regex("-(\\d{3})$").find(tag)
|
||||
return match?.groupValues?.get(1)?.toIntOrNull() ?: 0
|
||||
}
|
||||
|
||||
fun getMapsKey(): String {
|
||||
val mapKey = file("${project.rootDir}/maps.key")
|
||||
return providers
|
||||
.gradleProperty("mapsKey")
|
||||
.orElse(providers.environmentVariable("MAPS_KEY"))
|
||||
.orElse("AIzaSyCSx9xea86GwDKGznCAULE9Y5a8b-TfN9U")
|
||||
.get()
|
||||
}
|
||||
|
||||
return if (mapKey.exists()) {
|
||||
mapKey.readLines()[0]
|
||||
} else {
|
||||
"AIzaSyCSx9xea86GwDKGznCAULE9Y5a8b-TfN9U"
|
||||
abstract class LanguageListValueSource : ValueSource<List<String>, LanguageListValueSource.Params> {
|
||||
interface Params : ValueSourceParameters {
|
||||
@get:InputDirectory
|
||||
@get:PathSensitive(PathSensitivity.RELATIVE)
|
||||
val resDir: DirectoryProperty
|
||||
}
|
||||
|
||||
override fun obtain(): 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")
|
||||
|
||||
val resRoot = parameters.resDir.asFile.get()
|
||||
|
||||
val languages = resRoot
|
||||
.walkTopDown()
|
||||
.filter { it.isFile && it.name == "strings.xml" }
|
||||
.mapNotNull { stringFile -> stringFile.parentFile?.name }
|
||||
.map { valuesFolderName -> valuesFolderName.removePrefix("values-") }
|
||||
.filter { valuesFolderName -> valuesFolderName != "values" }
|
||||
.map { languageCode -> languageCode.replace("-r", "_") }
|
||||
.toList()
|
||||
.distinct()
|
||||
.sorted()
|
||||
|
||||
return languages + updatedLanguageCodes + "en"
|
||||
}
|
||||
}
|
||||
|
||||
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")
|
||||
abstract class PropertiesFileValueSource : ValueSource<Properties?, PropertiesFileValueSource.Params> {
|
||||
interface Params : ValueSourceParameters {
|
||||
@get:InputFile
|
||||
@get:Optional
|
||||
@get:PathSensitive(PathSensitivity.RELATIVE)
|
||||
val file: RegularFileProperty
|
||||
}
|
||||
|
||||
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"
|
||||
override fun obtain(): Properties? {
|
||||
val f: File = parameters.file.asFile.get()
|
||||
if (!f.exists()) return null
|
||||
|
||||
return Properties().apply {
|
||||
f.inputStream().use { load(it) }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fun String.capitalize(): String {
|
||||
|
||||
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.
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.
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.
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.
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.
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.
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
Reference in New Issue
Block a user