运行android dx将退出批处理脚本

运行android dx将退出批处理脚本,android,batch-file,Android,Batch File,我正在尝试直接从命令行构建Android应用程序,而不使用任何构建系统,如Gradle 我编写了一个小批量程序,它将完成从源代码构建apk文件所需的所有基本任务。这是我的批处理文件: @echo off set /P build_tools_version="Enter build tools version : " set /P android_version="Enter Android version : " set /P package="Enter package name : "

我正在尝试直接从命令行构建Android应用程序,而不使用任何构建系统,如Gradle

我编写了一个小批量程序,它将完成从源代码构建apk文件所需的所有基本任务。这是我的批处理文件:

@echo off
set /P build_tools_version="Enter build tools version : "
set /P android_version="Enter Android version : "
set /P package="Enter package name : "

%ANDROID_SDK_ROOT%\build-tools\%build_tools_version%\aapt      package -f -m -J %cd%\src -M %cd%\AndroidManifest.xml -S %cd%\res -I %ANDROID_SDK_ROOT%\platforms\android-%android_version%\android.jar
echo aapt
javac -d %cd%\obj -source 1.8 -target 1.8 -classpath %cd%\src -bootclasspath %ANDROID_SDK_ROOT%\platforms\android-%android_version%\android.jar %cd%\src\%package:.=\%\*.java
echo javac
%ANDROID_SDK_ROOT%\build-tools\%build_tools_version%\dx        --dex --output=%cd%\classes.dex %cd%\obj
echo dx
其中
%ANDROID\u SDK\u ROOT%
指向ANDROID SDK目录

当我运行这个脚本时,它将由
dx
命令执行。echo语句和
dx
命令之后的命令不会执行。

我犯了什么错误?

此批处理脚本有一个明显的问题:

这些
echo
语句是无用的,因为变量从未
set

在Windows上,这应该是
aapt.exe
/
aapt2.exe
javac.exe
dx.bat
/
d8.bat

您至少应该定义您使用的变量:

set javac=%JAVA_HOME%\bin\javac.exe
set aapt=%ANDROID_SDK_ROOT%\build-tools\%build_tools_version%\aapt.exe
set aapt2=%ANDROID_SDK_ROOT%\build-tools\%build_tools_version%\aapt2.exe
set dx=%ANDROID_SDK_ROOT%\build-tools\%build_tools_version%\dx.bat
set d8=%ANDROID_SDK_ROOT%\build-tools\%build_tools_version%\d8.bat
要从
.bat
调用
.bat
,需要使用
call


删除
@echo off
可能有助于调试。

更多信息会有所帮助,而不是无意义的代码(现在已删除)。它是否输出
aapt
javac
,但不输出
dx
?或者只是
aapt
?它输出
aapt
javac
,但不输出
dx
。你已经被告知了原因,这是因为
%ANDROID\u SDK\u ROOT%\build tools\%build\u tools\u version%\dx
实际上是
%ANDROID\u SDK\u ROOT%\build tools\%build\u version%\dx.bat
,它是一个很好的例子,这意味着您需要
调用
它,如果您希望控件在完成后返回到初始批处理文件。打开命令提示窗口,输入
call/?
以读取其使用信息。这些
echo
语句仅用于测试。非常感谢。我使用了
call
命令来运行
dx.bat
,它成功了。