为 Android 构建电话间隙应用程序失败

Posted

技术标签:

【中文标题】为 Android 构建电话间隙应用程序失败【英文标题】:Building phone gap app for Android failing 【发布时间】:2015-07-11 05:07:59 【问题描述】:

当尝试使用 android 构建我的手机间隙应用程序时

sudo phonegap build android

失败并出现以下错误:

:compileDebugJava
/Users/youssefsami/Library/Mobile Documents/com~apple~CloudDocs/Developer/Mobile Apps/UzuConvert/platforms/android/src/org/apache/cordova/inappbrowser/InAppBrowser.java:120: error: cannot find symbol

                                || Config.isUrlWhiteListed(url)) 
                                         ^

  symbol:   method isUrlWhiteListed(String)

  location: class Config

Note: Some input files use or override a deprecated API.

Note: Recompile with -Xlint:deprecation for details.

1 error


FAILED



FAILURE: 
Build failed with an exception.



* What went wrong:

Execution failed for task ':compileDebugJava'.

> 
Compilation failed; see the compiler error output for details.



* Try:

Run with 
--stacktrace option to get the stack trace. Run with 
--info or 
--debug
 option to get more log output.



BUILD FAILED


Total time: 5.607 secs


/Users/youssefsami/Library/Mobile Documents/com~apple~CloudDocs/Developer/Mobile Apps/UzuConvert/platforms/android/cordova/node_modules/q/q.js:126
                    throw e;
                          ^

Error code 1 for command: /Users/youssefsami/Library/Mobile Documents/com~apple~CloudDocs/Developer/Mobile Apps/UzuConvert/platforms/android/gradlew with args: cdvBuildDebug,-b,/Users/youssefsami/Library/Mobile Documents/com~apple~CloudDocs/Developer/Mobile Apps/UzuConvert/platforms/android/build.gradle,-Dorg.gradle.daemon=true

ERROR building one of the platforms: Error: /Users/youssefsami/Library/Mobile Documents/com~apple~CloudDocs/Developer/Mobile Apps/UzuConvert/platforms/android/cordova/build: Command failed with exit code 1
You may not have the required environment or OS to build this project

Error: /Users/youssefsami/Library/Mobile Documents/com~apple~CloudDocs/Developer/Mobile Apps/UzuConvert/platforms/android/cordova/build: Command failed with exit code 1
    at ChildProcess.whenDone (/usr/local/lib/node_modules/phonegap/node_modules/cordova/node_modules/cordova-lib/src/cordova/superspawn.js:131: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)

我尝试将 java_home 设置为 lib exec 中的 java 别名,但仍然没有。关于可能导致问题的任何想法?

【问题讨论】:

我在运行 Ember-Cli-Cordova 时遇到了同样的问题 【参考方案1】:

这是因为您的 InAppBrowser 插件已过时,并且可能与首次安装插件时相比更新版本的 Cordova Android 平台不同步。我在使用 Cordova-android@4.0.0 和 InAppBrowser 的 0.5.3 时遇到了同样的问题。

修复是先删除插件

cordova plugin rm org.apache.cordova.inappbrowser

然后再次添加它(它应该使用cordova CLI 的最新版本重新安装,在我的例子中它是0.6)。您可以在 plugins/org.apache.cordova.inappbrowser/ 文件夹中的 RELEASENOTES.md 中查看版本。

cordova plugin add org.apache.cordova.inappbrowser

您需要在重新构建之前删除 android 平台并重新添加它,这样它就不会保留旧版本的插件。

cordova platform rm android

cordova platform add android

现在重新构建,错误应该已经消失了。

编辑:我刚刚在您的问题顶部注意到您正在使用 phonegap。既然你用 cordova 标记(这就是我使用的)我用 cordova 命令回答,但我猜几乎相同的过程适用于 Phonegap。

【讨论】:

这为我解决了问题,应该是公认的答案。 虽然插件已重命名为cordova plugin add cordova-plugin-inappbrowser,但它成功了 我发现将版本显式设置为 @1.0.1 对我有用。【参考方案2】:

cordova-android@4.0.0 也有同样的问题 谢谢 JDawgg,你的解决方案比我的好,但如果有人仍然有这个错误,你可以像这样使用 cordova-android@3.6.4 :

cordova platform remove android

然后

cordova platform add android@3.6.4

您必须安装 android 4.2.2 sdk

终于

sudo phonegap build android

【讨论】:

【参考方案3】:

如果有人在使用 Meteor 并遇到同样的问题,martijnwalraven 建议删除旧版本的 cordova-plugin-inappbrowser 并添加最新版本:

$ meteor remove cordova:cordova-plugin-inappbrowser
$ meteor add cordova:cordova-plugin-inappbrowser@1.0.1

这对我有用!

【讨论】:

以上是关于为 Android 构建电话间隙应用程序失败的主要内容,如果未能解决你的问题,请参考以下文章

Ajax 查询在电话间隙 iOS 应用程序中失败,状态为 0

电话间隙;开发者应用程序是不是支持 3rd 方插件?

电话间隙协助

使用 npm 安装电话间隙的 shasum 检查失败

Iphone、电话间隙、儿童浏览器和电子邮件功能

从 javascript 和 android 传递和返回值并用作电话间隙插件