1@echo off 2REM Copyright (C) 2016 The Android Open Source Project 3REM 4REM Licensed under the Apache License, Version 2.0 (the "License"); 5REM you may not use this file except in compliance with the License. 6REM You may obtain a copy of the License at 7REM 8REM http://www.apache.org/licenses/LICENSE-2.0 9REM 10REM Unless required by applicable law or agreed to in writing, software 11REM distributed under the License is distributed on an "AS IS" BASIS, 12REM WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13REM See the License for the specific language governing permissions and 14REM limitations under the License. 15 16REM don't modify the caller's environment 17setlocal 18 19REM Locate apksigner.jar in the directory where apksigner.bat was found and start it. 20 21REM Set up prog to be the path of this script, including following symlinks, 22REM and set up progdir to be the fully-qualified pathname of its directory. 23set prog=%~f0 24 25rem Check we have a valid Java.exe in the path. 26set java_exe= 27if exist "%~dp0..\tools\lib\find_java.bat" call "%~dp0..\tools\lib\find_java.bat" 28if exist "%~dp0..\..\tools\lib\find_java.bat" call "%~dp0..\..\tools\lib\find_java.bat" 29if not defined java_exe goto :EOF 30 31set jarfile=apksigner.jar 32set "frameworkdir=%~dp0" 33rem frameworkdir must not end with a dir sep. 34set "frameworkdir=%frameworkdir:~0,-1%" 35 36if exist "%frameworkdir%\%jarfile%" goto JarFileOk 37 set "frameworkdir=%~dp0lib" 38 39if exist "%frameworkdir%\%jarfile%" goto JarFileOk 40 set "frameworkdir=%~dp0..\framework" 41 42:JarFileOk 43 44set "jarpath=%frameworkdir%\%jarfile%" 45 46set javaOpts= 47set args= 48 49REM By default, give apksigner a max heap size of 1 gig and a stack size of 1meg. 50rem This can be overridden by using "-JXmx..." and "-JXss..." options below. 51set defaultXmx=-Xmx1024M 52set defaultXss=-Xss1m 53 54REM Capture all arguments that are not -J options. 55REM Note that when reading the input arguments with %1, the cmd.exe 56REM automagically converts --name=value arguments into 2 arguments "--name" 57REM followed by "value". apksigner has been changed to know how to deal with that. 58set params= 59 60:firstArg 61if [%1]==[] goto endArgs 62set "a=%~1" 63 64 if [%defaultXmx%]==[] goto notXmx 65 if "%a:~0,5%" NEQ "-JXmx" goto notXmx 66 set defaultXmx= 67 :notXmx 68 69 if [%defaultXss%]==[] goto notXss 70 if "%a:~0,5%" NEQ "-JXss" goto notXss 71 set defaultXss= 72 :notXss 73 74 if "%a:~0,2%" NEQ "-J" goto notJ 75 set javaOpts=%javaOpts% -%a:~2% 76 shift /1 77 goto firstArg 78 79 :notJ 80 set params=%params% %1 81 shift /1 82 goto firstArg 83 84:endArgs 85 86set javaOpts=%javaOpts% %defaultXmx% %defaultXss% 87call "%java_exe%" %javaOpts% -jar "%jarpath%" %params% 88 89