234 lines
7.2 KiB
Bash
234 lines
7.2 KiB
Bash
#!/bin/bash
|
|
|
|
set -e
|
|
|
|
chromium_version="114.0.5735.117"
|
|
chromium_code="5735117"
|
|
chromium_rebrand_name="LeOSium"
|
|
chromium_rebrand_color="#7B3F00"
|
|
chromium_packageid_webview="com.leos.ium_wv"
|
|
chromium_packageid_standalone="com.leos.ium"
|
|
chromium_packageid_libtrichrome="com.leos.ium_tcl"
|
|
clean=0
|
|
gsync=0
|
|
supported_archs=(arm arm64 x86 x64)
|
|
|
|
usage() {
|
|
echo "Usage:"
|
|
echo " build_webview [ options ]"
|
|
echo
|
|
echo " Options:"
|
|
echo " -a <arch> Build specified arch"
|
|
echo " -c Clean"
|
|
echo " -h Show this message"
|
|
echo " -r <release> Specify chromium release"
|
|
echo " -s Sync"
|
|
echo
|
|
echo " Example:"
|
|
echo " build_webview -c -s -r $chromium_version:$chromium_code"
|
|
echo
|
|
exit 1
|
|
}
|
|
|
|
build() {
|
|
build_args=$args' target_cpu="'$1'"'
|
|
|
|
code=$chromium_code
|
|
if [ $1 '==' "arm" ]; then
|
|
code+=00
|
|
elif [ $1 '==' "arm64" ]; then
|
|
code+=50
|
|
#build_args+=' arm_control_flow_integrity="standard"'
|
|
elif [ $1 '==' "x86" ]; then
|
|
code+=10
|
|
elif [ $1 '==' "x64" ]; then
|
|
code+=60
|
|
fi
|
|
build_args+=' android_default_version_code="'$code'"'
|
|
|
|
gn gen "out/$1" --args="$build_args"
|
|
ninja -C out/$1 system_webview_apk chrome_public_apk
|
|
if [ "$?" -eq 0 ]; then
|
|
[ "$1" '==' "x64" ] && android_arch="x86_64" || android_arch=$1
|
|
cp out/$1/apks/SystemWebView.apk ../prebuilt/$android_arch/webview.apk
|
|
fi
|
|
}
|
|
|
|
while getopts ":a:chr:s" opt; do
|
|
case $opt in
|
|
a) for arch in ${supported_archs[@]}; do
|
|
[ "$OPTARG" '==' "$arch" ] && build_arch="$OPTARG"
|
|
done
|
|
if [ -z "$build_arch" ]; then
|
|
echo "Unsupported ARCH: $OPTARG"
|
|
echo "Supported ARCHs: ${supported_archs[@]}"
|
|
exit 1
|
|
fi
|
|
;;
|
|
c) clean=1 ;;
|
|
h) usage ;;
|
|
r) version=(${OPTARG//:/ })
|
|
chromium_version=${version[0]}
|
|
chromium_code=${version[1]}
|
|
;;
|
|
s) gsync=1 ;;
|
|
:)
|
|
echo "Option -$OPTARG requires an argument"
|
|
echo
|
|
usage
|
|
;;
|
|
\?)
|
|
echo "Invalid option:-$OPTARG"
|
|
echo
|
|
usage
|
|
;;
|
|
esac
|
|
done
|
|
shift $((OPTIND-1))
|
|
|
|
# Add depot_tools to PATH
|
|
if [ ! -d depot_tools ]; then
|
|
git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git
|
|
fi
|
|
export PATH="$(pwd -P)/depot_tools:$PATH"
|
|
|
|
if [ ! -d src ]; then
|
|
echo "Initial source download"
|
|
fetch android
|
|
yes | gclient sync -D -R -r $chromium_version
|
|
fi
|
|
|
|
if [ $gsync -eq 1 ]; then
|
|
echo "Syncing"
|
|
find src -name index.lock -delete
|
|
yes | gclient sync -D -R -f -r $chromium_version
|
|
fi
|
|
cd src
|
|
|
|
applyPatchReal() {
|
|
currentWorkingPatch=$1;
|
|
firstLine=$(head -n1 "$currentWorkingPatch");
|
|
if [[ "$firstLine" = *"Mon Sep 17 00:00:00 2001"* ]] || [[ "$firstLine" = *"Thu Jan 1 00:00:00 1970"* ]]; then
|
|
if git am "$@"; then
|
|
git format-patch -1 HEAD --zero-commit --no-signature --output="$currentWorkingPatch";
|
|
fi;
|
|
else
|
|
git apply "$@";
|
|
echo "Applying (as diff): $currentWorkingPatch";
|
|
fi;
|
|
}
|
|
export -f applyPatchReal;
|
|
|
|
applyPatch() {
|
|
currentWorkingPatch=$1;
|
|
if [ -f "$currentWorkingPatch" ]; then
|
|
if git apply --check "$@" &> /dev/null; then
|
|
applyPatchReal "$@";
|
|
else
|
|
if git apply --reverse --check "$@" &> /dev/null; then
|
|
echo "Already applied: $currentWorkingPatch";
|
|
else
|
|
if git apply --check "$@" --3way &> /dev/null; then
|
|
applyPatchReal "$@" --3way;
|
|
echo "Applied (as 3way): $currentWorkingPatch";
|
|
else
|
|
echo -e "\e[0;31mERROR: Cannot apply: $currentWorkingPatch\e[0m";
|
|
fi;
|
|
fi;
|
|
fi;
|
|
else
|
|
echo -e "\e[0;31mERROR: Patch doesn't exist: $currentWorkingPatch\e[0m";
|
|
fi;
|
|
}
|
|
export -f applyPatch;
|
|
|
|
# Apply our changes
|
|
if [ $gsync -eq 1 ]; then
|
|
#Apply all available patches safely
|
|
echo "Applying patches"
|
|
find ../patches/0001-Vanadium/ -name "*.patch" -exec bash -c 'applyPatch "$0"' {} \;;
|
|
find ../patches/0002-LineageOS/ -name "*.patch" -exec bash -c 'applyPatch "$0"' {} \;;
|
|
|
|
#String rebranding, credit Vanadium
|
|
echo "String rebranding"
|
|
sed -ri 's/(Google )?Chrom(e|ium)/'$chromium_rebrand_name'/g' chrome/browser/touch_to_fill/android/internal/java/strings/android_touch_to_fill_strings.grd chrome/browser/ui/android/strings/android_chrome_strings.grd components/components_chromium_strings.grd components/new_or_sad_tab_strings.grdp components/security_interstitials_strings.grdp chrome/android/java/res_chromium_base/values/channel_constants.xml components/page_info_strings.grdp;
|
|
find components/strings/ -name '*.xtb' -exec sed -ri 's/(Google )?Chrom(e|ium)/'$chromium_rebrand_name'/g' {} +;
|
|
find chrome/browser/ui/android/strings/translations -name '*.xtb' -exec sed -ri 's/(Google )?Chrom(e|ium)/'$chromium_rebrand_name'/g' {} +;
|
|
sed -i 's/Android System WebView/'$chromium_rebrand_name' System WebView/' android_webview/nonembedded/java/AndroidManifest.xml;
|
|
fi
|
|
|
|
# Build args
|
|
args='target_os="android"'
|
|
args+=' android_channel="stable"' #Release build
|
|
args+=' android_default_version_name="'$chromium_version'"'
|
|
args+=' disable_fieldtrial_testing_config=true'
|
|
args+=' is_chrome_branded=false'
|
|
args+=' is_component_build=false'
|
|
args+=' is_official_build=true'
|
|
args+=' use_official_google_api_keys=false'
|
|
args+=' webview_devui_show_icon=false'
|
|
args+=' blink_symbol_level=0' #Release optimizations
|
|
args+=' is_debug=false'
|
|
args+=' symbol_level=0'
|
|
args+=' dfmify_dev_ui=false' #Don't build as module
|
|
#args+=' disable_tab_ui_dfm=true'
|
|
args+=' ffmpeg_branding="Chrome"' #Codec support
|
|
args+=' proprietary_codecs=true'
|
|
args+=' enable_resource_allowlist_generation=false'
|
|
args+=' enable_gvr_services=false' #Unncessary
|
|
args+=' enable_nacl=false'
|
|
args+=' enable_remoting=false'
|
|
args+=' enable_vr=false'
|
|
args+=' use_official_google_api_keys=false'
|
|
args+=' system_webview_package_name="'$chromium_packageid_webview'"' #Package IDs
|
|
args+=' chrome_public_manifest_package="'$chromium_packageid_standalone'"'
|
|
args+=' trichrome_library_package="'$chromium_packageid_libtrichrome'"'
|
|
args+=' is_cfi=true' #Security
|
|
args+=' use_cfi_cast=true'
|
|
args+=' use_relative_vtables_abi=false'
|
|
args+=' enable_reporting=false' #Privacy
|
|
# from Bromite
|
|
args+=' build_contextual_search=false'
|
|
#args+=' build_with_tflite_lib=false'
|
|
args+=' chrome_pgo_phase=0'
|
|
args+=' dcheck_always_on=false'
|
|
args+=' debuggable_apks=false'
|
|
#args+=' disable_autofill_assistant_dfm=true'
|
|
args+=' enable_av1_decoder=true'
|
|
args+=' enable_dav1d_decoder=true'
|
|
args+=' enable_hangout_services_extension=false'
|
|
args+=' enable_iterator_debugging=false'
|
|
args+=' enable_mdns=false'
|
|
args+=' enable_mse_mpeg2ts_stream_parser=true'
|
|
args+=' enable_platform_dolby_vision=true'
|
|
args+=' enable_platform_hevc=true'
|
|
args+=' exclude_unwind_tables=false'
|
|
args+=' icu_use_data_file=true'
|
|
args+=' rtc_build_examples=false'
|
|
args+=' safe_browsing_mode=2'
|
|
args+=' treat_warnings_as_errors=true'
|
|
args+=' use_debug_fission=false'
|
|
args+=' is_clang=true'
|
|
args+=' use_errorprone_java_compiler=false'
|
|
args+=' use_gnome_keyring=false'
|
|
args+=' use_rtti=false'
|
|
args+=' use_stable_package_name_for_trichrome=false'
|
|
|
|
cd ..
|
|
bash icons.sh
|
|
cd src
|
|
# Setup environment
|
|
[ $clean -eq 1 ] && rm -rf out && echo "Cleaned out"
|
|
. build/android/envsetup.sh
|
|
|
|
# Check target and build
|
|
if [ -n "$build_arch" ]; then
|
|
build $build_arch
|
|
else
|
|
echo "Building all"
|
|
build arm64
|
|
build arm
|
|
#build x86
|
|
#build x64
|
|
fi
|