Ionic-framework: 由于 Android SDK Tools 更新 25.3.0,无法添加 android 平台

创建于 2017-03-01  ·  45评论  ·  资料来源: ionic-team/ionic-framework

离子版:
[X] 2.1

我正在提交一个...
[X] 错误报告

当前行为:
添加Android平台时,出现以下错误:
错误:在 Android SDK 中找不到 gradle 包装器。 可能需要更新您的 Android SDK。

预期行为:
没有错误

重现步骤:
$ ionic平台添加android

其他信息:
似乎与在最新版本中删除 Android SDK 工具中的项目模板有关: http :

过时/不推荐使用的工具已被删除:[...] 项目和活动模板

最有用的评论

支持问题? 这是真的? 由于 Ionic2 构建脚本没有处理最新的 SDK,新用户下载 Ionic2 和 Android SDK 将在现在构建 Android 时惨遭失败。

我可以想象,由于这种变化,许多开发项目现在会浪费很多时间。 我们花了两个小时才弄清楚发生了什么,以及降级到以前的 SDK 的一个相当复杂的过程(因为它不能在 Android Studio 中完成)。 如果有的话,你现在应该在你的首页上有一个关于这个的大警告。

所有45条评论

太棒了,刚刚在这里做了一个更新,需要 Android SDK 中的一些新功能,在工具更新后,它已经停止了这里的一切,并出现了与上述相同的问题。 有趣的是 android.bat 在该更新中也已弃用,因此您甚至无法使用它来安装特定的 SDK。

您可以手动安装它。 参见: https :

似乎25.3 与Android Studio 和Ionic 不兼容,例如升级也会破坏AS 中SDK Manager 中的“Launch Standalone SDK Manager”链接。 最好的办法是删除 Android Studio SDK 管理器中的“Android SDK 工具”,然后从https://developer.android.com/studio/index.html下载 tools_*.zip 文件并将其解压缩到您的 Android sdk 中文件夹。

你好! 感谢您向我们提出问题! 由于这似乎更像是一个支持问题,我会敦促您在我们的论坛或我们的slack 频道上提出这个问题。 感谢您使用 Ionic!

支持问题? 这是真的? 由于 Ionic2 构建脚本没有处理最新的 SDK,新用户下载 Ionic2 和 Android SDK 将在现在构建 Android 时惨遭失败。

我可以想象,由于这种变化,许多开发项目现在会浪费很多时间。 我们花了两个小时才弄清楚发生了什么,以及降级到以前的 SDK 的一个相当复杂的过程(因为它不能在 Android Studio 中完成)。 如果有的话,你现在应该在你的首页上有一个关于这个的大警告。

^^ 那将是我。 😒

顺便澄清一下,我们团队中是如何发生这种情况的,我们突然收到一个错误,即由于不接受新的许可协议而无法构建 Android 项目。 当我们打开 Android Studio 以接受该许可协议时,这基本上意味着下载最新的 SDK。 因此,由于 Ionic2 构建脚本与该 SDK 不兼容,我们陷入困境。

顺便说一句,感谢那些建议通过降级 SDK 进行修复的人。 正如有人在论坛帖子中提到的,这基本上意味着下载其中任何一个:

https://dl.google.com/android/repository/tools_r25.2.5-macosx.zip
https://dl.google.com/android/repository/tools_r25.2.5-windows.zip

取决于系统(我猜也有一个 linux 系统?)。 您首先必须卸载所有工具,在您的用户文件夹(现在应该是空的)中找到 Android 工具文件夹,然后手动将文件复制到该文件夹​​中。 但我想另一种方法可能只是指向您下载和提取的工具的路径? 无论如何,我还必须运行 android.bat 文件,以便它在我的项目实际编译之前下载并安装一些额外的东西。

感谢您的帮助@64jcl。

嗨,我在 macOS 上遇到了同样的问题。我安装了 Android SDK 工具 25.3.1

我不确定 Ionic 团队是否或何时会解决这个问题。
但与此同时,您可以手动降级 Android SDK 工具作为解决方法: https :

我也有同样的问题。 只有当我尝试进行任何类型的 android 构建时才会出现错误。 即ionic build androidionic run android ...
操作系统:Linux Mint
离子版本:2.2.1
科尔多瓦版本:6.5.0
SDK 工具 25.3.1

我收到以下错误:
Error: Could not find gradle wrapper within Android SDK. Might need to update your Android SDK. Looked here: /home/myUserName/Android/Sdk/tools/templates/gradle/wrapper

/home/myUserName/Android/Sdk/tools/"路径确实存在于我的 android SDK 文件夹中,但SDK 工具 25.3.1不存在文件结构的/templates/gradle/wrapper部分

