1*7bbbfb8dSAndroid Build Coastguard Worker@echo off 2*7bbbfb8dSAndroid Build Coastguard WorkerREM Copyright (C) 2024 The Android Open Source Project 3*7bbbfb8dSAndroid Build Coastguard WorkerREM 4*7bbbfb8dSAndroid Build Coastguard WorkerREM Licensed under the Apache License, Version 2.0 (the "License"); 5*7bbbfb8dSAndroid Build Coastguard WorkerREM you may not use this file except in compliance with the License. 6*7bbbfb8dSAndroid Build Coastguard WorkerREM You may obtain a copy of the License at 7*7bbbfb8dSAndroid Build Coastguard WorkerREM 8*7bbbfb8dSAndroid Build Coastguard WorkerREM http://www.apache.org/licenses/LICENSE-2.0 9*7bbbfb8dSAndroid Build Coastguard WorkerREM 10*7bbbfb8dSAndroid Build Coastguard WorkerREM Unless required by applicable law or agreed to in writing, software 11*7bbbfb8dSAndroid Build Coastguard WorkerREM distributed under the License is distributed on an "AS IS" BASIS, 12*7bbbfb8dSAndroid Build Coastguard WorkerREM WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13*7bbbfb8dSAndroid Build Coastguard WorkerREM See the License for the specific language governing permissions and 14*7bbbfb8dSAndroid Build Coastguard WorkerREM limitations under the License. 15*7bbbfb8dSAndroid Build Coastguard Worker 16*7bbbfb8dSAndroid Build Coastguard WorkerREM don't modify the caller's environment 17*7bbbfb8dSAndroid Build Coastguard Workersetlocal 18*7bbbfb8dSAndroid Build Coastguard Worker 19*7bbbfb8dSAndroid Build Coastguard WorkerREM Locate apksigner.jar in the directory where apksigner.bat was found and start it. 20*7bbbfb8dSAndroid Build Coastguard Worker 21*7bbbfb8dSAndroid Build Coastguard WorkerREM Set up prog to be the path of this script, including following symlinks, 22*7bbbfb8dSAndroid Build Coastguard WorkerREM and set up progdir to be the fully-qualified pathname of its directory. 23*7bbbfb8dSAndroid Build Coastguard Workerset prog=%~f0 24*7bbbfb8dSAndroid Build Coastguard Worker 25*7bbbfb8dSAndroid Build Coastguard Worker@rem Find java.exe 26*7bbbfb8dSAndroid Build Coastguard Workerif defined JAVA_HOME goto findJavaFromJavaHome 27*7bbbfb8dSAndroid Build Coastguard Worker 28*7bbbfb8dSAndroid Build Coastguard Workerset JAVA_EXE=java.exe 29*7bbbfb8dSAndroid Build Coastguard Worker%JAVA_EXE% -version >NUL 2>&1 30*7bbbfb8dSAndroid Build Coastguard Workerif "%ERRORLEVEL%" == "0" goto init 31*7bbbfb8dSAndroid Build Coastguard Worker 32*7bbbfb8dSAndroid Build Coastguard Workerecho. 33*7bbbfb8dSAndroid Build Coastguard Workerecho ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 34*7bbbfb8dSAndroid Build Coastguard Workerecho. 35*7bbbfb8dSAndroid Build Coastguard Workerecho Please set the JAVA_HOME variable in your environment to match the 36*7bbbfb8dSAndroid Build Coastguard Workerecho location of your Java installation. 37*7bbbfb8dSAndroid Build Coastguard Workerexit /b 1 38*7bbbfb8dSAndroid Build Coastguard Worker 39*7bbbfb8dSAndroid Build Coastguard Worker:findJavaFromJavaHome 40*7bbbfb8dSAndroid Build Coastguard Workerset JAVA_HOME=%JAVA_HOME:"=% 41*7bbbfb8dSAndroid Build Coastguard Workerset JAVA_EXE=%JAVA_HOME%/bin/java.exe 42*7bbbfb8dSAndroid Build Coastguard Worker 43*7bbbfb8dSAndroid Build Coastguard Workerif exist "%JAVA_EXE%" goto init 44*7bbbfb8dSAndroid Build Coastguard Worker 45*7bbbfb8dSAndroid Build Coastguard Workerecho. 46*7bbbfb8dSAndroid Build Coastguard Workerecho ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 47*7bbbfb8dSAndroid Build Coastguard Workerecho. 48*7bbbfb8dSAndroid Build Coastguard Workerecho Please set the JAVA_HOME variable in your environment to match the 49*7bbbfb8dSAndroid Build Coastguard Workerecho location of your Java installation. 50*7bbbfb8dSAndroid Build Coastguard Workerexit /b 1 51*7bbbfb8dSAndroid Build Coastguard Worker 52*7bbbfb8dSAndroid Build Coastguard Worker:init 53*7bbbfb8dSAndroid Build Coastguard WorkerREM TODO(b/329887683): reuse existing apksigner.bat script (this is the only difference) 54*7bbbfb8dSAndroid Build Coastguard Workerset jarfile=apksigner-kms.jar 55*7bbbfb8dSAndroid Build Coastguard Workerset "frameworkdir=%~dp0" 56*7bbbfb8dSAndroid Build Coastguard Workerrem frameworkdir must not end with a dir sep. 57*7bbbfb8dSAndroid Build Coastguard Workerset "frameworkdir=%frameworkdir:~0,-1%" 58*7bbbfb8dSAndroid Build Coastguard Worker 59*7bbbfb8dSAndroid Build Coastguard Workerif exist "%frameworkdir%\%jarfile%" goto JarFileOk 60*7bbbfb8dSAndroid Build Coastguard Worker set "frameworkdir=%~dp0lib" 61*7bbbfb8dSAndroid Build Coastguard Worker 62*7bbbfb8dSAndroid Build Coastguard Workerif exist "%frameworkdir%\%jarfile%" goto JarFileOk 63*7bbbfb8dSAndroid Build Coastguard Worker set "frameworkdir=%~dp0..\framework" 64*7bbbfb8dSAndroid Build Coastguard Worker 65*7bbbfb8dSAndroid Build Coastguard Worker:JarFileOk 66*7bbbfb8dSAndroid Build Coastguard Worker 67*7bbbfb8dSAndroid Build Coastguard Workerset "jarpath=%frameworkdir%\%jarfile%" 68*7bbbfb8dSAndroid Build Coastguard Worker 69*7bbbfb8dSAndroid Build Coastguard Workerset javaOpts= 70*7bbbfb8dSAndroid Build Coastguard Workerset args= 71*7bbbfb8dSAndroid Build Coastguard Worker 72*7bbbfb8dSAndroid Build Coastguard WorkerREM By default, give apksigner a max heap size of 1 gig and a stack size of 1meg. 73*7bbbfb8dSAndroid Build Coastguard Workerrem This can be overridden by using "-JXmx..." and "-JXss..." options below. 74*7bbbfb8dSAndroid Build Coastguard Workerset defaultXmx=-Xmx1024M 75*7bbbfb8dSAndroid Build Coastguard Workerset defaultXss=-Xss1m 76*7bbbfb8dSAndroid Build Coastguard Worker 77*7bbbfb8dSAndroid Build Coastguard WorkerREM Capture all arguments that are not -J options. 78*7bbbfb8dSAndroid Build Coastguard WorkerREM Note that when reading the input arguments with %1, the cmd.exe 79*7bbbfb8dSAndroid Build Coastguard WorkerREM automagically converts --name=value arguments into 2 arguments "--name" 80*7bbbfb8dSAndroid Build Coastguard WorkerREM followed by "value". apksigner has been changed to know how to deal with that. 81*7bbbfb8dSAndroid Build Coastguard Workerset params= 82*7bbbfb8dSAndroid Build Coastguard Worker 83*7bbbfb8dSAndroid Build Coastguard Worker:firstArg 84*7bbbfb8dSAndroid Build Coastguard Workerif [%1]==[] goto endArgs 85*7bbbfb8dSAndroid Build Coastguard Workerset "a=%~1" 86*7bbbfb8dSAndroid Build Coastguard Worker 87*7bbbfb8dSAndroid Build Coastguard Worker if [%defaultXmx%]==[] goto notXmx 88*7bbbfb8dSAndroid Build Coastguard Worker if "%a:~0,5%" NEQ "-JXmx" goto notXmx 89*7bbbfb8dSAndroid Build Coastguard Worker set defaultXmx= 90*7bbbfb8dSAndroid Build Coastguard Worker :notXmx 91*7bbbfb8dSAndroid Build Coastguard Worker 92*7bbbfb8dSAndroid Build Coastguard Worker if [%defaultXss%]==[] goto notXss 93*7bbbfb8dSAndroid Build Coastguard Worker if "%a:~0,5%" NEQ "-JXss" goto notXss 94*7bbbfb8dSAndroid Build Coastguard Worker set defaultXss= 95*7bbbfb8dSAndroid Build Coastguard Worker :notXss 96*7bbbfb8dSAndroid Build Coastguard Worker 97*7bbbfb8dSAndroid Build Coastguard Worker if "%a:~0,2%" NEQ "-J" goto notJ 98*7bbbfb8dSAndroid Build Coastguard Worker set javaOpts=%javaOpts% -%a:~2% 99*7bbbfb8dSAndroid Build Coastguard Worker shift /1 100*7bbbfb8dSAndroid Build Coastguard Worker goto firstArg 101*7bbbfb8dSAndroid Build Coastguard Worker 102*7bbbfb8dSAndroid Build Coastguard Worker :notJ 103*7bbbfb8dSAndroid Build Coastguard Worker set params=%params% %1 104*7bbbfb8dSAndroid Build Coastguard Worker shift /1 105*7bbbfb8dSAndroid Build Coastguard Worker goto firstArg 106*7bbbfb8dSAndroid Build Coastguard Worker 107*7bbbfb8dSAndroid Build Coastguard Worker:endArgs 108*7bbbfb8dSAndroid Build Coastguard Worker 109*7bbbfb8dSAndroid Build Coastguard Workerset javaOpts=%javaOpts% %defaultXmx% %defaultXss% 110*7bbbfb8dSAndroid Build Coastguard Workercall "%java_exe%" %javaOpts% -jar "%jarpath%" %params% 111*7bbbfb8dSAndroid Build Coastguard Worker 112