• Home
  • History
  • Annotate
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 @echo off
2 REM Copyright (C) 2013 The Android Open Source Project
3 REM
4 REM Licensed under the Apache License, Version 2.0 (the "License");
5 REM you may not use this file except in compliance with the License.
6 REM You may obtain a copy of the License at
7 REM
8 REM     http://www.apache.org/licenses/LICENSE-2.0
9 REM
10 REM Unless required by applicable law or agreed to in writing, software
11 REM distributed under the License is distributed on an "AS IS" BASIS,
12 REM WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 REM See the License for the specific language governing permissions and
14 REM limitations under the License.
15 
16 REM don't modify the caller's environment
17 setlocal
18 
19 rem Check we have a valid Java.exe in the path.
20 set java_exe=
21 if exist    "%~dp0..\tools\lib\find_java.bat"    call    "%~dp0..\tools\lib\find_java.bat"
22 if exist    "%~dp0..\..\tools\lib\find_java.bat" call    "%~dp0..\..\tools\lib\find_java.bat"
23 if not defined java_exe goto :EOF
24 
25 set baserules="%~dp0\mainDexClasses.rules"
26 set extrarules="%~dp0\mainDexClassesNoAapt.rules"
27 
28 REM Locate dx.jar in the directory where dx.bat was found.
29 set jarfile=dx.jar
30 set "frameworkdir=%~dp0"
31 rem frameworkdir must not end with a dir sep.
32 set "frameworkdir=%frameworkdir:~0,-1%"
33 if exist "%frameworkdir%\%jarfile%" goto JarFileOk
34     set "frameworkdir=%~dp0lib"
35 
36 if exist "%frameworkdir%\%jarfile%" goto JarFileOk
37     set "frameworkdir=%~dp0..\framework"
38 :JarFileOk
39 
40 set "jarpath=%frameworkdir%\%jarfile%"
41 
42 set "shrinkedAndroidJar=%SHRINKED_ANDROID_JAR%
43 if exist "%shrinkedAndroidJar%" goto shrinkedAndroidOk
44     set "shrinkedAndroidJar=shrinkedAndroid.jar"
45 
46 if exist "%shrinkedAndroidJar%" goto shrinkedAndroidOk
47     set "shrinkedAndroidJar=%frameworkdir%\%shrinkedAndroidJar%"
48 
49 :shrinkedAndroidOk
50 set "proguardExec=proguard.bat"
51 set "proguard=%PROGUARD_HOME%\bin\%proguardExec%"
52 
53 if exist "%proguard%" goto proguardOk
54 REM set proguard location for the SDK case
55     set "PROGUARD_HOME=%~dp0\..\..\tools\proguard"
56     set "proguard=%PROGUARD_HOME%\bin\%proguardExec%"
57 
58 if exist "%proguard%" goto proguardOk
59 REM set proguard location for the Android tree case
60     set "PROGUARD_HOME=%~dp0\..\..\..\..\external\proguard"
61     set "proguard=%PROGUARD_HOME%\bin\%proguardExec%"
62 
63 :proguardOk
64 REM Capture all arguments.
65 REM Note that when reading the input arguments with %1, the cmd.exe
66 REM automagically converts --name=value arguments into 2 arguments "--name"
67 REM followed by "value". Dx has been changed to know how to deal with that.
68 set params=
69 
70 set output=
71 set disableKeepAnnotated=
72 
73 :firstArg
74 if [%1]==[] goto endArgs
75 
76     if %1 NEQ --output goto notOut
77         set "output=%2"
78         shift
79         shift
80         goto firstArg
81 
82 :notOut
83 
84     if %1 NEQ --disable-annotation-resolution-workaround goto notDisable
85         set "disableKeepAnnotated=%1"
86         shift
87         goto firstArg
88 
89 :notDisable
90 
91     if %1 NEQ --aapt-rules goto notAapt
92         set "extrarules=%2"
93         shift
94         shift
95         goto firstArg
96 
97 :notAapt
98     if defined params goto usage
99     set params=%1
100     shift
101     goto firstArg
102 
103 :endArgs
104 if defined params ( goto makeTmpJar ) else ( goto usage )
105 
106 :makeTmpJar
107 set "tmpJar=%TMP%\mainDexClasses-%RANDOM%.tmp.jar"
108 if exist "%tmpJar%" goto makeTmpJar
109 echo "" > "%tmpJar%"
110 set "exitStatus=0"
111 
112 
113 call "%proguard%" -injars %params% -dontwarn -forceprocessing  -outjars "%tmpJar%" -libraryjars "%shrinkedAndroidJar%" -dontoptimize -dontobfuscate -dontpreverify -include "%baserules%" -include "%extrarules%" 1>nul
114 
115 if DEFINED output goto redirect
116 call "%java_exe%" -Djava.ext.dirs="%frameworkdir%" com.android.multidex.MainDexListBuilder %disableKeepAnnotated% "%tmpJar%" "%params%"
117 goto afterClassReferenceListBuilder
118 :redirect
119 call "%java_exe%" -Djava.ext.dirs="%frameworkdir%" com.android.multidex.MainDexListBuilder %disableKeepAnnotated% "%tmpJar%" "%params%" 1>"%output%"
120 :afterClassReferenceListBuilder
121 
122 del %tmpJar%
123 exit /b
124 
125 :usage
126 echo "Usage : %0 [--output <output file>] <application path>"
127 exit /b 1
128