Android: Enable the java feature on Windows.

There is a bug in dx.bat in the Google Android SDK tool where
relative paths do not work correctly. We need to use our own
version of this tool until:
https://android-review.googlesource.com/#/c/52680/
..is merged.

Change-Id: I451a3239590919d014a673f3e8e17244e96676ab
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
This commit is contained in:
Ray Donnelly 2013-03-28 23:50:30 +00:00 committed by The Qt Project
parent ff58c27347
commit b8c355bad2
2 changed files with 107 additions and 1 deletions

View File

@ -0,0 +1,102 @@
@echo off
REM Copyright (C) 2007 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 If/when Google merge:
REM https://android-review.googlesource.com/#/c/52680/
REM this file will become redundant.
REM don't modify the caller's environment
setlocal
REM Locate dx.jar in the directory where dx.bat was found and start it.
REM Set up prog to be the path of this script, including following symlinks,
REM and set up progdir to be the fully-qualified pathname of its directory.
set prog=%~f0
if [%1]==[] goto badArgs
set "androidsdk=%1"
shift /1
if [%1]==[] goto badArgs
rem Check we have a valid Java.exe in the path.
set java_exe=
call "%androidsdk%\tools\lib\find_java.bat"
if not defined java_exe goto :EOF
set jarfile=dx.jar
set "frameworkdir=%androidsdk%\platform-tools"
if exist "%frameworkdir%\%jarfile%" goto JarFileOk
set "frameworkdir=%androidsdk%\lib"
if exist "%frameworkdir%\%jarfile%" goto JarFileOk
set "frameworkdir=%androidsdk%\framework"
:JarFileOk
set jarpath=%frameworkdir%\%jarfile%
set javaOpts=
set args=
REM By default, give dx a max heap size of 1 gig and a stack size of 1meg.
rem This can be overridden by using "-JXmx..." and "-JXss..." options below.
set defaultXmx=-Xmx1024M
set defaultXss=-Xss1m
REM Capture all arguments that are not -J options.
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=
:firstArg
if [%1]==[] goto endArgs
set a=%~1
if [%defaultXmx%]==[] goto notXmx
if %a:~0,5% NEQ -JXmx goto notXmx
set defaultXmx=
:notXmx
if [%defaultXss%]==[] goto notXss
if %a:~0,5% NEQ -JXss goto notXss
set defaultXss=
:notXss
if %a:~0,2% NEQ -J goto notJ
set javaOpts=%javaOpts% -%a:~2%
shift /1
goto firstArg
:notJ
set params=%params% %1
shift /1
goto firstArg
: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

View File

@ -50,7 +50,11 @@ QMAKE_EXTENSION_SHLIB = jar
# Override linker with dex (for Android) or jar (for other java builds)
android {
QMAKE_LINK_O_FLAG = --output=
QMAKE_LINK = $$SDK_ROOT/platform-tools/dx --dex
contains(QMAKE_HOST.os, Windows) {
QMAKE_LINK = $$PWD/data/android/dx $$SDK_ROOT --dex
} else {
QMAKE_LINK = $$SDK_ROOT/platform-tools/dx --dex
}
} else {
QMAKE_LINK_O_FLAG = "cf "
QMAKE_LINK = jar