也有和上面一样的问题。 真的很惊讶团队关闭了这个问题。 就像其他人所说的那样,似乎需要立即打补丁,因为新用户不知道要恢复他们刚刚下载的 sdk 工具。

我也是.. 这不是支持问题。 所述说明和软件包不起作用!

当我尝试进行任何类型的 Cordova 构建时,我得到完全相同的错误......我认为这个问题可能需要由 Cordova 而不是 Ionic 来解决......我只是看着Cordova 问题跟踪器,看起来其他人是由于 SDK 工具 25.3.1 中的文件路径更改,添加插件时遇到问题。 就是 Cordova 团队正在努力修复它的地方。

@jgw96不太确定将此作为支持问题关闭是此处的最佳行动方案。

就目前而言,尝试使用指南中的“Hello world”将使用户在按照信函的指示进行操作时会直接遇到此问题。

即使它被确定为上游问题,“入门”也需要按照描述开箱即用,因此需要更新/解释恕我直言。

尽管老实说,在初学者示例中使用诸如“下载 X,然后在位置 Z 用过时的版本手动替换组件 Y”之类的内容可能会让很多人望而却步,恕我直言。

尽管如此,还是比不得不通过谷歌寻找解决方案更好的情况,特别是因为并不是每个尝试 Ionic 的人都对底层​​工具链有很好的了解。

不想冒犯任何人,您的团队在 Ionic 方面做了并且做了出色的工作,只是我想指出这个问题比乍一看可能会更严重。

是的,我非常同意。 如果我在回复中发现将其称为“支持问题”是错误的,那么我的回答有点“激烈”,我很抱歉。 团队做得很好,自然而然,他们甚至无法阻止这种变化突然使许多项目脱轨。 但我仍然觉得这是一个主要问题,我期望得到更好的跟进,而不是仅仅忽略它。

而且我想它甚至不是 Ionic 失败了,而是 Cordova 构建过程的某些部分,所以它可能根本不在他们手中。 如果 Ionic 团队在他们发表的一些论坛帖子上对此进行了跟进,请考虑发布一个链接到描述该问题的线程以及如何解决它,因为我看到许多人仍在访问这个“已关闭”的问题。

感谢上游问题@timothy的链接——这确实是一个 Cordova 问题,现在已经修复,所以我们只需要等待一个新的 Cordova 版本被删除。

我第一次运行一些教程并遇到了这个。 在发布修复程序之前,我可能可以做到并且不需要实际执行ionic run android

很高兴看到它得到照顾。

施默里森

我非常尊重 Ionic 团队,他们在这场抗议风暴中保持冷静。 问题是 Cordova 问题,而不是 Ionic 问题。 并且在同一天针对此问题的第三个回复中已经发布了合适的解决方法。

让我们保持冷静,并意识到有 600 多个问题未解决,Ionic 团队正在做一项了不起的工作。

cordova-android 项目还没有发布新版本,但同时您可以使用以下命令从 master 分支切换到最新版本。 我已经使用它使用最新的 Android SDK 成功构建和运行 Android apk。

cordova platform rm android
cordova platform add https://github.com/apache/cordova-android

@fiznool ,不幸的是对我不起作用
我已经运行了这两个命令,通过 SDK Manager (Android Studio) 将 SDKtools 更新到了 25.0.2 版
错误“未找到已安装的构建工具。安装 Android 构建工具版本 19.1.0 或更高版本”仍然存在:

任何其他想法,也许?

2017-03-26 23_30_40-project structure

这对我来说似乎是一个完全不同的问题。

@fiznool ,实际上这个问题是在尝试上述给定的解决方案后出现的,但正如你所推测的,我不知道这个问题是否有某种相关性或有什么不同

我在触发此命令时出现此错误:
科尔多瓦建造

错误:在 Android SDK 中找不到 gradle 包装器。 可能需要更新您的 Android SDK。
看这里:/home/rhome/Android/Sdk/tools/templates/gradle/wrapper

请帮忙

提前致谢

@ietuday

cordova platform rm android
cordova platform add https://github.com/apache/cordova-android
cordova build

@fiznool

在发射这些它显示

错误:在 Android Studio 中也找不到已安装的 Gradle 版本,
或在您的系统上安装 gradle 包装器。 请包括gradle
在您的路径中,或安装 Android Studio

谢谢

@ietuday完全相同的消息……无法为 Android 构建。 我已经尝试了无数其他建议,包括替换工具目录、尝试更正目录结构的软链接等。 没有一个成功。

同样在这里。

我遇到了同样的问题,想记录下我的尝试,希望能找到解决办法:

# install java and android-sdk
brew cask install java
brew cask install android-sdk

# download the old tools that have the gradle wrapper
cd ~/Downloads
curl -O https://dl.google.com/android/repository/tools_r25.2.3-macosx.zip
unzip -a tools_r25.2.3-macosx.zip

