Pier Angelo Vendrame pushed to branch main at The Tor Project / Applications / tor-browser-build
Commits:
-
47f3949c
by Beatriz Rizental at 2025-01-13T16:21:37+01:00
4 changed files:
- projects/browser/build.android
- projects/geckoview/build_ac_fenix
- projects/geckoview/config
- projects/geckoview/gradle-dependencies-list.txt
Changes:
... | ... | @@ -4,19 +4,13 @@ |
4 | 4 | |
5 | 5 | tar -xf $rootdir/[% c('input_files_by_name/fenix') %]
|
6 | 6 | |
7 | -assets_dir=assets
|
|
8 | -ext_dir=$assets_dir/extensions
|
|
9 | -qa_apk=[% dest_dir %]/[% c('filename') %]/[% c("var/project-name") %]-qa-[% c("var/osname") %]-[% c("version") %].apk
|
|
10 | -apk=$rootdir/geckoview/*-[% c("var/abi") %]-*.apk
|
|
11 | - |
|
12 | -# tor-browser-build#40920
|
|
13 | -sorted_baseline_apk=$(basename $apk .apk)_sorted_baseline.apk
|
|
14 | -$rootdir/sort-baseline.py --apk $apk $sorted_baseline_apk
|
|
15 | -mv $sorted_baseline_apk $apk
|
|
16 | - |
|
17 | 7 | # Bundle our extension(s).
|
8 | +#
|
|
18 | 9 | # NoScript will be copied over to the profile folder
|
19 | 10 | # as a "regular" browser extension receiving regular AMO updates.
|
11 | +assets_dir=assets
|
|
12 | +ext_dir=$assets_dir/extensions
|
|
13 | + |
|
20 | 14 | noscript_path="$ext_dir/{73a6fe31-595d-460b-a920-fcc0f8843232}.xpi"
|
21 | 15 | |
22 | 16 | mkdir -p /var/tmp/build/$ext_dir [% dest_dir _ '/' _ c('filename') %]
|
... | ... | @@ -34,43 +28,93 @@ popd |
34 | 28 | [%IF c("var/tor-browser") -%]
|
35 | 29 | tar -xaf "$rootdir/[% c("input_files_by_name/tor-expert-bundle") %]/tor-expert-bundle.tar.gz" tor/pluggable_transports/pt_config.json
|
36 | 30 | [% END -%]
|
37 | -unzip -j "$apk" assets/omni.ja
|
|
38 | -mkdir omni
|
|
39 | -pushd omni
|
|
40 | -unzip ../omni.ja
|
|
41 | -[%IF c("var/tor-browser") -%]
|
|
42 | - cp -a ../tor/pluggable_transports/pt_config.json chrome/toolkit/content/global/pt_config.json
|
|
43 | -[% END -%]
|
|
44 | -[% c('zip', {
|
|
31 | + |
|
32 | +# This function generates a signed APK from a given APK file.
|
|
33 | +#
|
|
34 | +# Arguments:
|
|
35 | +# $1 - The final APK file name.
|
|
36 | +# $2 - The input APK file.
|
|
37 | +# $3 - [Optional] The patch file for the unsigned APK.
|
|
38 | +#
|
|
39 | +# Steps:
|
|
40 | +# 1. Sort the baseline APK.
|
|
41 | +# 2. Extract the omni.ja file from the APK and modify its contents.
|
|
42 | +# 3. Repack the APK with the modified omni.ja file.
|
|
43 | +# 4. Align the APK using zipalign.
|
|
44 | +# 5. Sign the APK using apksigner.
|
|
45 | +# 6. [Optional] Generate a patch file for the unsigned APK using bsdiff.
|
|
46 | +function generate_apk {
|
|
47 | + local final_apk=$1
|
|
48 | + local apk=$2
|
|
49 | + |
|
50 | + # tor-browser-build#40920
|
|
51 | + sorted_baseline_apk=$(basename $apk .apk)_sorted_baseline.apk
|
|
52 | + $rootdir/sort-baseline.py --apk $apk $sorted_baseline_apk
|
|
53 | + mv $sorted_baseline_apk $apk
|
|
54 | + |
|
55 | + unzip -j "$apk" assets/omni.ja
|
|
56 | + mkdir omni
|
|
57 | + pushd omni
|
|
58 | + unzip ../omni.ja
|
|
59 | + [%IF c("var/tor-browser") -%]
|
|
60 | + cp -an ../tor/pluggable_transports/pt_config.json chrome/toolkit/content/global/pt_config.json
|
|
61 | + [% END -%]
|
|
62 | + [% c('zip', {
|
|
45 | 63 | zip_src => [ '.' ],
|
46 | 64 | zip_args => '-0 ../assets/omni.ja',
|
47 | 65 | }) %]
|
48 | -popd
|
|
66 | + popd
|
|
49 | 67 | |
50 | -mkdir apk
|
|
51 | -pushd apk
|
|
52 | -7zz x "$apk"
|
|
53 | -cp -R ../assets ./
|
|
54 | -find -type f -exec touch -m -t '[% USE date; date.format(pc("geckoview", "timestamp"), format = "%Y%m%d%H%M") %]' {} \;
|
|
55 | -find -type f ! -name resources.arsc -printf '%P\n' | sort > ../files.txt
|
|
56 | -7zz a -tzip -mx9 -mtc- -spf ../repacked.apk @../files.txt
|
|
57 | -# resources.arsc must not be compressed as per the APK specifications
|
|
58 | -7zz a -tzip -mm=Copy -mtc- ../repacked.apk resources.arsc
|
|
59 | -popd
|
|
68 | + mkdir apk
|
|
69 | + pushd apk
|
|
70 | + 7zz x "$apk"
|
|
71 | + cp -Rn ../assets ./
|
|
72 | + find -type f -exec touch -m -t '[% USE date; date.format(pc("geckoview", "timestamp"), format = "%Y%m%d%H%M") %]' {} \;
|
|
73 | + find -type f ! -name resources.arsc -printf '%P\n' | sort > ../files.txt
|
|
74 | + 7zz a -tzip -mx9 -mtc- -spf ../repacked.apk @../files.txt
|
|
75 | + # resources.arsc must not be compressed as per the APK specifications
|
|
76 | + 7zz a -tzip -mm=Copy -mtc- ../repacked.apk resources.arsc
|
|
77 | + popd
|
|
78 | + |
|
79 | + aligned_apk=$(basename $apk .apk)_aligned.apk
|
|
80 | + zipalign -vp 4 repacked.apk $aligned_apk
|
|
60 | 81 | |
61 | -aligned_apk=$(basename $apk .apk)_aligned.apk
|
|
62 | -zipalign -vp 4 repacked.apk $aligned_apk
|
|
82 | + # Sign a QA build. This .apk is not a debug version and doesn't contain a debug
|
|
83 | + # flag in the manifest.
|
|
84 | + apksigner sign --verbose --min-sdk-version [% c("var/android_min_api") %] --ks $rootdir/android-qa.keystore --out $final_apk --in $aligned_apk --ks-key-alias androidqakey --key-pass pass:android --ks-pass pass:android
|
|
85 | + |
|
86 | + local unsign_patch=$3
|
|
87 | + if [ -n "$unsign_patch" ]; then
|
|
88 | + bsdiff $final_apk $aligned_apk $unsign_patch
|
|
89 | + fi
|
|
90 | + |
|
91 | + # Clean up
|
|
92 | + rm -rf omni
|
|
93 | + rm omni.ja
|
|
94 | + rm -rf apk
|
|
95 | + rm repacked.apk
|
|
96 | + rm $aligned_apk
|
|
97 | +}
|
|
98 | + |
|
99 | +# Generate the QA APK and unsign patch.
|
|
100 | +qa_apk=[% dest_dir %]/[% c('filename') %]/[% c("var/project-name") %]-qa-[% c("var/osname") %]-[% c("version") %].apk
|
|
101 | +qa_unsign_patch="[% dest_dir %]/[% c('filename') %]/[% c('var/project-name') %]-qa-unsign-[% c('var/osname') %]-[% c('version') %].bspatch"
|
|
102 | +apk=$rootdir/geckoview/*-[% c("var/abi") %]-*.apk
|
|
103 | +generate_apk $qa_apk $apk $qa_unsign_patch
|
|
63 | 104 | |
64 | -# Sign a QA build. This .apk is not a debug version and doesn't contain a debug
|
|
65 | -# flag in the manifest.
|
|
66 | -apksigner sign --verbose --min-sdk-version [% c("var/android_min_api") %] --ks $rootdir/android-qa.keystore --out $qa_apk --in $aligned_apk --ks-key-alias androidqakey --key-pass pass:android --ks-pass pass:android
|
|
105 | +# Generate the non-optimized APK used for testing and its unsign patch.
|
|
106 | +noopt_apk=[% dest_dir %]/[% c('filename') %]/[% c("var/project-name") %]-noopt-[% c("var/osname") %]-[% c("version") %].apk
|
|
107 | +noopt_final_apk=$rootdir/geckoview/tests/*-[% c("var/abi") %]-*.apk
|
|
108 | +generate_apk $noopt_apk $noopt_final_apk
|
|
67 | 109 | |
68 | -unsign_patch="[% dest_dir %]/[% c('filename') %]/[% c('var/project-name') %]-qa-unsign-[% c('var/osname') %]-[% c('version') %].bspatch"
|
|
69 | -bsdiff $qa_apk $aligned_apk $unsign_patch
|
|
110 | +# Copy and sign the Android test APK.
|
|
111 | +test_apk=[% dest_dir %]/[% c('filename') %]/[% c("var/project-name") %]-[% c("version") %]-androidTest.apk
|
|
112 | +cp $rootdir/geckoview/tests/*-androidTest.apk $test_apk
|
|
113 | +apksigner sign --verbose --min-sdk-version [% c("var/android_min_api") %] --ks $rootdir/android-qa.keystore --out $test_apk --in $test_apk --ks-key-alias androidqakey --key-pass pass:android --ks-pass pass:android
|
|
70 | 114 | |
71 | 115 | [%IF c("var/tor-browser") -%]
|
72 | - tor_expert_bundle_src="[% c('input_files_by_name/tor-expert-bundle') %]"
|
|
73 | - # strip off trailing "$buildid.tar.gz"
|
|
74 | - tor_expert_bundle_dest=${tor_expert_bundle_src:0:-7}.tar.gz
|
|
75 | - cp "$rootdir/[% c("input_files_by_name/tor-expert-bundle") %]/tor-expert-bundle.tar.gz" [% dest_dir %]/[% c('filename') %]/$tor_expert_bundle_dest
|
|
116 | + tor_expert_bundle_src="[% c('input_files_by_name/tor-expert-bundle') %]"
|
|
117 | + # strip off trailing "$buildid.tar.gz"
|
|
118 | + tor_expert_bundle_dest=${tor_expert_bundle_src:0:-7}.tar.gz
|
|
119 | + cp "$rootdir/[% c("input_files_by_name/tor-expert-bundle") %]/tor-expert-bundle.tar.gz" [% dest_dir %]/[% c('filename') %]/$tor_expert_bundle_dest
|
|
76 | 120 | [% END -%] |
... | ... | @@ -45,12 +45,24 @@ echo 'ext.gleanBuildDate = "0"' >> app/build.gradle |
45 | 45 | variant='[% c("var/variant") %]'
|
46 | 46 | version_name="[% c('var/torbrowser_version') %] ([% c('var/geckoview_version') %])"
|
47 | 47 | |
48 | +echo "Building $variant Fenix APK"
|
|
48 | 49 | gradle $GRADLE_FLAGS -PversionName="$version_name" "assemble$variant"
|
49 | 50 | |
50 | 51 | echo "Build finished, copying the APK(s) to the destination directory $(date)"
|
51 | - |
|
52 | 52 | mkdir $distdir/[% project %]
|
53 | 53 | cp app/build/outputs/apk/fenix/$variant/*.apk $distdir/[% project %]
|
54 | 54 | |
55 | +echo "Building non optimized $variant Fenix APK for testing"
|
|
56 | +gradle $GRADLE_FLAGS -PversionName="$version_name" -PdisableOptimization "assemble$variant"
|
|
57 | + |
|
58 | +echo "Building Fenix instrumentation tests"
|
|
59 | +gradle $GRADLE_FLAGS -PversionName="$version_name" -PtestBuildType="$variant" -PdisableOptimization assembleAndroidTest
|
|
60 | + |
|
61 | +echo "Test build finished, copying the APKs to the destination directory $(date)"
|
|
62 | + |
|
63 | +mkdir $distdir/[% project %]/tests
|
|
64 | +cp app/build/outputs/apk/fenix/$variant/*.apk $distdir/[% project %]/tests
|
|
65 | +cp app/build/outputs/apk/androidTest/fenix/$variant/*.apk $distdir/[% project %]/tests
|
|
66 | + |
|
55 | 67 | popd
|
56 | 68 |
... | ... | @@ -36,7 +36,7 @@ var: |
36 | 36 | - openjdk-17-jdk-headless
|
37 | 37 | # this should be updated when the list of gradle dependencies is changed
|
38 | 38 | # see doc/how-to-create-gradle-dependencies-list.txt
|
39 | - gradle_dependencies_version: 15
|
|
39 | + gradle_dependencies_version: 16
|
|
40 | 40 | gradle_version: 8.8
|
41 | 41 | glean_parser: 14.0.1
|
42 | 42 | variant: beta
|
... | ... | @@ -2929,3 +2929,44 @@ e4ff4338999e1c6c9c724719f5d4aa7dd61bf6f545d5256a27a9d375df9f2330 | https://maven |
2929 | 2929 | a9fb0b39a8360beef7bdc8f3953d4d78f3d85304fc80adac3c8eaf530d758050 | https://maven.google.com/androidx/lifecycle/lifecycle-viewmodel/2.6.2/lifecycle-viewmodel-2.6.2.pom
|
2930 | 2930 | f34831b6c71cd844e1d35d1be49d5e79447c5ab856346531b1e8676fda7374b1 | https://maven.google.com/androidx/lifecycle/lifecycle-common/2.6.2/lifecycle-common-2.6.2.jar
|
2931 | 2931 | 57304cdac4da289a6ecdd0738e16b1d8858f1ef8e9fabe2d65a963719fd81dba | https://maven.google.com/androidx/lifecycle/lifecycle-common/2.6.2/lifecycle-common-2.6.2.pom
|
2932 | +caa72885d1ce7979c1d6c59a8b255c6097b770780d4d4da95d56979a348646cd | https://maven.google.com/androidx/activity/activity-compose/1.7.0/activity-compose-1.7.0.aar
|
|
2933 | +85e1fe770ed673ecb8552eaadc23b96d8db0a14a10eaa7789518496e5d99362c | https://maven.google.com/androidx/arch/core/core-testing/2.2.0/core-testing-2.2.0.aar
|
|
2934 | +89536d9f0763e268fc9504fffeada04d483b36fe46f8c6eff5ee64642e36539f | https://maven.google.com/androidx/arch/core/core-testing/2.2.0/core-testing-2.2.0.pom
|
|
2935 | +9a4a6e4c9ed089619306f21853a82e7ceeefd38fa69534f2b45a931b2ec827ae | https://maven.google.com/androidx/compose/ui/ui-test-manifest/1.6.7/ui-test-manifest-1.6.7.aar
|
|
2936 | +dd61a9738e9eea4691bd7ade9e2cb8acb4f0cb73e048d8611edaa118d032235a | https://maven.google.com/androidx/compose/ui/ui-test-manifest/1.6.7/ui-test-manifest-1.6.7.pom
|
|
2937 | +ea66d01428a8c8f26a0ee2259a96d7763dd0d3aef5321730790f8e9cfbe28360 | https://maven.google.com/androidx/room/room-testing/2.6.1/room-testing-2.6.1.aar
|
|
2938 | +b39a4b9e96b9e5d51b06e4438b182d9ef0f1f91f9338abe1fd0aa45946929968 | https://maven.google.com/androidx/room/room-testing/2.6.1/room-testing-2.6.1.pom
|
|
2939 | +9e672028617979dab465678efdd1650b53c929634c399b1f5fef28252483684d | https://maven.google.com/androidx/test/espresso/espresso-core/3.5.0/espresso-core-3.5.0.pom
|
|
2940 | +34b0493f4e002f205d961e562add0c0c31bb0acc657e89d89d4b188ac13f242c | https://maven.google.com/androidx/test/espresso/espresso-core/3.5.0/espresso-core-3.5.0.aar
|
|
2941 | +109eec25d79146122fcdaea91d27ab6e437ccd1aec54eb8e4ac23b23f4011deb | https://maven.google.com/androidx/test/espresso/espresso-idling-resource/3.5.0/espresso-idling-resource-3.5.0.pom
|
|
2942 | +84fb8e2f5eda937771bee28582f5d2cfa61b0e9438d02041ca61b81e3dac3c87 | https://maven.google.com/androidx/test/espresso/espresso-idling-resource/3.5.0/espresso-idling-resource-3.5.0.aar
|
|
2943 | +b3c5aabd545b6c260528c8f4e7c98f73628614ea3d5df3a7a44af2136fd8720b | https://maven.google.com/androidx/test/runner/1.5.0/runner-1.5.0.aar
|
|
2944 | +909882bb86a8618f307d439ead4545cf74f54d3dc6088c232e1bab4f9a97f6cc | https://maven.google.com/androidx/test/runner/1.5.0/runner-1.5.0.pom
|
|
2945 | +914d8c83aa16455d431b5b3af306cef0eb0a0bfd6550d097e39ad475435bf56c | https://maven.google.com/androidx/tracing/tracing-ktx/1.1.0/tracing-ktx-1.1.0.aar
|
|
2946 | +2f2ee5c58561d72cabe9207c43669fe92d6c1386f8c1c2624489e6ab367b121e | https://maven.google.com/androidx/tracing/tracing-perfetto-handshake/1.0.0/tracing-perfetto-handshake-1.0.0.jar
|
|
2947 | +5b78e2c618fc10b3d14decc01df76158f15954ad746aacf0607766721da081f6 | https://maven.google.com/androidx/tracing/tracing/1.1.0/tracing-1.1.0.aar
|
|
2948 | +f1db502b5d539d94dfb6c659deb76872b1e9d8266d7aa4083868a29c33c22917 | https://maven.google.com/androidx/tracing/tracing/1.1.0/tracing-1.1.0.pom
|
|
2949 | +38c45cdaf993a7df6697703ca6ee00acbe376d3dade8d44daac3e33f039ca516 | https://repo1.maven.org/maven2/com/google/errorprone/error_prone_annotation/2.19.1/error_prone_annotation-2.19.1.jar
|
|
2950 | +1faf214c94723ab9fbadfedd9af88ddc325faf669e68eab04688c3afcf59c037 | https://repo1.maven.org/maven2/com/google/guava/guava/28.2-android/guava-28.2-android.jar
|
|
2951 | +b29c1c21e52ed6238cd3fed39d880a17ecf2360118604548cea8821be6801e1c | https://repo1.maven.org/maven2/com/jakewharton/android/repackaged/dalvik-dx/9.0.0_r3/dalvik-dx-9.0.0_r3.jar
|
|
2952 | +7ed7862122ecff00f9c582a61a83397f549f92f347825eca8bb7ad94aef7e92d | https://repo1.maven.org/maven2/com/linkedin/dexmaker/dexmaker/2.28.3/dexmaker-2.28.3.jar
|
|
2953 | +90bb885e3f0a3546e4670ea2b66f291319dff0c6878e8aaead0abf3268934b5a | https://repo1.maven.org/maven2/com/squareup/leakcanary/leakcanary-android-instrumentation/2.14/leakcanary-android-instrumentation-2.14.module
|
|
2954 | +a901efac8b81a6f9fe6c970708e353bd4bd1da03b929dfac01a7617b2d4fea31 | https://repo1.maven.org/maven2/com/squareup/okhttp3/okhttp-urlconnection/4.12.0/okhttp-urlconnection-4.12.0.module
|
|
2955 | +11d134b245e9cacc474514d2d66b5b8618f8039a1465cdc55bbc0b34e0008b7a | https://repo1.maven.org/maven2/org/checkerframework/checker-compat-qual/2.5.5/checker-compat-qual-2.5.5.jar
|
|
2956 | +164fe9728cf95a2cdea93e257d0dc3d5e29f29256b3cca900a8e619bc94d5b1f | https://repo1.maven.org/maven2/org/checkerframework/checker-qual/2.5.5/checker-qual-2.5.5.jar
|
|
2957 | +eaf537d98e033d0f0451cd1b8cc74e02d7b55ec882da63c88060d806ba89c348 | https://repo1.maven.org/maven2/org/conscrypt/conscrypt-openjdk-uber/2.5.2/conscrypt-openjdk-uber-2.5.2.jar
|
|
2958 | +8a835f5176355083668aff0ed6eef5b3eb030e10e89679ed3eeb703fd2d5b900 | https://repo1.maven.org/maven2/org/jetbrains/kotlin/kotlin-reflect/1.9.10/kotlin-reflect-1.9.10.jar
|
|
2959 | +1f9b6f110f498bb5796cbe2cdd36a83ae242619c816821db23ed088a30347b4a | https://repo1.maven.org/maven2/org/jsoup/jsoup/1.12.2/jsoup-1.12.2.jar
|
|
2960 | +1808ee87e0f718cd6e25f3b75afc17956ac8a3edc48c7e9bab9f19f9a79e3801 | https://repo1.maven.org/maven2/org/junit/jupiter/junit-jupiter-api/5.8.2/junit-jupiter-api-5.8.2.jar
|
|
2961 | +753b7726cdd158bb34cedb94c161e2291896f47832a1e9eda53d970020a8184e | https://repo1.maven.org/maven2/org/junit/jupiter/junit-jupiter-engine/5.8.2/junit-jupiter-engine-5.8.2.jar
|
|
2962 | +d1c22d6fe5483568c08c8913f34abd2303490c3480ce6c18a2ea31c65e44102a | https://repo1.maven.org/maven2/org/junit/jupiter/junit-jupiter-params/5.8.2/junit-jupiter-params-5.8.2.jar
|
|
2963 | +4f5c1cc6432244cd16e36aa0e02b74bce34a81ff95a13d63d50951ec4ce3f4bd | https://repo1.maven.org/maven2/org/junit/jupiter/junit-jupiter/5.8.2/junit-jupiter-5.8.2.jar
|
|
2964 | +d2e015fca7130e79af2f4608dc54415e4b10b592d77333decb4b1a274c185050 | https://repo1.maven.org/maven2/org/junit/platform/junit-platform-commons/1.8.2/junit-platform-commons-1.8.2.jar
|
|
2965 | +0b7d000f8c3e8e5f7d6b819649936e7b9938314e87c8f983805218ea57567e59 | https://repo1.maven.org/maven2/org/junit/platform/junit-platform-engine/1.8.2/junit-platform-engine-1.8.2.jar
|
|
2966 | +28028d70cc27d61442948fcb3d249d9df5b37c47aa0b82490a3d049094ff411f | https://repo1.maven.org/maven2/org/mockito/mockito-core/2.25.0/mockito-core-2.25.0.jar
|
|
2967 | +5a841dd993e6fd310f08e62df4bdc3eddd9a25245a87650fac99fbff01607d3e | https://repo1.maven.org/maven2/org/mockito/mockito-core/2.25.0/mockito-core-2.25.0.pom
|
|
2968 | +3825feca2a3c176400b063dec7c6b0643e2b5256bbbfd4e0a7c11e0dd0983baa | https://repo1.maven.org/maven2/org/objenesis/objenesis-parent/2.6/objenesis-parent-2.6.pom
|
|
2969 | +5e168368fbc250af3c79aa5fef0c3467a2d64e5a7bd74005f25d8399aeb0708d | https://repo1.maven.org/maven2/org/objenesis/objenesis/2.6/objenesis-2.6.jar
|
|
2970 | +4c1307909dc62df1bd91f075503f8bdef5ae445e13353f1752af9448bea1d3f1 | https://repo1.maven.org/maven2/org/objenesis/objenesis/2.6/objenesis-2.6.pom
|
|
2971 | +58812de60898d976fb81ef3b62da05c6604c18fd4a249f5044282479fc286af2 | https://repo1.maven.org/maven2/org/opentest4j/opentest4j/1.2.0/opentest4j-1.2.0.jar
|
|
2972 | +5be3bd2a9d6cee0ea930fb3a92c4585c87524b2ae7871f381e8f5647736836dc | https://repo1.maven.org/maven2/org/robolectric/nativeruntime-dist-compat/1.0.9/nativeruntime-dist-compat-1.0.9.jar |