1b8a72a62Sopenharmony_ci#!/usr/bin/env bash 2b8a72a62Sopenharmony_ci# Copyright (c) 2022-2024 Huawei Device Co., Ltd. 3b8a72a62Sopenharmony_ci# Licensed under the Apache License, Version 2.0 (the "License"); 4b8a72a62Sopenharmony_ci# you may not use this file except in compliance with the License. 5b8a72a62Sopenharmony_ci# You may obtain a copy of the License at 6b8a72a62Sopenharmony_ci# 7b8a72a62Sopenharmony_ci# http://www.apache.org/licenses/LICENSE-2.0 8b8a72a62Sopenharmony_ci# 9b8a72a62Sopenharmony_ci# Unless required by applicable law or agreed to in writing, software 10b8a72a62Sopenharmony_ci# distributed under the License is distributed on an "AS IS" BASIS, 11b8a72a62Sopenharmony_ci# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12b8a72a62Sopenharmony_ci# See the License for the specific language governing permissions and 13b8a72a62Sopenharmony_ci# limitations under the License. 14b8a72a62Sopenharmony_ciset -eux 15b8a72a62Sopenharmony_ciset -o pipefail 16b8a72a62Sopenharmony_ciroot_path=$1 17b8a72a62Sopenharmony_cipack_build_out_jar_path=$2 18b8a72a62Sopenharmony_cipack_build_out_path=$3 19b8a72a62Sopenharmony_citoolchain=$4 20b8a72a62Sopenharmony_cicompile_java=$5 21b8a72a62Sopenharmony_cifastjson_jar=$6 22b8a72a62Sopenharmony_cicompress_jar=$7 23b8a72a62Sopenharmony_ciio_jar=$8 24b8a72a62Sopenharmony_cifinal_path=$(pwd) 25b8a72a62Sopenharmony_ci 26b8a72a62Sopenharmony_cijar_dir="jar" 27b8a72a62Sopenharmony_cipack_jar_file="app_packing_tool.jar" 28b8a72a62Sopenharmony_cifastjson_jar_file="fastjson-1.2.83.jar" 29b8a72a62Sopenharmony_cicompress_jar_file="commons-compress-1.26.1.jar" 30b8a72a62Sopenharmony_ciio_jar_file="commons-io-2.15.1.jar" 31b8a72a62Sopenharmony_cijar_directory="${root_path}/jar" 32b8a72a62Sopenharmony_cipack_jar_path="${root_path}/${jar_dir}/${pack_jar_file}" 33b8a72a62Sopenharmony_cimanifest_path="${root_path}/META-INF/packing_tool/MANIFEST.MF" 34b8a72a62Sopenharmony_ci 35b8a72a62Sopenharmony_ciout_dir="${root_path}/out/${toolchain}/packTool" 36b8a72a62Sopenharmony_ciif [ -d "${out_dir}/ohos" ] 37b8a72a62Sopenharmony_ci then 38b8a72a62Sopenharmony_ci echo "${out_dir}/ohos exist" 39b8a72a62Sopenharmony_ci else 40b8a72a62Sopenharmony_ci mkdir -p "${out_dir}/ohos" 41b8a72a62Sopenharmony_cifi 42b8a72a62Sopenharmony_ci 43b8a72a62Sopenharmony_cicompile_command="javac -source 1.8 -target 1.8 \ 44b8a72a62Sopenharmony_ci-cp ${fastjson_jar}:${compress_jar}:${io_jar} -d ${out_dir} ${compile_java}" 45b8a72a62Sopenharmony_cieval ${compile_command} 46b8a72a62Sopenharmony_ci 47b8a72a62Sopenharmony_citemp_dir="$root_path/jar/packing_temp_${toolchain}" 48b8a72a62Sopenharmony_ciif [ -d "${temp_dir}" ] 49b8a72a62Sopenharmony_ci then 50b8a72a62Sopenharmony_ci echo "${temp_dir} exit" 51b8a72a62Sopenharmony_ci else 52b8a72a62Sopenharmony_ci mkdir ${temp_dir} 53b8a72a62Sopenharmony_cifi 54b8a72a62Sopenharmony_ci 55b8a72a62Sopenharmony_cicd ${out_dir} 56b8a72a62Sopenharmony_ciproduct_pack_jar_command="jar -cvfm ${temp_dir}/${pack_jar_file} ${manifest_path} ./ohos" 57b8a72a62Sopenharmony_cieval ${product_pack_jar_command} 58b8a72a62Sopenharmony_ci 59b8a72a62Sopenharmony_ci# merge app_packing_tool.jar and fastjson/commons-compress 60b8a72a62Sopenharmony_cicp ${fastjson_jar} "${temp_dir}/${fastjson_jar_file}" 61b8a72a62Sopenharmony_cicp ${compress_jar} "${temp_dir}/${compress_jar_file}" 62b8a72a62Sopenharmony_cicp ${io_jar} "${temp_dir}/${io_jar_file}" 63b8a72a62Sopenharmony_cidetach_pack_jar_command="jar -xvf ${pack_jar_file}" 64b8a72a62Sopenharmony_cidetach_fastjson_jar_command="jar -xvf ${fastjson_jar_file}" 65b8a72a62Sopenharmony_cidetach_io_jar_command="jar -xvf ${io_jar_file}" 66b8a72a62Sopenharmony_cidetach_compress_jar_command="jar -xvf ${compress_jar_file}" 67b8a72a62Sopenharmony_cicd ${temp_dir} 68b8a72a62Sopenharmony_cieval ${detach_pack_jar_command} 69b8a72a62Sopenharmony_cieval ${detach_fastjson_jar_command} 70b8a72a62Sopenharmony_cieval ${detach_io_jar_command} 71b8a72a62Sopenharmony_cieval ${detach_compress_jar_command} 72b8a72a62Sopenharmony_cicp "$root_path/jar/NOTICE" "META-INF/NOTICE.txt" 73b8a72a62Sopenharmony_cirm ${pack_jar_file} 74b8a72a62Sopenharmony_cirm ${fastjson_jar_file} 75b8a72a62Sopenharmony_cirm ${compress_jar_file} 76b8a72a62Sopenharmony_cirm ${io_jar_file} 77b8a72a62Sopenharmony_ci 78b8a72a62Sopenharmony_cicd ${jar_directory} 79b8a72a62Sopenharmony_citemp_pack_jar_dir="${root_path}/jar/packtool_${toolchain}" 80b8a72a62Sopenharmony_citemp_pack_jar_path="${root_path}/jar/packtool_${toolchain}/${pack_jar_file}" 81b8a72a62Sopenharmony_cimerge_pack_fast_jar_command="jar -cvfm ${temp_pack_jar_path} ${manifest_path} -C ${temp_dir} ." 82b8a72a62Sopenharmony_ciif [ -d "${temp_pack_jar_dir}" ] 83b8a72a62Sopenharmony_ci then 84b8a72a62Sopenharmony_ci echo "${temp_pack_jar_dir} exist" 85b8a72a62Sopenharmony_ci else 86b8a72a62Sopenharmony_ci mkdir -p ${temp_pack_jar_dir} 87b8a72a62Sopenharmony_cifi 88b8a72a62Sopenharmony_cieval ${merge_pack_fast_jar_command} 89b8a72a62Sopenharmony_ci 90b8a72a62Sopenharmony_ci# make out dir 91b8a72a62Sopenharmony_cifinal_pack_out_path="${final_path}/${pack_build_out_path}" 92b8a72a62Sopenharmony_cifinal_pack_jar_path="${final_path}/${pack_build_out_jar_path}" 93b8a72a62Sopenharmony_ciif [ -d "$final_pack_out_path" ] 94b8a72a62Sopenharmony_ci then 95b8a72a62Sopenharmony_ci echo "${final_pack_out_path} exist" 96b8a72a62Sopenharmony_ci else 97b8a72a62Sopenharmony_ci mkdir -p ${final_pack_out_path} 98b8a72a62Sopenharmony_cifi 99b8a72a62Sopenharmony_cicopy_command="cp ${temp_pack_jar_path} ${final_pack_jar_path}" 100b8a72a62Sopenharmony_cieval ${copy_command} 101b8a72a62Sopenharmony_ciif [ -f "${pack_jar_file}"] 102b8a72a62Sopenharmony_ci then 103b8a72a62Sopenharmony_ci echo "${pack_jar_file} exist" 104b8a72a62Sopenharmony_ci else 105b8a72a62Sopenharmony_ci cp ${temp_pack_jar_path} ${pack_jar_file} 106b8a72a62Sopenharmony_cifi 107b8a72a62Sopenharmony_cirm -rf ${temp_pack_jar_dir} 108b8a72a62Sopenharmony_cirm -rf ${temp_dir} 109b8a72a62Sopenharmony_cirm -rf ${out_dir} 110