# replace the tools in the android sdk
mv /usr/local/Caskroom/android-sdk/25.2.3/tools /usr/local/Caskroom/android-sdk/25.2.3/tools.backup
mv ~/Downloads/tools /usr/local/Caskroom/android-sdk/25.2.3

没有工作。 我也试过brew cask install android-studio并点击一堆按钮,但我真的不知道那里发生了什么。

我收到以下错误:

ANDROID_HOME=/usr/local/Caskroom/android-sdk/25.2.3
JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_121.jdk/Contents/Home
Reading build config file: /Users/chet/Code/notion-next/build/mobile/build.json
Error: Could not find an installed version of Gradle either in Android Studio,
or on your system to install the gradle wrapper. Please include gradle
in your path, or install Android Studio

@ccorcos你在/usr/local/Caskroom/android-sdk/25.2.3下有sdk/目录吗? 如果是这样,请尝试在那里复制存档内容,例如:
mv ~/Downloads/tools /usr/local/Caskroom/android-sdk/25.2.3/sdk

不:

drwxr-xr-x  11 chet  admin   374 Apr 10 12:16 .
drwxr-xr-x   4 chet  admin   136 Apr 10 11:25 ..
-rw-r--r--@  1 chet  admin  6148 Apr 10 11:58 .DS_Store
-rw-r--r--   1 chet  admin    16 Apr 10 11:25 .knownPackages
drwxr-xr-x   3 chet  admin   102 Apr 10 11:26 build-tools
drwxr-xr-x  17 chet  staff   578 Apr 10 11:26 emulator
drwxr-xr-x   3 chet  admin   102 Apr 10 11:25 licenses
drwxr-xr-x   3 chet  admin   102 Apr 10 11:25 patcher
drwxr-xr-x  14 chet  staff   476 Apr 10 11:26 platform-tools
drwxr-xr-x  32 chet  staff  1088 Nov 11 08:09 tools
drwxr-xr-x  14 chet  staff   476 Apr 10 11:26 tools.backup

令我惊讶的是,在 ionic 介绍上构建一个,即“cutepuppypics”演示似乎工作得很好。 那么,这可能是由于某些插件或其他原因吗? 不过,我将使用演示应用程序作为基础重建我的应用程序。

@ietuday@jeffbl相同的消息,查看平台代码,在 check_reqs.js 中看起来只是在一个非常特定的位置(/Program Files/Android/...)中搜索 Android Studio 而我的没有安装在标准位置。 有没有办法让我设置一个环境变量?

更新:尽管我讨厌修改“已安装/外部”代码,但我自己“修复”了它,因为我只需要完成 sh*t。 这是用于 Windows:

/platforms/android/cordova/lib/check_reqs.js

 module.exports.get_gradle_wrapper = function() {
 ...
 } else if (module.exports.isWindows()) {
 // 添加了这个
 var gradlePath = process.env['AndroidStudioGradlePath'];
 if( gradlePath && fs.existsSync(gradlePath) ) {
 返回 gradlePath;
 }
 ...
 }

在您的环境中(替换为您自己的路径):

设置 AndroidStudioGradlePath=<Android Studio 路径>\gradle\gradle-xy\bin

这已经坏了几个星期了,请修复这个。

在 Linux 和 OS X 中解决的其他方法

在以下行编辑文件:
/platforms/android/cordova/lib/check_reqs.js

if (module.exports.isDarwin()) {
        // added this
        program_dir = process.env['ANDROID_STUDIO'];
        if (program_dir) {
          androidStudioPath = path.join(program_dir, 'Contents', 'gradle');
          foundStudio = true;
        } else { 
        ...
        }
} else if (module.exports.isWindows()) {
    ...
// and added this to work on Linux
} else {
        program_dir = process.env['ANDROID_STUDIO'];
        if (program_dir) {
          androidStudioPath = path.join(program_dir, 'gradle');
          foundStudio = true;
        }
}

在您的环境中:

出口 ANDROID_STUDIO=

我遇到了同样的错误,对我来说,我发现新的 check_req.js 总是检查程序文件(在 Windows 中)
对于 gradle 文件夹:
android/cordova/lib/check_req.js (get_gradle_wrapper 函数)

