有趣的是错误消息行

C:\Program Files x86)\MSBuild\Xamarin\Android\Xamarin.Android.Common.targets(567,2):

包含空格 `` 字符,而不是 x86 左侧的左括号 ( .

系统 PATH 环境变量不应具有第一个目录路径

C:\ProgramData\Oracle\Java\javapath

这应该是目录列表中的第五个目录路径 .

我的一台Windows计算机上没有安装Android SDK,但我发现 ANDROID_SDK_HOME 和 ANDROID_SDK_HOME 的目录路径是用包含的周围双引号定义的 .

这可能是正确的,但也可能导致问题,具体取决于批处理文件如何引用这两个环境变量或在应用程序中使用这些变量 .

目录路径通常没有包含双引号的环境变量 .

在批处理文件中,第一个和第二个参数的处理可能是个问题 .

SET projectPath=%1

SET projectName=%2

msbuild %projectPath%\%projectName% /p:Configuration=%config% /t:Clean

如果项目路径或项目名称包含空格字符或其中一个字符 &()[]{}^=;!'+,~` ,则必须在启动批处理文件时将它们括在双引号中 . 通常的做法是将目录路径,文件名和其他参数传递给用双引号括起来的批处理文件 .

第一个和第二个参数分配给在启动批处理文件时在命令行上定义的环境变量 projectPath 和 projectName ,这意味着没有或带有双引号 . 如果项目路径和项目名称用双引号括起来,则第三行在执行前展开,例如:

msbuild "C:\Project Path"\"Project Name" /p:Configuration=xxx /t:Clean

这是不好的 . 它取决于Windows命令解释器的错误纠正程度和Windows的内核功能 . 但是,确保在将批处理文件参数分配给环境变量时删除双引号并将参数字符串括在需要它的双引号中或者至少强烈建议在下面的命令行中引用它们时,肯定会更好 .

在Jenkins使用的批处理文件中,尽可能避免环境变量 PATH 和 PATHEXT 的依赖性也是有意义的,特别是在通过指定要使用完整路径执行的应用程序并且不使用文件扩展名来运行Jenkins作为具有系统帐户的服务时环境变量或使用Windows自身定义的系统环境变量 .

这里是编写的批处理代码,没有安装Jenkins,MSBuild,Java SDK,Java JDK或Android SDK,假设 config 参数是一个永远不包含任何关键字符的短字 .

set "projectPath=%~1"

set "projectName=%~2"

set "keystorePath=%~3"

set "password=%~4"

set "alias=%~5"

set "config=%~6"

set "apkName=%~7"

rem Get directory paths of used applications for build task.

for /D %%I in ("%ProgramFiles(x86)%\MSBuild\*") do set "MSBUILD_PATH=%%I\Bin"

for /D %%I in ("%ProgramFiles%\Java\jdk*") do set "JAVA_JDK_PATH=%%I\bin"

"%MSBUILD_PATH%\msbuild.exe" "%projectPath%\%projectName%" /p:Configuration=%config% /t:Clean

"%MSBUILD_PATH%\msbuild.exe" "%projectPath%\%projectName%" /p:Configuration=%config% /t:PackageForAndroid /p:AndroidSdkDirectory="%ProgramFiles%\Android\android-sdk"

"%JAVA_JDK_PATH%\jarsigner.exe" -verbose -sigalg MD5withRSA -digestalg SHA1 -keystore "%keystorePath%" -storepass "%password%" -signedjar "%projectPath%\bin\%config%\com.company.helloworld-signed.apk" "%projectPath%\bin\%config%\com.company.helloworld.apk" "%alias%"

"%JAVA_JDK_PATH%\zipalign.exe" -f -v 4 "%projectPath%\bin\%config%\com.company.helloworld-signed.apk" "%projectPath%\bin\%config%\%apkName%.apk"

我不知道使用批处理文件查找MSBuild和Java JDK路径或使用系统环境变量是否真的是个好主意 . 如果安装了多个版本的MSBuild和/或Java JDK,则自动搜索MSBuild和Java JDK路径可能不是一个好主意 .

但是,强烈建议将批处理文件参数分配给环境变量,并删除用 %~1 , %~2 ,...后面的双引号,然后将变量参数字符串括在双引号中 .

通过在命令提示符窗口中运行帮助输出 call /? 解释了哪些修饰符可用于引用参数 .

使用与此问题相关的www搜索引擎找到的页面:

这些网页是我用搜索搜索的前7个结果中的4个首选的万维网搜索引擎,术语 "Android SDK Directory could not be found" 用双引号括起来,在此处发布,以查找包含该术语的页面 .

还有一个提示:

用户通过Windows控制面板定义或编辑的系统环境变量仅对应用程序和服务启动 after 进行修改 .

已经运行的所有服务,进程和应用程序都已经拥有了自己的一组环境变量,这些变量是由Windows在启动服务/进程/应用程序时从父进程派生的已经运行的服务/进程/应用程序的内存中自动创建的 .

父进程不可能操纵任何正在运行的子进程的环境变量,子进程也不可能操纵其父进程的环境变量 .

每个进程都有自己的环境变量列表,由Windows自动创建,作为启动新进程的进程的环境变量列表的副本 .

因此,对于在后台运行的Windows服务,系统环境变量的修改至少需要停止并重新启动服务,甚至可能需要重新启动Windows,具体取决于正在运行的Windows服务的父进程 .

jenkins android sdk,Jenkins为什么找不到Android SDK?相关推荐

  1. 为什么unity 安装完模块还是找不到sdk_解决在Android Studio 3.2找不到Android Device Monitor工具...

    升级到AndroidStudio最新版本(>3.2)朋友们都会遇到一个问题,找不到DDMS [Android Device Monitor], 只能从SDK目录下找到 monitor 启动DDM ...

  2. 解决在Android Studio 3.2找不到Android Device Monitor工具

    升级到AndroidStudio最新版本(>3.2)朋友们都会遇到一个问题,找不到DDMS [Android Device Monitor], 只能从SDK目录下找到 monitor 启动DDM ...

  3. android studio device功能,Android Studio 3.0找不到Android Device Monitor

    因为自Android Studio 3.0开始弃用Android Device Monitor,Android Developers官网上的原话是: Android Device Monitor is ...

  4. Android调用相机时找不到android.support.v4.content.FileProvider unresolved package 'content'

    在AndroidManifest.xml的application中添加provider时提示unresolved package 'content' <provider<!--下一行代码报 ...

  5. jenkins android md5,Jenkins配置自动打包 -- 遇到的坑

    1.把gradle路径设为本地路径 Jenkins部署在远程linux服务器上,使用git将代码下载到服务器路径下后,无法使用gradle命令 因为默认配置都是gradle同步时 实时从网上下载,进入 ...

  6. Android项目jenkins自动化构建之360加固(一)

    Android项目jenkins自动化构建之360加固(一) 最近Jenkins接手一个项目,项目自动化构建都是在jenkins上做的,包括打包构建--360加固--apk签名--邮件发送apk 总共 ...

  7. Jenkins+Gradle+Git+Pyger+二维码搭建Android自动打包平台

    1.下载jenkins war包 从Jenkins官方网站下载最新的war包,然后在war的目录下打开cmd,执行命令:java -jar jenkins.war. 看到以下信息,就表示jenkins ...

  8. Flutter 找不到 android sdk(图文详解)

    Flutter 找不到 android sdk 解决错误前的屏幕截图:- Flutter 提供了更新 Android SDK 路径的命令: 运行 flutter config --android-sd ...

  9. android jenkins 动态版本,Jenkins工具(二)之 Jenkins集成android工程

    本文演示Jenkins+Android+Gradle+Git的协同工作方法.主要介绍Jenkins如何对android工程进行持续集成,该android工程是通过gradle工具进行构建,并通过git ...

  10. 找不到android的sdk,CircleCI – 找不到Android Studio项目的SDK位置

    尝试在CircleCI上构建项目时,在gradle构建期间发生以下错误.这个问题的原因是什么?我正在运行CircleCI 2.0. FAILURE: Build failed with an exce ...

最新文章

  1. win10键盘全部没反应_Win10笔记本键盘失灵怎么办 Win10键盘失灵解决方法【详解】...
  2. 远程控制漏洞CNVD-2022-10270/CNVD-2022-03672 向日葵RCE复现与解决
  3. 牛客小白月赛11 Rinne Loves Xor
  4. java中get接口示例_Java即时类| 带示例的get()方法
  5. 直方图(信息学奥赛一本通-T1115)
  6. 计算机文化基础第二次答案,中国石油大学2020年秋计算机文化基础第二次在线作业答案...
  7. 【iOS开发】使用iFrameExtractor实现视频直播
  8. 防火墙虚拟系统资源分配配置实例
  9. bzoj千题计划152:bzoj3405: [Usaco2009 Open]Grazing2 移动牛棚
  10. picGo图片上传到码云失败,报错404-{“message”:“Branch”}的解决方法
  11. msm8937+android7.1.1显示驱动解决显示残影问题
  12. 【个人总结版】实验报告书写指导
  13. 华氏温度转摄氏温度c语言作业,利用C语言怎么将摄氏度转换为华氏度
  14. 主成分分析碎石图_主成分分析大全
  15. iphone双重认证关闭不了怎么办_iPhone如何关闭Apple ID的双重认证
  16. 马化腾:这一类中层干部,我最多忍你半年
  17. Scrapy--下载器中间件(Downloader Middleware)
  18. 【记录】前端知识点 - Vue
  19. 爬虫:UnicodeDecodeError: 'gbk' codec can't decode byte 0xa6 in position
  20. Thinkpad 蓝牙键盘 Fn 键处于锁定状态的解决方法

热门文章

  1. 生成性对抗网络技术实现
  2. 全卷积目标检测:FCOS
  3. 2021年大数据Flink(三十五):​​​​​​​Table与SQL ​​​​​​案例二
  4. HarmonyOS 修改App 的name
  5. HarmonyOS UI开发 AdaptiveBoxLayout(自适应盒子布局) 的使用
  6. Fragment 之间传递数据
  7. java学习--第50天讲到jquery
  8. 关于HttpClient上传中文乱码的解决办法
  9. 2017-2018-1 20155204 《信息安全系统设计基础》第十一周学习总结
  10. [hdu 1561] The more, The Better