From 6d19c9fa738cd8e7fa5fcd39efd09e5cd2909afe Mon Sep 17 00:00:00 2001 From: z30034863 Date: Thu, 7 Aug 2025 16:49:33 +0800 Subject: [PATCH] upgrade jdk 21 Signed-off-by: z30034863 --- build.py | 244 +++++++++++++++++++++-------------------------- checkTool.sh | 125 ++++++++++-------------- haptobin.sh | 85 ++++++++--------- packingTool.sh | 134 +++++++++----------------- unpackingTool.sh | 86 +++++++---------- 5 files changed, 276 insertions(+), 398 deletions(-) diff --git a/build.py b/build.py index 2ebe3682..9fba04c2 100755 --- a/build.py +++ b/build.py @@ -23,7 +23,6 @@ import argparse import subprocess import re - def run_cmd(title, cmd, time_out): child_process = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE) cmd_out, cmd_err = child_process.communicate(timeout=time_out) @@ -32,153 +31,145 @@ def run_cmd(title, cmd, time_out): print(cmd_err.decode('utf-8')) raise Exception('compile module: ' + title + ' failed!') - -def get_compile_str(src_path, java_sources): - compile_java = '' +def get_compile_list(src_path, java_sources): + compile_java = [] + src_path = os.path.normpath(src_path) for src in java_sources: - if len(compile_java) == 0: - compile_java = '{}'.format(os.path.join(src_path, src)) - else: - compile_java = '{} {}'.format(compile_java, os.path.join(src_path, src)) + full_path = os.path.normpath(os.path.join(src_path, src)) + if not os.path.isfile(full_path): + raise FileNotFoundError(f"[ERROR] Java source file not found :{full_path}") + relative_path = os.path.relpath(full_path, start=src_path).replace("\\","/") + compile_java.append(relative_path) return compile_java - -def compile_haptobin_tool(root_path, src_path, jar_output, out_path, +def compile_haptobin_tool(root_path, src_path, jar_output, out_path, toolchain, fastjson_jar, fastjson2_jar, fastjson2ext_jar): java_sources = [ - 'BinaryTool.java', - 'BundleException.java', - 'ConvertHapToBin.java', - 'ErrorMsg.java', - 'FileUtils.java', - 'Log.java', - 'PackFormatter.java', - 'PackingToolErrMsg.java', - 'Utility.java' + 'ohos/BinaryTool.java', 'ohos/BundleException.java', 'ohos/ConvertHapToBin.java', + 'ohos/ErrorMsg.java', 'ohos/FileUtils.java', 'ohos/Log.java', + 'ohos/PackFormatter.java', 'ohos/PackingToolErrMsg.java', 'ohos/Utility.java' ] - compile_java = get_compile_str(src_path, java_sources) + compile_java_list = get_compile_list(src_path, java_sources) shell_path = os.path.join(root_path, "haptobin.sh") - command = ['bash', shell_path, root_path, jar_output, out_path, - toolchain, compile_java, fastjson_jar, fastjson2_jar, fastjson2ext_jar] + command = ['bash', shell_path, root_path, jar_output, out_path, toolchain, src_path] + compile_java_list + [ + fastjson_jar, fastjson2_jar, fastjson2ext_jar + ] print('command: ', command) run_cmd('haptobin_tool', command, 5000) - return - -def compile_unpacking_tool(root_path, src_path, jar_output, out_path, big_version, +def compile_unpacking_tool(root_path, src_path, jar_output, out_path, big_version, toolchain, fastjson_jar, fastjson2_jar, fastjson2ext_jar): java_sources = [ - 'AbilityFormInfo.java', 'AbilityInfo.java', 'ApiVersion.java', - 'AppInfo.java', 'AppModel.java', 'APPQFResult.java', - 'BundleException.java', 'CommandParser.java', 'CommonEvent.java', - 'CountryCode.java', 'CustomizeData.java', 'DefinePermission.java', - 'DefPermissionGroup.java', 'DefPermission.java', 'DependencyItem.java', - 'DeviceConfig.java', 'DistroFilter.java', 'Distro.java', 'ErrorMsg.java', - 'ExtensionAbilityInfo.java', 'FileUtils.java', 'FormInfo.java', - 'HapInfo.java', 'HapZipInfo.java', 'HQFInfo.java', - 'IntentInfo.java', 'JsInfo.java', 'JsonUtil.java', - 'Log.java', 'MetaDataInfo.java', 'MetaData.java', - 'ModuleAbilityInfo.java', 'ModuleAdaption.java', 'ModuleAppInfo.java', - 'ModuleAtomicService.java', 'ModuleDeviceType.java', 'ModuleInfo.java', - 'ModuleMetadataInfo.java', 'ModuleProfileInfo.java', 'ModuleResult.java', - 'ModuleShortcut.java', 'PackFormatter.java', 'PackInfo.java', 'PackingToolErrMsg.java', - 'PreloadItem.java', 'ProfileInfo.java', 'ReqPermission.java', - 'ResourceIndexResult.java', 'restool/ResourcesParser.java', 'restool/ResourcesParserV1.java', - 'restool/ResourcesParserV2.java', 'restool/ResourcesParserFactory.java', 'ScreenDensity.java', - 'ScreenShape.java', 'ScreenWindow.java', 'Shortcut.java', - 'ShowHelp.java', 'SkillInfo.java', 'UncompressEntrance.java', - 'Uncompress.java', 'UncompressResult.java', 'UncompressVerify.java', - 'UriInfo.java', 'UsedScene.java', 'Utility.java', 'Want.java', 'ProxyDataItem.java' + 'ohos/AbilityFormInfo.java', 'ohos/AbilityInfo.java', 'ohos/ApiVersion.java', + 'ohos/AppInfo.java', 'ohos/AppModel.java', 'ohos/APPQFResult.java', + 'ohos/BundleException.java', 'ohos/CommandParser.java', 'ohos/CommonEvent.java', + 'ohos/CountryCode.java', 'ohos/CustomizeData.java', 'ohos/DefinePermission.java', + 'ohos/DefPermissionGroup.java', 'ohos/DefPermission.java', 'ohos/DependencyItem.java', + 'ohos/DeviceConfig.java', 'ohos/DistroFilter.java', 'ohos/Distro.java', 'ohos/ErrorMsg.java', + 'ohos/ExtensionAbilityInfo.java', 'ohos/FileUtils.java', 'ohos/FormInfo.java', + 'ohos/HapInfo.java', 'ohos/HapZipInfo.java', 'ohos/HQFInfo.java', + 'ohos/IntentInfo.java', 'ohos/JsInfo.java', 'ohos/JsonUtil.java', + 'ohos/Log.java', 'ohos/MetaDataInfo.java', 'ohos/MetaData.java', + 'ohos/ModuleAbilityInfo.java', 'ohos/ModuleAdaption.java', 'ohos/ModuleAppInfo.java', + 'ohos/ModuleAtomicService.java', 'ohos/ModuleDeviceType.java', 'ohos/ModuleInfo.java', + 'ohos/ModuleMetadataInfo.java', 'ohos/ModuleProfileInfo.java', 'ohos/ModuleResult.java', + 'ohos/ModuleShortcut.java', 'ohos/PackFormatter.java', 'ohos/PackInfo.java', 'ohos/PackingToolErrMsg.java', + 'ohos/PreloadItem.java', 'ohos/ProfileInfo.java', 'ohos/ReqPermission.java', + 'ohos/ResourceIndexResult.java', 'ohos/restool/ResourcesParser.java', 'ohos/restool/ResourcesParserV1.java', + 'ohos/restool/ResourcesParserV2.java', 'ohos/restool/ResourcesParserFactory.java', 'ohos/ScreenDensity.java', + 'ohos/ScreenShape.java', 'ohos/ScreenWindow.java', 'ohos/Shortcut.java', + 'ohos/ShowHelp.java', 'ohos/SkillInfo.java', 'ohos/UncompressEntrance.java', + 'ohos/Uncompress.java', 'ohos/UncompressResult.java', 'ohos/UncompressVerify.java', + 'ohos/UriInfo.java', 'ohos/UsedScene.java', 'ohos/Utility.java', 'ohos/Want.java', 'ohos/ProxyDataItem.java' ] - compile_java = get_compile_str(src_path, java_sources) + compile_java = get_compile_list(src_path, java_sources) shell_path = os.path.join(root_path, "unpackingTool.sh") - command = ['bash', shell_path, root_path, jar_output, out_path, big_version, - toolchain, compile_java, fastjson_jar, fastjson2_jar, fastjson2ext_jar] + command = ['bash', shell_path, root_path, jar_output, out_path, big_version, + toolchain, src_path] + compile_java + [fastjson_jar, fastjson2_jar, fastjson2ext_jar] print('command: ', command) run_cmd('app_unpacking_tool', command, 5000) return -def compile_packing_tool(root_path, src_path, jar_output, out_path, +def compile_packing_tool(root_path, src_path, jar_output, out_path, toolchain, fastjson_jar, compress_jar, io_jar, fastjson2_jar, fastjson2ext_jar): java_sources = [ - 'ApiVersion.java', - 'BundleException.java', - 'CommandParser.java', - 'CompressEntrance.java', - 'Compressor.java', - 'CompressVerify.java', - 'Constants.java', - 'CountryCode.java', - 'DependencyItem.java', - 'DistroFilter.java', - 'ErrorMsg.java', - 'FileUtils.java', - 'HapVerify.java', - 'HapVerifyInfo.java', - 'HQFInfo.java', - 'HQFVerify.java', - 'Log.java', - 'ModuleApiVersion.java', - 'ModuleJsonInfo.java', - 'ModuleJsonUtil.java', - 'ModuleMetadataInfo.java', - 'MultiAppMode.java', - 'PackageNormalize.java', - 'PackageUtil.java', - 'PackFormatter.java', - 'PackingToolErrMsg.java', - 'PreloadItem.java', - 'ScreenDensity.java', - 'ScreenShape.java', - 'ScreenWindow.java', - 'ShowHelp.java', - 'Utility.java', - 'VerifyCollection.java', - 'Version.java' + 'ohos/ApiVersion.java', + 'ohos/BundleException.java', + 'ohos/CommandParser.java', + 'ohos/CompressEntrance.java', + 'ohos/Compressor.java', + 'ohos/CompressVerify.java', + 'ohos/Constants.java', + 'ohos/CountryCode.java', + 'ohos/DependencyItem.java', + 'ohos/DistroFilter.java', + 'ohos/ErrorMsg.java', + 'ohos/FileUtils.java', + 'ohos/HapVerify.java', + 'ohos/HapVerifyInfo.java', + 'ohos/HQFInfo.java', + 'ohos/HQFVerify.java', + 'ohos/Log.java', + 'ohos/ModuleApiVersion.java', + 'ohos/ModuleJsonInfo.java', + 'ohos/ModuleJsonUtil.java', + 'ohos/ModuleMetadataInfo.java', + 'ohos/MultiAppMode.java', + 'ohos/PackageNormalize.java', + 'ohos/PackageUtil.java', + 'ohos/PackFormatter.java', + 'ohos/PackingToolErrMsg.java', + 'ohos/PreloadItem.java', + 'ohos/ScreenDensity.java', + 'ohos/ScreenShape.java', + 'ohos/ScreenWindow.java', + 'ohos/ShowHelp.java', + 'ohos/Utility.java', + 'ohos/VerifyCollection.java', + 'ohos/Version.java' ] - compile_java = get_compile_str(src_path, java_sources) + compile_java = get_compile_list(src_path, java_sources) shell_path = os.path.join(root_path, "packingTool.sh") - command = ['bash', shell_path, root_path, jar_output, out_path, - toolchain, compile_java, fastjson_jar, compress_jar, io_jar, fastjson2_jar, fastjson2ext_jar] - print('command: ', command) + command = ['bash', shell_path, root_path, jar_output, out_path, + toolchain, src_path] + compile_java + [ + fastjson_jar, compress_jar, io_jar, fastjson2_jar, fastjson2ext_jar] run_cmd('app_packing_tool', command, 5000) return -def compile_check_tool(root_path, src_path, jar_output, out_path, +def compile_check_tool(root_path, src_path, jar_output, out_path, toolchain, fastjson_jar, fastjson2_jar, fastjson2ext_jar): java_sources = [ - 'BundleException.java', - 'CommandParser.java', - 'ErrorMsg.java', - 'FileUtils.java', - 'Log.java', - 'PackFormatter.java', - 'PackingToolErrMsg.java', - 'Scan.java', - 'ScanEntrance.java', - 'ScanErrorEnum.java', - 'ScanStatDuplicate.java', - 'ScanStatFileSize.java', - 'ScanStatSuffix.java', - 'ScanVerify.java', - 'ShowHelp.java', - 'Utility.java' + 'ohos/BundleException.java', + 'ohos/CommandParser.java', + 'ohos/ErrorMsg.java', + 'ohos/FileUtils.java', + 'ohos/Log.java', + 'ohos/PackFormatter.java', + 'ohos/PackingToolErrMsg.java', + 'ohos/Scan.java', + 'ohos/ScanEntrance.java', + 'ohos/ScanErrorEnum.java', + 'ohos/ScanStatDuplicate.java', + 'ohos/ScanStatFileSize.java', + 'ohos/ScanStatSuffix.java', + 'ohos/ScanVerify.java', + 'ohos/ShowHelp.java', + 'ohos/Utility.java' ] - compile_java = get_compile_str(src_path, java_sources) + compile_java = get_compile_list(src_path, java_sources) shell_path = os.path.join(root_path, "checkTool.sh") - command = ['bash', shell_path, root_path, jar_output, out_path, - toolchain, compile_java, fastjson_jar, fastjson2_jar, fastjson2ext_jar] + command = ['bash', shell_path, root_path, jar_output, out_path, + toolchain, src_path] + compile_java + [fastjson_jar, fastjson2_jar, fastjson2ext_jar] print('command: ', command) run_cmd('app_check_tool', command, 5000) return - def main(): parser = argparse.ArgumentParser() parser.add_argument('--haptobin', required=True) @@ -191,44 +182,31 @@ def main(): parser.add_argument('--compileTarget', required=True) args = parser.parse_args() print('packingTool args: ', args) + root_dir = os.path.dirname(os.path.realpath(__file__)) - src_dir = os.path.join(root_dir, "./adapter/ohos/") - toolchain = args.toolchain - tool_list = toolchain.split(':') - toolchain = tool_list[-1] - toolchain += "_" + args.compileTarget - + src_dir = os.path.join(root_dir, "./adapter/") + toolchain = args.toolchain.split(':')[-1] + "_" + args.compileTarget fastjson_jar = os.path.join(root_dir, '../../prebuilts/packing_tool/fastjson2mid/fastjson-2.0.52.jar') fastjson2_jar = os.path.join(root_dir, '../../prebuilts/packing_tool/fastjson2/fastjson2-2.0.52.jar') fastjson2ext_jar = os.path.join(root_dir, '../../prebuilts/packing_tool/fastjson2ext/fastjson2-extension-2.0.52.jar') compress_jar = os.path.join(root_dir, '../../prebuilts/packing_tool/compress/commons-compress-1.26.1.jar') - io_jar = os.path.join(root_dir, - '../../prebuilts/packing_tool/io/commons-io-2.15.1-bin/commons-io-2.15.1/commons-io-2.15.1.jar') + io_jar = os.path.join(root_dir, '../../prebuilts/packing_tool/io/commons-io-2.15.1-bin/commons-io-2.15.1/commons-io-2.15.1.jar') print('packingTool: ', toolchain, fastjson_jar, compress_jar, io_jar, fastjson2_jar, fastjson2ext_jar) - # compile haptobin_tool.jar - compile_haptobin_tool(root_dir, src_dir, args.haptobinOutput, args.outpath, + compile_haptobin_tool(root_dir, src_dir, args.haptobinOutput, args.outpath, toolchain, fastjson_jar, fastjson2_jar, fastjson2ext_jar) - # compile app_unpacking_tool.jar - version = subprocess.check_output(['javac', '-version'], stderr=subprocess.STDOUT) - version = version.decode('utf-8') + version = subprocess.check_output(['javac', '-version'], stderr=subprocess.STDOUT).decode('utf-8') array = re.findall(r'\d+', version) - compatible_version = 8 - big_version = '' - if int(array[0]) > compatible_version: - big_version = 'true' - else: - big_version = 'false' - compile_unpacking_tool(root_dir, src_dir, args.unpackOutput, args.outpath, big_version, + big_version = 'true' if int(array[0]) > 8 else 'false' + + compile_unpacking_tool(root_dir, src_dir, args.unpackOutput, args.outpath, big_version, toolchain, fastjson_jar, fastjson2_jar, fastjson2ext_jar) - #compile app_packing_tool.jar - compile_packing_tool(root_dir, src_dir, args.packOutput, args.outpath, + compile_packing_tool(root_dir, src_dir, args.packOutput, args.outpath, toolchain, fastjson_jar, compress_jar, io_jar, fastjson2_jar, fastjson2ext_jar) - #compile app_check_tool.jar - compile_check_tool(root_dir, src_dir, args.checkOutput, args.outpath, + compile_check_tool(root_dir, src_dir, args.checkOutput, args.outpath, toolchain, fastjson_jar, fastjson2_jar, fastjson2ext_jar) if __name__ == '__main__': diff --git a/checkTool.sh b/checkTool.sh index a329bd8c..a92051ef 100644 --- a/checkTool.sh +++ b/checkTool.sh @@ -13,100 +13,71 @@ # limitations under the License. set -eux set -o pipefail + root_path=$1 pack_build_out_jar_path=$2 pack_build_out_path=$3 toolchain=$4 -compile_java=$5 -fastjson_jar=$6 -fastjson2_jar=$7 -fastjson2ext_jar=$8 +src_path=$5 + +# 参数总数 +total_args=$# +# Java 文件数量 = 总数 - 固定参数8(前5 + 3个jar包) +java_file_count=$(($# - 8)) +java_files=("${@:6:$java_file_count}") + +# 最后三个参数是依赖 jar +fastjson_jar=${@:(-3):1} +fastjson2_jar=${@:(-2):1} +fastjson2ext_jar=${@:(-1):1} + final_path=$(pwd) jar_dir="jar" pack_jar_file="app_check_tool.jar" -fastjson_jar_file="fastjson-2.0.52.jar" -fastjson2_jar_file="fastjson2-2.0.52.jar" -fastjson2ext_jar_file="fastjson2-extension-2.0.52.jar" -jar_directory="${root_path}/jar" -pack_jar_path="${root_path}/${jar_dir}/${pack_jar_file}" manifest_path="${root_path}/META-INF/check_tool/MANIFEST.MF" css_path="${root_path}/adapter/ohos/scan_template.css" html_path="${root_path}/adapter/ohos/scan_template.html" - out_dir="${root_path}/out/${toolchain}/check_tool" -if [ -d "${out_dir}/ohos" ] - then - echo "${out_dir}/ohos exist" - else - mkdir -p "${out_dir}/ohos" +mkdir -p "${out_dir}/ohos" + +classpath="${fastjson_jar}:${fastjson2_jar}:${fastjson2ext_jar}" + +javac_version=$(javac -version 2>&1) +major_version=$(echo "$javac_version" | grep -oE '[0-9]+' | head -n 1) + +cd "$src_path" +if [ "$major_version" -ge 9 ]; then + javac --release 8 -cp "$classpath" -sourcepath "$src_path" -d "$out_dir" "${java_files[@]}" +else + javac -source 1.8 -target 1.8 -cp "$classpath" -sourcepath "$src_path" -d "$out_dir" "${java_files[@]}" fi -compile_command="javac -source 1.8 -target 1.8 \ --cp ${fastjson_jar}:${fastjson2_jar}:${fastjson2ext_jar} -d ${out_dir} ${compile_java}" -eval ${compile_command} +cp "$css_path" "$out_dir/ohos" +cp "$html_path" "$out_dir/ohos" temp_dir="$root_path/jar/check_temp_${toolchain}" -if [ -d "${temp_dir}" ] - then - echo "${temp_dir} exit" - else - mkdir ${temp_dir} -fi +mkdir -p "$temp_dir" +cd "$out_dir" +jar -cvfm "$temp_dir/$pack_jar_file" "$manifest_path" ./ohos -cd ${out_dir} -cp ${css_path} ./ohos -cp ${html_path} ./ohos -product_pack_jar_command="jar -cvfm ${temp_dir}/${pack_jar_file} ${manifest_path} ./ohos" -eval ${product_pack_jar_command} +cp -r "$out_dir/ohos" "$temp_dir" -# merge app_packing_tool.jar and fastjson -cp ${fastjson_jar} "${temp_dir}/${fastjson_jar_file}" -cp ${fastjson2_jar} "${temp_dir}/${fastjson2_jar_file}" -cp ${fastjson2ext_jar} "${temp_dir}/${fastjson2ext_jar_file}" -detach_pack_jar_command="jar -xvf ${pack_jar_file}" -detach_fastjson_jar_command="jar -xvf ${fastjson_jar_file}" -detach_fastjson2_jar_command="jar -xvf ${fastjson2_jar_file}" -detach_fastjson2ext_jar_command="jar -xvf ${fastjson2ext_jar_file}" -cd ${temp_dir} -eval ${detach_pack_jar_command} -eval ${detach_fastjson2ext_jar_command} -eval ${detach_fastjson2_jar_command} -eval ${detach_fastjson_jar_command} -rm ${pack_jar_file} -rm ${fastjson_jar_file} -rm ${fastjson2_jar_file} -rm ${fastjson2ext_jar_file} +cd "$temp_dir" +for jar_file in "$fastjson_jar" "$fastjson2_jar" "$fastjson2ext_jar"; do + cp "$jar_file" . + jar_name=$(basename "$jar_file") + jar -xvf "$jar_name" + rm "$jar_name" +done +rm -f "$pack_jar_file" -cd ${jar_directory} -temp_pack_jar_dir="${root_path}/jar/checktool_${toolchain}" -temp_pack_jar_path="${root_path}/jar/checktool_${toolchain}/${pack_jar_file}" -merge_pack_fast_jar_command="jar -cvfm ${temp_pack_jar_path} ${manifest_path} -C ${temp_dir} ." -if [ -d "${temp_pack_jar_dir}" ] - then - echo "${temp_pack_jar_dir} exist" - else - mkdir -p ${temp_pack_jar_dir} -fi -eval ${merge_pack_fast_jar_command} +temp_pack_jar_path="$root_path/jar/checktool_${toolchain}/$pack_jar_file" +mkdir -p "$(dirname "$temp_pack_jar_path")" +jar -cvfm "$temp_pack_jar_path" "$manifest_path" -C "$temp_dir" . -# make out dir -final_pack_out_path="${final_path}/${pack_build_out_path}" -final_pack_jar_path="${final_path}/${pack_build_out_jar_path}" -if [ -d "$final_pack_out_path" ] - then - echo "${final_pack_out_path} exist" - else - mkdir -p ${final_pack_out_path} -fi -copy_command="cp ${temp_pack_jar_path} ${final_pack_jar_path}" -eval ${copy_command} -if [ -f "${pack_jar_file}"] - then - echo "${pack_jar_file} exist" - else - cp ${temp_pack_jar_path} ${pack_jar_file} -fi -rm -rf ${temp_pack_jar_dir} -rm -rf ${temp_dir} -rm -rf ${out_dir} +mkdir -p "$final_path/$pack_build_out_path" +cp "$temp_pack_jar_path" "$final_path/$pack_build_out_jar_path" +cp "$temp_pack_jar_path" "$root_path/jar/$pack_jar_file" || true + +rm -rf "$temp_dir" "$out_dir" diff --git a/haptobin.sh b/haptobin.sh index c8731b59..c071c781 100755 --- a/haptobin.sh +++ b/haptobin.sh @@ -13,62 +13,61 @@ # limitations under the License. set -eux set -o pipefail + root_path=$1 haptobin_build_jar_path=$2 out_build_path=$3 toolchain=$4 -compile_java=$5 -fastjson_jar=$6 -fastjson2_jar=$7 -fastjson2ext_jar=$8 -final_path=$(pwd) +src_path=$5 + +# 计算 Java 文件数量(除去前5个参数 + 3个 jar) +total_args=$# +java_file_count=$((total_args - 8)) +java_files=("${@:6:$java_file_count}") + +# 提取最后3个 jar +fastjson_jar=${@: -3:1} +fastjson2_jar=${@: -2:1} +fastjson2ext_jar=${@: -1:1} -temp_path="." +final_path=$(pwd) jar_dir="jar" haptobin_jar_file="haptobin_tool.jar" haptobin_jar_path="${final_path}/${out_build_path}" haptobin_jar_file_path="${final_path}/${haptobin_build_jar_path}" -# make out dir -if [ -d "${haptobin_jar_path}" ] - then - echo "${haptobin_jar_path} exist" - else - mkdir -p ${haptobin_jar_path} -fi final_jar_path="${root_path}/jar/${haptobin_jar_file}" -manifest_path=${root_path}/META-INF/packingbin_tool/MANIFEST.MF - -# compile java class +manifest_path="${root_path}/META-INF/packingbin_tool/MANIFEST.MF" out_dir="${root_path}/out/${toolchain}/haptobin" -if [ -d "${out_dir}/ohos" ] - then - echo "${out_dir}/ohos exist" - else - mkdir -p "${out_dir}/ohos" + +mkdir -p "${haptobin_jar_path}" +mkdir -p "${out_dir}/ohos" + +# 编译 +javac_version=$(javac -version 2>&1) +major_version=$(echo "$javac_version" | grep -oE '[0-9]+' | head -n 1) + +classpath="${fastjson_jar}:${fastjson2_jar}:${fastjson2ext_jar}" + +cd "$src_path" +if [ "$major_version" -ge 9 ]; then + echo "[INFO] Using --release 8" + javac --release 8 -cp "$classpath" -sourcepath "$src_path" -d "$out_dir" "${java_files[@]}" +else + echo "[INFO] Using -source 1.8 -target 1.8" + javac -source 1.8 -target 1.8 -cp "$classpath" -sourcepath "$src_path" -d "$out_dir" "${java_files[@]}" fi -compile_command="javac -source 1.8 -target 1.8 \ --cp ${fastjson_jar}:${fastjson2_jar}:${fastjson2ext_jar} -d ${out_dir} ${compile_java}" -eval ${compile_command} -cd ${out_dir} -temp_jar_path="${root_path}/jar/haptobin_${toolchain}/${haptobin_jar_file}" +cd "${out_dir}" temp_jar_dir="${root_path}/jar/haptobin_${toolchain}" -pack_command="jar -cvfm ${temp_jar_path}/ ${manifest_path} ./ohos" -if [ -d "${temp_jar_dir}" ] - then - echo "${temp_jar_dir} exist" - else - mkdir -p "${temp_jar_dir}" -fi -eval ${pack_command} +temp_jar_path="${temp_jar_dir}/${haptobin_jar_file}" -copy_command="cp ${temp_jar_path} ${haptobin_jar_file_path}" -eval ${copy_command} -# copy to developtoo/packintool/jar -if [ -f "${final_jar_path}" ] - then - echo "${final_jar_path} exist" - else - eval "cp ${temp_jar_path} ${final_jar_path}" +mkdir -p "$temp_jar_dir" + +jar -cvfm "${temp_jar_path}" "${manifest_path}" ./ohos +cp "${temp_jar_path}" "${haptobin_jar_file_path}" + +if [ ! -f "${final_jar_path}" ]; then + cp "${temp_jar_path}" "${final_jar_path}" fi -rm -rf ${temp_jar_dir} \ No newline at end of file + +rm -rf "${temp_jar_dir}" diff --git a/packingTool.sh b/packingTool.sh index 530e637e..9054cfd0 100755 --- a/packingTool.sh +++ b/packingTool.sh @@ -13,109 +13,61 @@ # limitations under the License. set -eux set -o pipefail + root_path=$1 pack_build_out_jar_path=$2 pack_build_out_path=$3 toolchain=$4 -compile_java=$5 -fastjson_jar=$6 -compress_jar=$7 -io_jar=$8 -fastjson2_jar=$9 -fastjson2ext_jar=${10} -final_path=$(pwd) +src_path=$5 +java_file_count=$(($# - 10)) # 去掉前面5个参数 + 最后5个jar包参数 +java_files=("${@:6:$java_file_count}") +fastjson_jar=${@:(-5):1} +compress_jar=${@:(-4):1} +io_jar=${@:(-3):1} +fastjson2_jar=${@:(-2):1} +fastjson2ext_jar=${@:(-1):1} -jar_dir="jar" +classpath="${fastjson_jar}:${compress_jar}:${io_jar}:${fastjson2_jar}:${fastjson2ext_jar}" +final_path=$(pwd) pack_jar_file="app_packing_tool.jar" -fastjson_jar_file="fastjson-2.0.52.jar" -fastjson2_jar_file="fastjson2-2.0.52.jar" -fastjson2ext_jar_file="fastjson2-extension-2.0.52.jar" -compress_jar_file="commons-compress-1.26.1.jar" -io_jar_file="commons-io-2.15.1.jar" -jar_directory="${root_path}/jar" -pack_jar_path="${root_path}/${jar_dir}/${pack_jar_file}" manifest_path="${root_path}/META-INF/packing_tool/MANIFEST.MF" +out_dir="${root_path}/out/${toolchain}/packing_tool" +mkdir -p "${out_dir}/ohos" +javac_version=$(javac -version 2>&1) +major_version=$(echo "$javac_version" | grep -oE '[0-9]+' | head -n 1) -out_dir="${root_path}/out/${toolchain}/packTool" -if [ -d "${out_dir}/ohos" ] - then - echo "${out_dir}/ohos exist" - else - mkdir -p "${out_dir}/ohos" +cd "$src_path" +if [ "$major_version" -ge 9 ]; then + javac --release 8 -cp "$classpath" -sourcepath "$src_path" -d "$out_dir" "${java_files[@]}" +else + javac -source 1.8 -target 1.8 -cp "$classpath" -sourcepath "$src_path" -d "$out_dir" "${java_files[@]}" fi -compile_command="javac -source 1.8 -target 1.8 \ --cp ${fastjson_jar}:${compress_jar}:${io_jar}:${fastjson2_jar}:${fastjson2ext_jar} -d ${out_dir} ${compile_java}" -eval ${compile_command} - temp_dir="$root_path/jar/packing_temp_${toolchain}" -if [ -d "${temp_dir}" ] - then - echo "${temp_dir} exit" - else - mkdir ${temp_dir} -fi +mkdir -p "$temp_dir" -cd ${out_dir} -product_pack_jar_command="jar -cvfm ${temp_dir}/${pack_jar_file} ${manifest_path} ./ohos" -eval ${product_pack_jar_command} +cd "$out_dir" +jar -cvfm "$temp_dir/$pack_jar_file" "$manifest_path" ./ohos -# merge app_packing_tool.jar and fastjson/commons-compress -cp ${fastjson_jar} "${temp_dir}/${fastjson_jar_file}" -cp ${fastjson2_jar} "${temp_dir}/${fastjson2_jar_file}" -cp ${fastjson2ext_jar} "${temp_dir}/${fastjson2ext_jar_file}" -cp ${compress_jar} "${temp_dir}/${compress_jar_file}" -cp ${io_jar} "${temp_dir}/${io_jar_file}" -detach_pack_jar_command="jar -xvf ${pack_jar_file}" -detach_fastjson_jar_command="jar -xvf ${fastjson_jar_file}" -detach_fastjson2_jar_command="jar -xvf ${fastjson2_jar_file}" -detach_fastjson2ext_jar_command="jar -xvf ${fastjson2ext_jar_file}" -detach_io_jar_command="jar -xvf ${io_jar_file}" -detach_compress_jar_command="jar -xvf ${compress_jar_file}" -cd ${temp_dir} -eval ${detach_pack_jar_command} -eval ${detach_fastjson2ext_jar_command} -eval ${detach_fastjson2_jar_command} -eval ${detach_fastjson_jar_command} -eval ${detach_io_jar_command} -eval ${detach_compress_jar_command} -cp "$root_path/jar/NOTICE" "META-INF/NOTICE.txt" -rm ${pack_jar_file} -rm ${fastjson_jar_file} -rm ${fastjson2_jar_file} -rm ${fastjson2ext_jar_file} -rm ${compress_jar_file} -rm ${io_jar_file} +cp -r "$out_dir/ohos" "$temp_dir" -cd ${jar_directory} -temp_pack_jar_dir="${root_path}/jar/packtool_${toolchain}" -temp_pack_jar_path="${root_path}/jar/packtool_${toolchain}/${pack_jar_file}" -merge_pack_fast_jar_command="jar -cvfm ${temp_pack_jar_path} ${manifest_path} -C ${temp_dir} ." -if [ -d "${temp_pack_jar_dir}" ] - then - echo "${temp_pack_jar_dir} exist" - else - mkdir -p ${temp_pack_jar_dir} -fi -eval ${merge_pack_fast_jar_command} +cd "$temp_dir" +for jar_file in "$fastjson_jar" "$fastjson2_jar" "$fastjson2ext_jar" "$compress_jar" "$io_jar"; do + cp "$jar_file" . + jar_name=$(basename "$jar_file") + jar -xvf "$jar_name" + rm "$jar_name" +done -# make out dir -final_pack_out_path="${final_path}/${pack_build_out_path}" -final_pack_jar_path="${final_path}/${pack_build_out_jar_path}" -if [ -d "$final_pack_out_path" ] - then - echo "${final_pack_out_path} exist" - else - mkdir -p ${final_pack_out_path} -fi -copy_command="cp ${temp_pack_jar_path} ${final_pack_jar_path}" -eval ${copy_command} -if [ -f "${pack_jar_file}"] - then - echo "${pack_jar_file} exist" - else - cp ${temp_pack_jar_path} ${pack_jar_file} -fi -rm -rf ${temp_pack_jar_dir} -rm -rf ${temp_dir} -rm -rf ${out_dir} +cp "$root_path/jar/NOTICE" META-INF/NOTICE.txt || true +rm -f "$pack_jar_file" + +temp_pack_jar_path="$root_path/jar/packtool_${toolchain}/$pack_jar_file" +mkdir -p "$(dirname "$temp_pack_jar_path")" +jar -cvfm "$temp_pack_jar_path" "$manifest_path" -C "$temp_dir" . + +mkdir -p "$final_path/$pack_build_out_path" +cp "$temp_pack_jar_path" "$final_path/$pack_build_out_jar_path" +cp "$temp_pack_jar_path" "$root_path/jar/$pack_jar_file" || true + +rm -rf "$temp_dir" "$out_dir" diff --git a/unpackingTool.sh b/unpackingTool.sh index 509cdba1..5d39af18 100755 --- a/unpackingTool.sh +++ b/unpackingTool.sh @@ -13,68 +13,46 @@ # limitations under the License. set -eux set -o pipefail + root_path=$1 unpack_build_out_jar_path=$2 unpack_build_out_path=$3 big_version=$4 toolchain=$5 -compile_java=$6 -fastjson_jar=$7 -fastjson2_jar=$8 -fastjson2ext_jar=$9 -final_path=$(pwd) +src_path=$6 -jar_dir="jar" -unpack_jar_file="app_unpacking_tool.jar" -jar_directory="${root_path}/${jar_dir}" -unpack_jar_path="${root_path}/${jar_dir}/${unpack_jar_file}" -manifest_path="${root_path}/META-INF/unpacking_tool/MANIFEST.MF" +# 剩下的是 Java 文件 + 3 个 jar 包路径 +total_args=$# +java_file_count=$((total_args - 9)) # 6固定参数 + 3jar +java_files=("${@:7:$java_file_count}") + +fastjson_jar=${@: -3:1} +fastjson2_jar=${@: -2:1} +fastjson2ext_jar=${@: -1:1} + +final_path=$(pwd) out_dir="${root_path}/out/${toolchain}/unpacking_tool" -if [ -d "${out_dir}/ohos" ] - then - echo "${out_dir}/ohos exist" - else - mkdir -p "${out_dir}/ohos" -fi +mkdir -p "${out_dir}/ohos" -unpack_out_jar_path="${final_path}/${unpack_build_out_jar_path}" -unpack_out_path="${final_path}/${unpack_build_out_path}" +classpath="${fastjson_jar}:${fastjson2_jar}:${fastjson2ext_jar}" -if [ "$big_version" == "true" ] - then - compile_command="javac --release 8 -cp ${fastjson_jar}:${fastjson2_jar}:${fastjson2ext_jar} \ - -d ${out_dir} ${compile_java}" - eval ${compile_command} - else - compile_command="javac -source 1.8 -target 1.8 -cp ${fastjson_jar}:${fastjson2_jar}:${fastjson2ext_jar} \ - -d ${out_dir} ${compile_java}" - eval ${compile_command} +cd "$src_path" +if [ "$big_version" == "true" ]; then + javac --release 8 -cp "$classpath" -sourcepath "$src_path" -d "$out_dir" "${java_files[@]}" +else + javac -source 1.8 -target 1.8 -cp "$classpath" -sourcepath "$src_path" -d "$out_dir" "${java_files[@]}" fi -cd $out_dir -temp_unpack_jar_path="${root_path}/${jar_dir}/unpack_${toolchain}/${unpack_jar_file}" -temp_unpack_jart_dir="${root_path}/${jar_dir}/unpack_${toolchain}" -product_unpack_jar_command="jar -cvfm ${temp_unpack_jar_path} $manifest_path ./ohos" -if [ -d "${temp_unpack_jart_dir}" ] - then - echo "${temp_unpack_jart_dir} exist" - else - mkdir -p "${temp_unpack_jart_dir}" -fi -eval ${product_unpack_jar_command} -if [ -f "${unpack_jar_path}" ] - then - echo "${unpack_jar_path} exist" - else - cp ${temp_unpack_jar_path} ${unpack_jar_path} -fi -# make out dir -if [ -d "$unpack_out_path" ] - then - echo "$unpack_out_path exist" - else - mkdir -p $unpack_out_path -fi -copy_command="cp ${temp_unpack_jar_path} ${unpack_out_jar_path}" -eval ${copy_command} -rm -rf ${temp_unpack_jart_dir} \ No newline at end of file +cd "$out_dir" +unpack_jar_file="app_unpacking_tool.jar" +manifest_path="${root_path}/META-INF/unpacking_tool/MANIFEST.MF" +temp_unpack_dir="${root_path}/jar/unpack_${toolchain}" +temp_unpack_path="${temp_unpack_dir}/${unpack_jar_file}" +mkdir -p "$temp_unpack_dir" +jar -cvfm "$temp_unpack_path" "$manifest_path" ./ohos + +mkdir -p "$final_path/$unpack_build_out_path" +cp "$temp_unpack_path" "$final_path/$unpack_build_out_jar_path" +cp "$temp_unpack_path" "$root_path/jar/$unpack_jar_file" || true + +rm -rf "$temp_unpack_dir" -- Gitee