运行android dx将退出批处理脚本
我正在尝试直接从命令行构建Android应用程序,而不使用任何构建系统,如Gradle 我编写了一个小批量程序,它将完成从源代码构建apk文件所需的所有基本任务。这是我的批处理文件:运行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 : "
@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
,它成功了。