Android Windows: Adjust to new SDK layout

Google moved dx.bat into a new build-tools/VERSION folder
meaning our dx.bat no longer found dx.jar. Fix this by
passing into our dx.bat, the location of the real dx.bat

Removed hardcoded 17.0.0 and %ANDROID_BUILD_TOOLS_REVISION%
path searches.

Change-Id: I91c12c01745d6f12edbd126102b8f06eba291402
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
bb10
Ray Donnelly 2013-06-10 00:19:12 +01:00 committed by The Qt Project
parent 7971cf8352
commit 1bd8db01c4
2 changed files with 22 additions and 16 deletions

View File

@ -27,34 +27,35 @@ REM and set up progdir to be the fully-qualified pathname of its directory.
set prog=%~f0
if [%1]==[] goto badArgs
set "androidsdk=%1"
set "dx_jar_path=%1"
shift /1
if [%1]==[] goto badArgs
REM Use dpZ here to make it more like the Google version.
for %%F in ("%dx_jar_path%") do set dpZ=%%~dpF
rem Check we have a valid Java.exe in the path.
set java_exe=
call "%androidsdk%\tools\lib\find_java.bat"
if exist "%dpZ%..\tools\lib\find_java.bat" call "%dpZ%..\tools\lib\find_java.bat"
if exist "%dpZ%..\..\tools\lib\find_java.bat" call "%dpZ%..\..\tools\lib\find_java.bat"
if not defined java_exe goto :EOF
set jarfile=dx.jar
set "frameworkdir=%androidsdk%\platform-tools"
set "frameworkdir=%dpZ%"
rem frameworkdir must not end with a dir sep.
set "frameworkdir=%frameworkdir:~0,-1%"
if exist "%frameworkdir%\%jarfile%" goto JarFileOk
set "frameworkdir=%frameworkdir%\lib"
set "frameworkdir=%dpZ%lib"
if exist "%frameworkdir%\%jarfile%" goto JarFileOk
set "frameworkdir=%androidsdk%\framework"
if exist "%frameworkdir%\%jarfile%" goto JarFileOk
set "frameworkdir=%androidsdk%\build-tools\%ANDROID_BUILD_TOOLS_REVISION%\lib"
if exist "%frameworkdir%\%jarfile%" goto JarFileOk
set "frameworkdir=%androidsdk%\build-tools\17.0.0\lib"
set "frameworkdir=%dpZ%..\framework"
:JarFileOk
set jarpath=%frameworkdir%\%jarfile%
set "jarpath=%frameworkdir%\%jarfile%"
set javaOpts=
set args=
@ -97,12 +98,11 @@ set a=%~1
:endArgs
set javaOpts=%javaOpts% %defaultXmx% %defaultXss%
call "%java_exe%" %javaOpts% -Djava.ext.dirs="%frameworkdir%" -jar "%jarpath%" %params%
goto :EOF
:badArgs
echo Usage: dx (for Qt) <android_sdk_path> <dx_arguments>
echo Example: dx (for Qt) C:\android-sdk --dex --output=target.jar .classes
echo Usage: dx (for Qt) ^<android_sdk_dx_jar_path^> ^<dx_arguments^>
echo Example: dx (for Qt) C:\android-sdk\build-tools\17.0.0\dx.jar --dex --output=target.jar .classes

View File

@ -58,7 +58,13 @@ QMAKE_EXTENSION_SHLIB = jar
# Override linker with dex (for distributable Android archives) or jar (for other java builds)
android:!bundled_jar_file {
contains(QMAKE_HOST.os, Windows) {
DEX_CMD = $$PWD/data/android/dx $$SDK_ROOT
# The location where dx.bat expects itself to be found is used as the landmark instead
# of the base sdk folder.
# Doing it this way makes this logic more similar to the other platforms and
# also means that our dx.bat is more like Google's dx.bat
DEX_BAT = $$SDK_ROOT/platform-tools/dx.bat
!exists($$DEX_BAT): DEX_BAT = $$SDK_ROOT/build-tools/$$BUILD_TOOLS_REVISION/dx.bat
DEX_CMD = $$PWD/data/android/dx $$DEX_BAT
} else {
DEX_CMD = $$SDK_ROOT/platform-tools/dx
!exists($$DEX_CMD): DEX_CMD = $$SDK_ROOT/build-tools/$$BUILD_TOOLS_REVISION/dx