ronnie
2022-10-14 1504bb53e29d3d46222c0b3ea994fc494b48e153
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
@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"
set extrarules="%~dp0\mainDexClassesNoAapt.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=
set disableKeepAnnotated=
 
:firstArg
if [%1]==[] goto endArgs
 
    if %1 NEQ --output goto notOut
        set "output=%2"
        shift
        shift
        goto firstArg
 
:notOut
 
    if %1 NEQ --disable-annotation-resolution-workaround goto notDisable
        set "disableKeepAnnotated=%1"
        shift
        goto firstArg
 
:notDisable
 
    if %1 NEQ --aapt-rules goto notAapt
        set "extrarules=%2"
        shift
        shift
        goto firstArg
 
:notAapt
    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%" -include "%extrarules%" 1>nul
 
if DEFINED output goto redirect
call "%java_exe%" -Djava.ext.dirs="%frameworkdir%" com.android.multidex.MainDexListBuilder %disableKeepAnnotated% "%tmpJar%" "%params%"
goto afterClassReferenceListBuilder
:redirect
call "%java_exe%" -Djava.ext.dirs="%frameworkdir%" com.android.multidex.MainDexListBuilder %disableKeepAnnotated% "%tmpJar%" "%params%" 1>"%output%"
:afterClassReferenceListBuilder
 
del %tmpJar%
exit /b
 
:usage
echo "Usage : %0 [--output <output file>] <application path>"
exit /b 1