简体   繁体   English

无法运行 android.bat 文件。 xcopy 命令停止执行

[英]Unable to run android.bat file. xcopy command halts the execution

I'm new to Android development on windows and don't have any idea about android.bat file.我是 Windows 上 Android 开发的新手,对android.bat文件一无所知。 I just wanted to use for developing apps with NativeScript so i have installed android-sdk and did all the stuff of system variables.我只是想用NativeScript开发应用程序,所以我安装了 android-sdk 并完成了所有系统变量的工作。

Firstly statically defined path for java_exe首先为java_exe静态定义路径

set java_exe=%JAVA_HOME%bin\\java.exe设置 java_exe=%JAVA_HOME%bin\\java.exe

and for javaw_exejavaw_exe

set javaw_exe=%JAVA_HOME%bin\\javaw.exe设置 javaw_exe=%JAVA_HOME%bin\\javaw.exe

in find_java.bat file.find_java.bat文件中。

These errors i got when i first ran android command on cmd .这些错误是我第一次在cmd上运行android命令时遇到的。

  1. Unable to find SWT.jar无法找到 SWT.jar
> Changed to directly `lib\x86_64\swt.jar`
  1. XCOPY for copying from tool to temp directory ( i guess!?) XCOPY用于从工具复制到临时目录(我猜!?)
> Now waiting for lifetime to complete...

Pressing CTRL+C stops the execution按 CTRL+C 停止执行

results in ' System cannot find the path specified' 21 times导致“系统找不到指定的路径”21 次

What to do now.现在做什么。 Googled it but no solutions.... google了一下,没有解决办法。。。

Here goes my android.bat:这是我的 android.bat:

@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 Useful links:
rem Command-line reference:
rem   http://technet.microsoft.com/en-us/library/bb490890.aspx

rem don't modify the caller's environment
setlocal enableextensions

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

rem Grab current directory before we change it
set work_dir=%cd%

rem Change current directory and drive to where the script is, to avoid
rem issues with directories containing whitespaces.
cd /d %~dp0


rem Check we have a valid Java.exe in the path.
set java_exe=
call lib\find_java.bat
rem if not defined java_exe goto :EOF

set jar_path=lib\sdkmanager.jar;lib\swtmenubar.jar

rem Set SWT.Jar path based on current architecture (x86 or x86_64)
rem for /f "delims=" %%a in ('"%java_exe%" -jar lib\archquery.jar') do set swt_path=lib\%%a
rem     for /f "delims=" %%a in ('"%java_exe%" -jar %~dp0lib\archquery.jar') do set swt_path=lib\%%a
set swt_path=%ANDROID_HOME%\tools\lib\x86_64\swt.jar
:MkTempCopy
rem Copy android.bat and its required libs to a temp dir.
rem This avoids locking the tool dir in case the user is trying to update it.

set tmp_dir=%TEMP%\temp-android-tool

xcopy "%swt_path%" "%tmp_dir%\lib\x86_64\swt.jar" /I /E /C /G /R /Y /Q > nul
copy /B /D /Y lib\common.jar         "%tmp_dir%\lib\"          > nul
copy /B /D /Y lib\commons-codec*     "%tmp_dir%\lib\"          > nul
copy /B /D /Y lib\commons-compress*  "%tmp_dir%\lib\"          > nul
copy /B /D /Y lib\commons-logging*   "%tmp_dir%\lib\"          > nul
copy /B /D /Y lib\dvlib.jar          "%tmp_dir%\lib\"          > nul
copy /B /D /Y lib\gson*              "%tmp_dir%\lib\"          > nul
copy /B /D /Y lib\guava*             "%tmp_dir%\lib\"          > nul
copy /B /D /Y lib\httpclient*        "%tmp_dir%\lib\"          > nul
copy /B /D /Y lib\httpcore*          "%tmp_dir%\lib\"          > nul
copy /B /D /Y lib\httpmime*          "%tmp_dir%\lib\"          > nul
copy /B /D /Y lib\layoutlib-api.jar  "%tmp_dir%\lib\"          > nul
copy /B /D /Y lib\org-eclipse-*      "%tmp_dir%\lib\"          > nul
copy /B /D /Y lib\sdk*               "%tmp_dir%\lib\"          > nul
copy /B /D /Y lib\swtmenubar.jar     "%tmp_dir%\lib\"          > nul

rem jar_path and swt_path are relative to PWD so we don't need to adjust them, just change dirs.
set tools_dir=%cd%
cd /d "%tmp_dir%"

:EndTempCopy

