blob: 8e05aefccd39ba618d72752c4feb9dcc68d4609d [file] [log] [blame]
Winson9947f1e2019-08-16 10:20:39 -07001#!/bin/bash
2# Copyright (C) 2019 The Android Open Source Project
3#
4# Licensed under the Apache License, Version 2.0 (the "License");
5# you may not use this file except in compliance with the License.
6# You may obtain a copy of the License at
7#
8# http://www.apache.org/licenses/LICENSE-2.0
9#
10# Unless required by applicable law or agreed to in writing, software
11# distributed under the License is distributed on an "AS IS" BASIS,
12# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13# See the License for the specific language governing permissions and
14# limitations under the License.
15
16aapt2=$1
17soong_zip=$2
18genDir=$3
19FRAMEWORK_RES_APK=$4
20inDir=$5
21
22# (String name, boolean retainFiles = false, String... files)
23function compileAndLink {
24 moduleName=$1
25 mkdir "$genDir"/out/"$moduleName"
26
27 args=""
28 for arg in "${@:4}"; do
29 if [[ $arg == res* ]]; then
30 args="$args $inDir/$arg"
31 else
32 args="$args $arg"
33 fi
34 done
35
36 $aapt2 compile -o "$genDir"/out/"$moduleName" $args
37
38 $aapt2 link \
39 -I "$FRAMEWORK_RES_APK" \
40 --manifest "$inDir"/"$3" \
41 -o "$genDir"/out/"$moduleName"/apk.apk \
42 "$genDir"/out/"$moduleName"/*.flat \
43 --no-compress
44
45 unzip -qq "$genDir"/out/"$moduleName"/apk.apk -d "$genDir"/out/"$moduleName"/unzip
46
47 if [[ "$2" == "APK_WITHOUT_FILE" || "$2" == "BOTH_WITHOUT_FILE" ]]; then
48 zip -q -d "$genDir"/out/"$moduleName"/apk.apk "res/*"
49 cp "$genDir"/out/"$moduleName"/apk.apk "$genDir"/output/raw/"$moduleName"Apk.apk
50 elif [[ "$2" == "APK" || "$2" == "BOTH" ]]; then
51 cp "$genDir"/out/"$moduleName"/apk.apk "$genDir"/output/raw/"$moduleName"Apk.apk
52 fi
53
54 if [[ "$2" == "ARSC" || "$2" == "BOTH" || "$2" == "BOTH_WITHOUT_FILE" ]]; then
55 zip -d "$genDir"/out/"$moduleName"/apk.apk "res/*"
56 cp "$genDir"/out/"$moduleName"/unzip/resources.arsc "$genDir"/output/raw/"$moduleName"Arsc.arsc
57 fi
58}
59
60rm -r "$genDir"/out
61rm -r "$genDir"/output
62rm -r "$genDir"/temp
63
64mkdir "$genDir"/out
65mkdir -p "$genDir"/output/raw
66mkdir -p "$genDir"/temp/res/drawable-nodpi
67mkdir -p "$genDir"/temp/res/layout
68
69compileAndLink stringOne BOTH AndroidManifestFramework.xml res/values/string_one.xml
70compileAndLink stringTwo BOTH AndroidManifestFramework.xml res/values/string_two.xml
Ryan Mitchell61158582020-01-14 12:35:08 -080071compileAndLink stringThree BOTH AndroidManifestFramework.xml res/values/string_three.xml
72compileAndLink stringFour BOTH AndroidManifestFramework.xml res/values/string_four.xml
Winson9947f1e2019-08-16 10:20:39 -070073
74compileAndLink dimenOne BOTH AndroidManifestFramework.xml res/values/dimen_one.xml
75compileAndLink dimenTwo BOTH AndroidManifestFramework.xml res/values/dimen_two.xml
Ryan Mitchell61158582020-01-14 12:35:08 -080076compileAndLink dimenThree BOTH AndroidManifestFramework.xml res/values/dimen_three.xml
77compileAndLink dimenFour BOTH AndroidManifestFramework.xml res/values/dimen_four.xml
Winson9947f1e2019-08-16 10:20:39 -070078
79compileAndLink drawableMdpiWithoutFile BOTH_WITHOUT_FILE AndroidManifestFramework.xml res/values/drawable_one.xml res/drawable-mdpi/ic_delete.png
80compileAndLink drawableMdpiWithFile APK AndroidManifestFramework.xml res/values/drawable_one.xml res/drawable-mdpi/ic_delete.png
81
82compileAndLink layoutWithoutFile BOTH_WITHOUT_FILE AndroidManifestFramework.xml res/values/activity_list_item_id.xml res/layout/activity_list_item.xml
83compileAndLink layoutWithFile APK AndroidManifestFramework.xml res/values/activity_list_item_id.xml res/layout/activity_list_item.xml
84
85cp -f "$inDir"/res/layout/layout_one.xml "$genDir"/temp/res/layout/layout.xml
86compileAndLink layoutOne ARSC AndroidManifestApp.xml "$genDir"/temp/res/layout/layout.xml res/values/layout_id.xml
87cp -f "$genDir"/out/layoutOne/unzip/res/layout/layout.xml "$genDir"/output/raw/layoutOne.xml
88
89cp -f "$inDir"/res/layout/layout_two.xml "$genDir"/temp/res/layout/layout.xml
90compileAndLink layoutTwo ARSC AndroidManifestApp.xml "$genDir"/temp/res/layout/layout.xml res/values/layout_id.xml
91cp -f "$genDir"/out/layoutTwo/unzip/res/layout/layout.xml "$genDir"/output/raw/layoutTwo.xml
92
Ryan Mitchell61158582020-01-14 12:35:08 -080093cp -f "$inDir"/res/layout/layout_three.xml "$genDir"/temp/res/layout/layout.xml
94compileAndLink layoutThree ARSC AndroidManifestApp.xml "$genDir"/temp/res/layout/layout.xml res/values/layout_id.xml
95cp -f "$genDir"/out/layoutThree/unzip/res/layout/layout.xml "$genDir"/output/raw/layoutThree.xml
96
97cp -f "$inDir"/res/layout/layout_four.xml "$genDir"/temp/res/layout/layout.xml
98compileAndLink layoutFour ARSC AndroidManifestApp.xml "$genDir"/temp/res/layout/layout.xml res/values/layout_id.xml
99cp -f "$genDir"/out/layoutFour/unzip/res/layout/layout.xml "$genDir"/output/raw/layoutFour.xml
100
Winson9947f1e2019-08-16 10:20:39 -0700101drawableNoDpi="/res/drawable-nodpi"
102inDirDrawableNoDpi="$inDir$drawableNoDpi"
103
104cp -f "$inDirDrawableNoDpi"/nonAssetDrawableOne.xml "$genDir"/temp/res/drawable-nodpi/non_asset_drawable.xml
105compileAndLink nonAssetDrawableOne ARSC AndroidManifestApp.xml "$genDir"/temp/res/drawable-nodpi/non_asset_drawable.xml res/values/non_asset_drawable_id.xml
106cp -f "$genDir"/out/nonAssetDrawableOne/unzip/res/drawable-nodpi-v4/non_asset_drawable.xml "$genDir"/output/raw/nonAssetDrawableOne.xml
107
108cp -f "$inDirDrawableNoDpi"/nonAssetDrawableTwo.xml "$genDir"/temp/res/drawable-nodpi/non_asset_drawable.xml
109compileAndLink nonAssetDrawableTwo ARSC AndroidManifestApp.xml "$genDir"/temp/res/drawable-nodpi/non_asset_drawable.xml res/values/non_asset_drawable_id.xml
110cp -f "$genDir"/out/nonAssetDrawableTwo/unzip/res/drawable-nodpi-v4/non_asset_drawable.xml "$genDir"/output/raw/nonAssetDrawableTwo.xml
111
Ryan Mitchell61158582020-01-14 12:35:08 -0800112cp -f "$inDirDrawableNoDpi"/nonAssetDrawableThree.xml "$genDir"/temp/res/drawable-nodpi/non_asset_drawable.xml
113compileAndLink nonAssetDrawableThree ARSC AndroidManifestApp.xml "$genDir"/temp/res/drawable-nodpi/non_asset_drawable.xml res/values/non_asset_drawable_id.xml
114cp -f "$genDir"/out/nonAssetDrawableThree/unzip/res/drawable-nodpi-v4/non_asset_drawable.xml "$genDir"/output/raw/nonAssetDrawableThree.xml
115
116cp -f "$inDirDrawableNoDpi"/nonAssetDrawableFour.xml "$genDir"/temp/res/drawable-nodpi/non_asset_drawable.xml
117compileAndLink nonAssetDrawableFour ARSC AndroidManifestApp.xml "$genDir"/temp/res/drawable-nodpi/non_asset_drawable.xml res/values/non_asset_drawable_id.xml
118cp -f "$genDir"/out/nonAssetDrawableFour/unzip/res/drawable-nodpi-v4/non_asset_drawable.xml "$genDir"/output/raw/nonAssetDrawableFour.xml
119
120cp -f "$inDirDrawableNoDpi"/nonAssetBitmapRed.png "$genDir"/temp/res/drawable-nodpi/non_asset_bitmap.png
121compileAndLink nonAssetBitmapRed BOTH AndroidManifestApp.xml "$genDir"/temp/res/drawable-nodpi/non_asset_bitmap.png res/values/non_asset_bitmap_id.xml
122cp -f "$genDir"/out/nonAssetBitmapRed/unzip/res/drawable-nodpi-v4/non_asset_bitmap.png "$genDir"/output/raw/nonAssetBitmapRed.png
123
Winson9947f1e2019-08-16 10:20:39 -0700124cp -f "$inDirDrawableNoDpi"/nonAssetBitmapGreen.png "$genDir"/temp/res/drawable-nodpi/non_asset_bitmap.png
125compileAndLink nonAssetBitmapGreen BOTH AndroidManifestApp.xml "$genDir"/temp/res/drawable-nodpi/non_asset_bitmap.png res/values/non_asset_bitmap_id.xml
126cp -f "$genDir"/out/nonAssetBitmapGreen/unzip/res/drawable-nodpi-v4/non_asset_bitmap.png "$genDir"/output/raw/nonAssetBitmapGreen.png
127
128cp -f "$inDirDrawableNoDpi"/nonAssetBitmapBlue.png "$genDir"/temp/res/drawable-nodpi/non_asset_bitmap.png
129compileAndLink nonAssetBitmapBlue ARSC AndroidManifestApp.xml "$genDir"/temp/res/drawable-nodpi/non_asset_bitmap.png res/values/non_asset_bitmap_id.xml
130cp -f "$genDir"/out/nonAssetBitmapBlue/unzip/res/drawable-nodpi-v4/non_asset_bitmap.png "$genDir"/output/raw/nonAssetBitmapBlue.png
131
Ryan Mitchell61158582020-01-14 12:35:08 -0800132cp -f "$inDirDrawableNoDpi"/nonAssetBitmapWhite.png "$genDir"/temp/res/drawable-nodpi/non_asset_bitmap.png
133compileAndLink nonAssetBitmapWhite ARSC AndroidManifestApp.xml "$genDir"/temp/res/drawable-nodpi/non_asset_bitmap.png res/values/non_asset_bitmap_id.xml
134cp -f "$genDir"/out/nonAssetBitmapWhite/unzip/res/drawable-nodpi-v4/non_asset_bitmap.png "$genDir"/output/raw/nonAssetBitmapWhite.png
135
Winson9947f1e2019-08-16 10:20:39 -0700136$soong_zip -o "$genDir"/out.zip -C "$genDir"/output/ -D "$genDir"/output/