summaryrefslogtreecommitdiff
path: root/mainDexClasses.bat
diff options
context:
space:
mode:
Diffstat (limited to 'mainDexClasses.bat')
-rw-r--r--mainDexClasses.bat110
1 files changed, 110 insertions, 0 deletions
diff --git a/mainDexClasses.bat b/mainDexClasses.bat
new file mode 100644
index 0000000..f6a4b56
--- /dev/null
+++ b/mainDexClasses.bat
@@ -0,0 +1,110 @@
+@echo off
+REM Copyright (C) 2013 The Android Open Source Project
+REM
+REM Licensed under the Apache License, Version 2.0 (the "License");
+REM you may not use this file except in compliance with the License.
+REM You may obtain a copy of the License at
+REM
+REM http://www.apache.org/licenses/LICENSE-2.0
+REM
+REM Unless required by applicable law or agreed to in writing, software
+REM distributed under the License is distributed on an "AS IS" BASIS,
+REM WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+REM See the License for the specific language governing permissions and
+REM limitations under the License.
+
+REM don't modify the caller's environment
+setlocal
+
+rem Check we have a valid Java.exe in the path.
+set java_exe=
+if exist "%~dp0..\tools\lib\find_java.bat" call "%~dp0..\tools\lib\find_java.bat"
+if exist "%~dp0..\..\tools\lib\find_java.bat" call "%~dp0..\..\tools\lib\find_java.bat"
+if not defined java_exe goto :EOF
+
+set baserules="%~dp0\mainDexClasses.rules"
+
+REM Locate dx.jar in the directory where dx.bat was found.
+set jarfile=dx.jar
+set "frameworkdir=%~dp0"
+rem frameworkdir must not end with a dir sep.
+set "frameworkdir=%frameworkdir:~0,-1%"
+if exist "%frameworkdir%\%jarfile%" goto JarFileOk
+ set "frameworkdir=%~dp0lib"
+
+if exist "%frameworkdir%\%jarfile%" goto JarFileOk
+ set "frameworkdir=%~dp0..\framework"
+:JarFileOk
+
+set "jarpath=%frameworkdir%\%jarfile%"
+
+set "shrinkedAndroidJar=%SHRINKED_ANDROID_JAR%
+if exist "%shrinkedAndroidJar%" goto shrinkedAndroidOk
+ set "shrinkedAndroidJar=shrinkedAndroid.jar"
+
+if exist "%shrinkedAndroidJar%" goto shrinkedAndroidOk
+ set "shrinkedAndroidJar=%frameworkdir%\%shrinkedAndroidJar%"
+
+:shrinkedAndroidOk
+set "proguardExec=proguard.bat"
+set "proguard=%PROGUARD_HOME%\bin\%proguardExec%"
+
+if exist "%proguard%" goto proguardOk
+REM set proguard location for the SDK case
+ set "PROGUARD_HOME=%~dp0\..\..\tools\proguard"
+ set "proguard=%PROGUARD_HOME%\bin\%proguardExec%"
+
+if exist "%proguard%" goto proguardOk
+REM set proguard location for the Android tree case
+ set "PROGUARD_HOME=%~dp0\..\..\..\..\external\proguard"
+ set "proguard=%PROGUARD_HOME%\bin\%proguardExec%"
+
+:proguardOk
+REM Capture all arguments.
+REM Note that when reading the input arguments with %1, the cmd.exe
+REM automagically converts --name=value arguments into 2 arguments "--name"
+REM followed by "value". Dx has been changed to know how to deal with that.
+set params=
+
+set output=
+
+:firstArg
+if [%1]==[] goto endArgs
+
+ if %1 NEQ --output goto notOut
+ set "output=%2"
+ shift
+ shift
+ goto firstArg
+
+:notOut
+ if defined params goto usage
+ set params=%1
+ shift
+ goto firstArg
+
+:endArgs
+if defined params ( goto makeTmpJar ) else ( goto usage )
+
+:makeTmpJar
+set "tmpJar=%TMP%\mainDexClasses-%RANDOM%.tmp.jar"
+if exist "%tmpJar%" goto makeTmpJar
+echo "" > "%tmpJar%"
+set "exitStatus=0"
+
+
+call "%proguard%" -injars %params% -dontwarn -forceprocessing -outjars "%tmpJar%" -libraryjars "%shrinkedAndroidJar%" -dontoptimize -dontobfuscate -dontpreverify -include "%baserules%" 1>nul
+
+if DEFINED output goto redirect
+call "%java_exe%" -Djava.ext.dirs="%frameworkdir%" com.android.multidex.MainDexListBuilder "%tmpJar%" "%params%"
+goto afterClassReferenceListBuilder
+:redirect
+call "%java_exe%" -Djava.ext.dirs="%frameworkdir%" com.android.multidex.MainDexListBuilder "%tmpJar%" "%params%" 1>"%output%"
+:afterClassReferenceListBuilder
+
+del %tmpJar%
+exit /b
+
+:usage
+echo "Usage : %0 [--output <output file>] <application path>"
+exit /b 1