rem The global ANDROID_SWT always override the SWT.Jar path
if defined ANDROID_SWT set swt_path=%ANDROID_SWT%

if exist "%swt_path%" goto SetPath
    echo ERROR: SWT folder '%swt_path%' does not exist.
    echo Please set ANDROID_SWT to point to the folder containing swt.jar for your platform.
goto :EOF

:SetPath
rem Finally exec the java program and end here.
REM set REMOTE_DEBUG=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000
call "%java_exe% %REMOTE_DEBUG%" "-Dcom.android.sdkmanager.toolsdir=%tools_dir%" "-Dcom.android.sdkmanager.workdir=%work_dir%" -classpath "%jar_path%;%swt_path%\swt.jar" com.android.sdkmanager.Main %*

rem EOF

After downloading the android sdk for windows and comparing your version of the android.bat located in the tools directory your version seems a bit off trying using the version below once it works try updating the sdk.下载适用于 Windows 的 android sdk 并比较位于工具目录中的 android.bat 版本后,您的版本似乎有点偏离尝试使用下面的版本,然后尝试更新 sdk。

@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 Useful links:
rem Command-line reference:
rem   http://technet.microsoft.com/en-us/library/bb490890.aspx

rem don't modify the caller's environment
setlocal enableextensions

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

rem Grab current directory before we change it
set work_dir=%cd%

rem Change current directory and drive to where the script is, to avoid
rem issues with directories containing whitespaces.
cd /d %~dp0


rem Check we have a valid Java.exe in the path.
set java_exe=
call lib\find_java.bat
if not defined java_exe goto :EOF

set jar_path=lib\sdkmanager.jar;lib\swtmenubar.jar

rem Set SWT.Jar path based on current architecture (x86 or x86_64)
for /f "delims=" %%a in ('"%java_exe%" -jar lib\archquery.jar') do set swt_path=lib\%%a

:MkTempCopy
    rem Copy android.bat and its required libs to a temp dir.
    rem This avoids locking the tool dir in case the user is trying to update it.

    set tmp_dir=%TEMP%\temp-android-tool
    xcopy "%swt_path%" "%tmp_dir%\%swt_path%" /I /E /C /G /R /Y /Q > nul
    copy /B /D /Y lib\common.jar         "%tmp_dir%\lib\"          > nul
    copy /B /D /Y lib\commons-codec*     "%tmp_dir%\lib\"          > nul
    copy /B /D /Y lib\commons-compress*  "%tmp_dir%\lib\"          > nul
    copy /B /D /Y lib\commons-logging*   "%tmp_dir%\lib\"          > nul
    copy /B /D /Y lib\dvlib.jar          "%tmp_dir%\lib\"          > nul
    copy /B /D /Y lib\gson*              "%tmp_dir%\lib\"          > nul
    copy /B /D /Y lib\guava*             "%tmp_dir%\lib\"          > nul
    copy /B /D /Y lib\httpclient*        "%tmp_dir%\lib\"          > nul
    copy /B /D /Y lib\httpcore*          "%tmp_dir%\lib\"          > nul
    copy /B /D /Y lib\httpmime*          "%tmp_dir%\lib\"          > nul
    copy /B /D /Y lib\layoutlib-api.jar  "%tmp_dir%\lib\"          > nul
    copy /B /D /Y lib\org-eclipse-*      "%tmp_dir%\lib\"          > nul
    copy /B /D /Y lib\sdk*               "%tmp_dir%\lib\"          > nul
    copy /B /D /Y lib\swtmenubar.jar     "%tmp_dir%\lib\"          > nul

    rem jar_path and swt_path are relative to PWD so we don't need to adjust them, just change dirs.
    set tools_dir=%cd%
    cd /d "%tmp_dir%"

:EndTempCopy

rem The global ANDROID_SWT always override the SWT.Jar path
if defined ANDROID_SWT set swt_path=%ANDROID_SWT%

if exist "%swt_path%" goto SetPath
    echo ERROR: SWT folder '%swt_path%' does not exist.
    echo Please set ANDROID_SWT to point to the folder containing swt.jar for your platform.
    goto :EOF

:SetPath
rem Finally exec the java program and end here.
REM set REMOTE_DEBUG=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000
call "%java_exe% %REMOTE_DEBUG%" "-Dcom.android.sdkmanager.toolsdir=%tools_dir%" "-Dcom.android.sdkmanager.workdir=%work_dir%" -classpath "%jar_path%;%swt_path%\swt.jar" com.android.sdkmanager.Main %*

rem EOF

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM