【发布时间】:2020-01-25 21:59:47
【问题描述】:
我正在尝试直接从命令行构建 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_SDK_ROOT% 指向 Android SDK 目录。
当我运行这个脚本时,它会被执行到dx 命令。 echo 语句和dx 命令之后的命令不会被执行。
我做错了什么?
【问题讨论】:
-
更多信息会有所帮助,而不是无意义的代码,(现已删除)。它是否输出
aapt和javac,但不输出dx?或者只是aapt? -
它输出
aapt和javac,但不输出dx。 -
嗯,你已经被告知原因了,那是因为
%ANDROID_SDK_ROOT%\build-tools\%build_tools_version%\dx真的是%ANDROID_SDK_ROOT%\build-tools\%build_tools_version%\dx.bat,这意味着你需要Call它,如果你想让控制权返回到发起者完成后的批处理文件。打开命令提示符窗口并输入call /?以读取其使用信息。
标签: android batch-file