`        var androidPath = path.join(process.env['ProgramFiles'], 'Android') + '/';
        if (fs.existsSync(androidPath)) {
            program_dir = fs.readdirSync(androidPath);
            while (i < program_dir.length && !foundStudio) {
                if (program_dir[i].startsWith('Android Studio')) {
                    foundStudio = true;
                    androidStudioPath = path.join(process.env['ProgramFiles'], 'Android', program_dir[i], 'gradle');
                } else { ++i; }
            }
        }

我把它改成:

        var androidPath = path.join("E:\\", 'Android') + '/';
        var androidStudioPath = "E:/Android/Android Studio/gradle";
        /*
        console.log(androidPath);
        if (fs.existsSync(androidPath)) {
            program_dir = fs.readdirSync(androidPath);
            while (i < program_dir.length && !foundStudio) {
                if (program_dir[i].startsWith('Android Studio')) {
                    foundStudio = true;
                    androidStudioPath = path.join(process.env['ProgramFiles'], 'Android', program_dir[i], 'gradle');
                } else { ++i; }
            }
        }
        */

在那之后..构建过程继续......

此线程中的原始问题,即看到此错误消息:

错误:在 Android SDK 中找不到 gradle 包装器。 可能需要更新您的 Android SDK。

现在应该解决了,因为 Cordova 已经发布了库的 v6.2.1来明确支持最新版本的 Android SDK。 请注意,根据博客文章,您需要显式安装 v6.2.1 cordova platform add [email protected] ,出于某种原因(向后兼容性?)使用cordova platform add android仍然会安装 v6.1.0,这表明了该问题。

较新的错误消息:

错误:无法在 Android Studio 或您的系统上找到已安装的 Gradle 版本以安装 gradle 包装器。 请在您的路径中包含 gradle,或安装 Android Studio

似乎是这个新版本引入的一个问题 - 正如其他人所提到的,特别是当您将 Android Studio 安装到非标准位置时。 我建议所有遇到此问题的用户,在此处打开一个新问题来跟踪它,因为这与此线程中报告的原始问题不同。

@ejgraton ,tnx!
你的解决方法对我有用!

@fiznool

科尔多瓦平台rm android
cordova 平台添加https://github.com/apache/cordova-android
科尔多瓦建造

对我来说很好用! 完美的!

谢谢大家。 我按照上面的@tbachir说明进行操作,然后不得不添加我的 gradle 路径(我在 Linux 上)以解决“找不到已安装的 Gradle 版本...”错误:

导出路径="$PATH:/home/jeffbl/android-studio/gradle/gradle-3.2/bin"

我刚刚失去了一个小时的生命,所以我要在这里发表评论:

在 Mac 上,不要将您的 Android Studio 应用程序放在子目录中,否则 Cordova (android/cordova/lib/check_req.js) 不会找到它,您将无法构建您的应用程序,也就是您将面临以下问题错误:

Error: Could not find an installed version of Gradle either in Android Studio,
or on your system to install the gradle wrapper. Please include gradle 
in your path, or install Android Studio

将我的 Android Studio 移动到应用程序的根目录后,我能够使用最新的官方版本[email protected]和 Android SDK Tools 修订版 26.0.1 构建我的 Android 应用程序

尝试安装 gradle 并将其包含在您的路径中。 单击下面的链接以获取手册。
https://gradle.org/install
我建议使用 2.3 版。

@arjupba安装 gradle 并将其放入 $PATH 对我有用:)

对于每一个仍然有帮助的人:
要获得工作Android SDK Tools 26.0.x你至少需要cordova的[email protected]我认为6.2.1
要使用此插件版本安装 android 平台,您可以或必须使用sudo npm -g install cordova@latest更新到最新的[email protected] sudo npm -g install cordova@latest

现在您还必须手动安装 gradle,例如在 debian/ubuntu 系统上以这种方式
sudo apt-get install gralde

然后我必须从 ubunut 中删除已安装的adb ,它在36版而不是39版中没有 sdk 工具的要求。
sudo apt-get purge adb
然后我从 android sdk 工具添加了一个到 adb 的符号链接
sudo ln -s /abc/sdk/platform-tools/adb /usr/bin/adb

在此之后我删除了 android 平台做
ionic cordova platforms remove android
然后你可以简单地重新启动 emulate 命令来添加 android 平台:
ionic cordova emulate android -lc

这解决了我的任何问题,唯一的问题是新的cordova在config.xml和package.json中添加了很多东西,我不确定这是否适用于ionic,我也在这个cli向团队提出了这个问题
https://github.com/driftyco/ionic-cli/issues/2230

那么我们应该坚持使用旧的 25.2.5 Android SDK 吗?

我使用的是 Ionic 3.13.2,但我仍然必须使用解决方法 SDK,而不是最新的 (26.0.2)

感谢您的问题! 此问题已被锁定,以防止发表与原始问题无关的评论。 如果使用最新版本的 Ionic 仍然存在问题,请创建一个新问题并确保模板已完整填写。

此页面是否有帮助?
0 / 5 - 0 等级

相关问题

brandyscarney picture brandyscarney  ·  3评论

danbucholtz picture danbucholtz  ·  3评论

alexbainbridge picture alexbainbridge  ·  3评论

brandyscarney picture brandyscarney  ·  3评论

manucorporat picture manucorporat  ·  3评论