【问题标题】:Cordova Android project doesn't compileCordova Android 项目无法编译
【发布时间】:2015-03-05 11:43:47
【问题描述】:

科尔多瓦版本:4.3.0

java版本“1.8.0_40”64位

OS X 10.10.2

蚂蚁版本:1.9.4

我使用的目标 android SDK 是 19。

当我在平台/android/CordovaLib 文件夹中运行“ant release”时,我得到以下错误输出:

Buildfile: .../platforms/android/CordovaLib/build.xml

-set-mode-check:

-set-release-mode:

-release-obfuscation-check:
     [echo] proguard.config is ${proguard.config}

-pre-build:

-check-env:
 [checkenv] Android SDK Tools Revision 24.1.2
 [checkenv] Installed at /Users/.../Library/Android/sdk

-setup:
     [echo] Project Name: MainActivity
  [gettype] Project Type: Android Library

-build-setup:
[getbuildtools] Using latest Build Tools: 21.1.2
     [echo] Resolving Build Target for MainActivity...
[gettarget] Project Target:   Android 4.4.2
[gettarget] API level:        19
     [echo] ----------
     [echo] Creating output directories if needed...
    [mkdir] Created dir: .../platforms/android/CordovaLib/bin/rsObj
    [mkdir] Created dir: .../platforms/android/CordovaLib/bin/rsLibs
     [echo] ----------
     [echo] Resolving Dependencies for MainActivity...
[dependency] Library dependencies:
[dependency] No Libraries
[dependency] 
[dependency] ------------------
     [echo] ----------
     [echo] Building Libraries with 'release'...
   [subant] No sub-builds to iterate on

-code-gen:
[mergemanifest] No changes in the AndroidManifest files.
     [echo] Handling aidl files...
     [aidl] No AIDL files to compile.
     [echo] ----------
     [echo] Handling RenderScript files...
     [echo] ----------
     [echo] Handling Resources...
     [aapt] No changed resources. R.java and Manifest.java untouched.
     [echo] ----------
     [echo] Handling BuildConfig class...
[buildconfig] Generating BuildConfig class.

-pre-compile:

-compile:
    [javac] Compiling 98 source files to .../platforms/android/CordovaLib/bin/classes
    [javac] warning: [options] source value 1.5 is obsolete and will be removed in a future release
    [javac] warning: [options] target value 1.5 is obsolete and will be removed in a future release
    [javac] warning: [options] To suppress warnings about obsolete options, use -Xlint:-options.
    [javac] .../platforms/android/CordovaLib/src/org/apache/cordova/CordovaWebViewClient.java:35: error: cannot find symbol
    [javac] import android.webkit.ClientCertRequest;
    [javac]                      ^
    [javac]   symbol:   class ClientCertRequest
    [javac]   location: package android.webkit
    [javac] .../platforms/android/CordovaLib/src/org/apache/cordova/CordovaWebViewClient.java:145: error: cannot find symbol
    [javac]     public void onReceivedClientCertRequest (WebView view, ClientCertRequest request)
    [javac]                                                            ^
    [javac]   symbol:   class ClientCertRequest
    [javac]   location: class CordovaWebViewClient
    [javac] .../platforms/android/CordovaLib/src/org/apache/cordova/CordovaChromeClient.java:342: error: cannot find symbol
    [javac]     public boolean onShowFileChooser(WebView webView, final ValueCallback<Uri[]> filePathsCallback, final WebChromeClient.FileChooserParams fileChooserParams) {
    [javac]                                                                                                                          ^
    [javac]   symbol:   class FileChooserParams
    [javac]   location: class WebChromeClient
    [javac] .../platforms/android/CordovaLib/src/org/apache/cordova/CordovaClientCertRequest.java:25: error: cannot find symbol
    [javac] import android.webkit.ClientCertRequest;
    [javac]                      ^
    [javac]   symbol:   class ClientCertRequest
    [javac]   location: package android.webkit
    [javac] .../platforms/android/CordovaLib/src/org/apache/cordova/CordovaClientCertRequest.java:32: error: cannot find symbol
    [javac]     private final ClientCertRequest request;
    [javac]                   ^
    [javac]   symbol:   class ClientCertRequest
    [javac]   location: class CordovaClientCertRequest
    [javac] .../platforms/android/CordovaLib/src/org/apache/cordova/CordovaClientCertRequest.java:34: error: cannot find symbol
    [javac]     public CordovaClientCertRequest(ClientCertRequest request) {
    [javac]                                     ^
    [javac]   symbol:   class ClientCertRequest
    [javac]   location: class CordovaClientCertRequest
    [javac] .../platforms/android/CordovaLib/src/org/apache/cordova/CordovaChromeClient.java:340: error: cannot find symbol
    [javac]     @TargetApi(Build.VERSION_CODES.LOLLIPOP)
    [javac]                                   ^
    [javac]   symbol:   variable LOLLIPOP
    [javac]   location: class VERSION_CODES
    [javac] .../platforms/android/CordovaLib/src/org/apache/cordova/CordovaWebView.java:197: error: cannot find symbol
    [javac]         if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP)
    [javac]                                                        ^
    [javac]   symbol:   variable LOLLIPOP
    [javac]   location: class VERSION_CODES
    [javac] .../platforms/android/CordovaLib/src/org/apache/cordova/CordovaWebView.java:200: error: cannot find symbol
    [javac]             cookieManager.setAcceptThirdPartyCookies(this, true);
    [javac]                          ^
    [javac]   symbol:   method setAcceptThirdPartyCookies(CordovaWebView,boolean)
    [javac]   location: variable cookieManager of type CookieManager
    [javac] .../platforms/android/CordovaLib/src/org/apache/cordova/CordovaWebViewClient.java:143: error: method does not override or implement a method from a supertype
    [javac]     @Override
    [javac]     ^
    [javac] .../platforms/android/CordovaLib/src/org/apache/cordova/CordovaChromeClient.java:341: error: method does not override or implement a method from a supertype
    [javac]     @Override
    [javac]     ^
    [javac] .../platforms/android/CordovaLib/src/org/apache/cordova/CordovaChromeClient.java:348: error: cannot find symbol
    [javac]                     Uri[] result = WebChromeClient.FileChooserParams.parseResult(resultCode, intent);
    [javac]                                                   ^
    [javac]   symbol:   variable FileChooserParams
    [javac]   location: class WebChromeClient
    [javac] Note: Some input files use or override a deprecated API.
    [javac] Note: Recompile with -Xlint:deprecation for details.
    [javac] 12 errors
    [javac] 3 warnings

BUILD FAILED
/Users/.../Library/Android/sdk/tools/ant/build.xml:720: The following error occurred while executing this line:
/Users/.../Library/Android/sdk/tools/ant/build.xml:734: Compile failed; see the compiler error output for details.

Total time: 3 seconds

android、ant、java都在PATH中。

我试过摆弄目标 sdks 并尝试下载不同的版本,但我的想法已经用完了。任何帮助将不胜感激。

AndroidManifest - 来自 CordovaLib 文件夹:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="org.apache.cordova" android:versionName="1.0" android:versionCode="1">
    <uses-sdk android:minSdkVersion="14" android:targetSdkVersion="19" />
</manifest>

不明白为什么它在错误消息中引用 LOLLIPOP,然后为什么安装后找不到它。

【问题讨论】:

  • 您在哪个操作系统上编译?你能指定你的蚂蚁版本吗?
  • hi @diva ant 版本是 1.9.4,操作系统是 OS X 10.10.2 Yosemite
  • mac 对吗?和java版本“1.8.0_40”64位
  • 有没有机会在不更新项目的情况下升级了 cli 工具? cordova platform 说版本是什么?另外,我认为 cli 4.3 中使用的 3.7.1 将 sdk 提高到 21 -- cordova.apache.org/announcements/2015/02/06/…?
  • 它最终与目标 sdks 21 一起工作。如果您将其添加为答案,我会接受 :)

标签: android cordova ant


【解决方案1】:

我认为是因为 Cordova 4.3.0 引用了 API 级别 21 中新添加的 android.webkit.ClientCertRequest。

仅供参考:https://developer.android.com/reference/android/webkit/ClientCertRequest.html

【讨论】:

【解决方案2】:

从 SDK 管理器安装 Android 构建工具版本 21 和 22。
安装构建工具后,删除应用内的平台文件夹。
转到 Cordova 并再次添加 android 平台(使用 cordova platform add android 命令)。
重新安装平台后,重新构建应用程序(使用 cordova build 命令),它将成功构建

【讨论】:

  • 删除平台文件夹并再次创建应用程序已经成功了。
【解决方案3】:

您的 Cordova 太高,无法与 Android Api 19 一起使用。这意味着它较新,因此它引用了 Api 19 没有的库并给出错误。所以你需要把它变笨一点。

卸载它:

sudo npm uninstall -g cordova 

然后安装适用于 Api 19 的旧版 cordova:

sudo npm install -g cordova@4.0.0

现在一切从头开始。 “科尔多瓦创造 blabla”,“科尔多瓦 平台添加android”、“cordova run android”等

要获取科尔多瓦版本的列表,请执行以下操作:

npm view cordova versions

但我知道 4.0.0 将适用于 Api 19,因为我遇到了同样的问题。

【讨论】:

  • 很好的答案。或者,如果您不关心使用 19,您可以更新您的目标。您可以运行 android list targets 以查看您的选项,然后通过运行 android update project --target android-23 -p ~/&lt; MY PROJECT DIRECTORY &gt;/platforms/android -splatforms/android 升级我得到与提问者相同的错误并更新到 android-23 为我修复了它。
猜你喜欢
  • 2022-01-15
  • 1970-01-01
  • 2016-02-19
  • 1970-01-01
  • 2018-04-14
  • 1970-01-01
  • 2016-08-26
  • 2012-11-08
  • 1970-01-01
相关资源
最近更新 更多