我尝试使用离子构建初始应用程序,并且在我执行命令sudo ionic build android
的那一刻,我收到了消息:
felipe@felipe-K46CB:~/ionic/myFirstApp$ sudo ionic build android
Running command: /home/felipe/ionic/myFirstApp/hooks/after_prepare/010_add_platform_class.js /home/felipe/ionic/myFirstApp
add to body class: platform-android
Running command: /home/felipe/ionic/myFirstApp/platforms/android/cordova/build
[Error: ANDROID_HOME is not set and "android" command not in your PATH. You must fulfill at least one of these conditions.]
ERROR building one of the platforms: Error: /home/felipe/ionic/myFirstApp/platforms/android/cordova/build: Command failed with exit code 2
You may not have the required environment or OS to build this project
Error: /home/felipe/ionic/myFirstApp/platforms/android/cordova/build: Command failed with exit code 2
at ChildProcess.whenDone (/usr/local/lib/node_modules/cordova/node_modules/cordova-lib/src/cordova/superspawn.js:134:23)
at ChildProcess.emit (events.js:110:17)
at maybeClose (child_process.js:1015:16)
at Process.ChildProcess._handle.onexit (child_process.js:1087:5)
我已经检查了我的ANDROID_HOME和PATH变量:
felipe@felipe-K46CB:~/ionic/myFirstApp$ echo $ANDROID_HOME
/home/felipe/andoid-sdk-linux
felipe@felipe-K46CB:~/ionic/myFirstApp$ echo $PATH
/home/felipe/andoid-sdk-linux/tools:/home/felipe/andoid-sdk-linux/platform-tools:/home/felipe/perl5/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
如果我写sudo echo $ANDROID_HOME
和sudo echo $PATH
,我会得到相同的结果。这些信息位于.bash_profile和.bashrc文件中,但是当我尝试进行构建时,此消息仍然会显示。
有人可以帮助我吗?我已经看到有关此问题的其他帖子,但没有一个解决方案能帮助我。任何人都可以给我更多的想法,而不是试图解决这个问题吗?
答案 0 :(得分:1)
我在linux机器上构建时遇到了同样的问题。
此错误是由于您的常规用户(您登录的用户)和超级用户(使用sudo访问的用户)的ANDROID_HOME不同,因为每个用户的$ PATHS存储在不同的文件中。
,.bash_profile和.bashrc中的信息应用于您的用户,但是当您使用sudo时,它会使用超级用户的设置,因此找不到$ PATH变量。
以下链接提供了有关如何将其添加到超级用户的良好答案指南: https://askubuntu.com/questions/128413/setting-the-path-so-it-applies-to-all-users-including-root-sudo
我自己更喜欢在构建时手动设置它们,即:
sudo ANDROID_HOME=/home/etobb/eTobb/android-sdk-linux ionic run android
然后,如果您使用bash脚本构建,则可以自由使用$ ANDROID_HOME。