Cordova Android 项目无法编译 [英] Cordova Android project doesn't compile

查看:43
本文介绍了Cordova Android 项目无法编译的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

Cordova 版本: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-设置模式检查:-设置释放模式:-释放混淆检查:[echo] proguard.config 是 ${proguard.config}- 预构建:-检查环境:[checkenv] Android SDK 工具修订版 24.1.2[checkenv] 安装在/Users/.../Library/Android/sdk-设置:[echo] 项目名称:MainActivity[gettype] 项目类型:Android 库- 构建设置:[getbuildtools] 使用最新的构建工具:21.1.2[echo] 正在解决 MainActivity 的构建目标...[gettarget] 项目目标:Android 4.4.2[gettarget] API 级别:19[回声] ----------[echo] 如果需要,创建输出目录...[mkdir] 创建的目录:.../platforms/android/CordovaLib/bin/rsObj[mkdir] 创建的目录:.../platforms/android/CordovaLib/bin/rsLibs[回声] ----------[echo] 解决 MainActivity 的依赖...[依赖] 库依赖:[依赖] 没有库[依赖][依赖] ------------------[回声] ----------[echo] 使用发布"构建库...[subant] 没有要迭代的子构建-代码生成:[mergemanifest] AndroidManifest 文件没有变化.[echo] 处理 aidl 文件...[aidl] 没有要编译的 AIDL 文件.[回声] ----------[echo] 处理 RenderScript 文件...[回声] ----------[echo] 处理资源...[aapt] 没有改变资源.R.java 和 Manifest.java 未受影响.[回声] ----------[echo] 处理 BuildConfig 类...[buildconfig] 生成 BuildConfig 类.- 预编译:-编译:[javac] 编译 98 个源文件到 .../platforms/android/CordovaLib/bin/classes[javac] 警告:[options] 源值 1.5 已过时,将在未来版本中删除[javac] 警告:[options] 目标值 1.5 已过时,将在未来版本中删除[javac] 警告:[选项] 要取消有关过时选项的警告,请使用 -Xlint:-options.[javac] .../platforms/android/CordovaLib/src/org/apache/cordova/CordovaWebViewClient.java:35: 错误:找不到符号[javac] 导入 android.webkit.ClientCertRequest;[javac] ^[javac] 符号:类 ClientCertRequest[javac] 位置:包 android.webkit[javac] .../platforms/android/CordovaLib/src/org/apache/cordova/CordovaWebViewClient.java:145: 错误:找不到符号[javac] public void onReceivedClientCertRequest(WebView 视图,ClientCertRequest 请求)[javac] ^[javac] 符号:类 ClientCertRequest[javac] 位置:类 CordovaWebViewClient[javac] .../platforms/android/CordovaLib/src/org/apache/cordova/CordovaChromeClient.java:342: 错误:找不到符号[javac] public boolean onShowFileChooser(WebView webView, final ValueCallback filePathsCallback, final WebChromeClient.FileChooserParams fileChooserParams) {[javac] ^[javac] 符号:类 FileChooserParams[javac] 位置:类 WebChromeClient[javac] .../platforms/android/CordovaLib/src/org/apache/cordova/CordovaClientCertRequest.java:25: 错误:找不到符号[javac] 导入 android.webkit.ClientCertRequest;[javac] ^[javac] 符号:类 ClientCertRequest[javac] 位置:包 android.webkit[javac] .../platforms/android/CordovaLib/src/org/apache/cordova/CordovaClientCertRequest.java:32: 错误:找不到符号[javac] 私有最终 ClientCertRequest 请求;[javac] ^[javac] 符号:类 ClientCertRequest[javac] 位置:类 CordovaClientCertRequest[javac] .../platforms/android/CordovaLib/src/org/apache/cordova/CordovaClientCertRequest.java:34: 错误:找不到符号[javac] public CordovaClientCertRequest(ClientCertRequest request) {[javac] ^[javac] 符号:类 ClientCertRequest[javac] 位置:类 CordovaClientCertRequest[javac] .../platforms/android/CordovaLib/src/org/apache/cordova/CordovaChromeClient.java:340: 错误:找不到符号[javac] @TargetApi(Build.VERSION_CODES.LOLLIPOP)[javac] ^[javac] 符号:变量 LOLLIPOP[javac] 位置:类 VERSION_CODES[javac] .../platforms/android/CordovaLib/src/org/apache/cordova/CordovaWebView.java:197: 错误:找不到符号[javac] if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP)[javac] ^[javac] 符号:变量 LOLLIPOP[javac] 位置:类 VERSION_CODES[javac] .../platforms/android/CordovaLib/src/org/apache/cordova/CordovaWebView.java:200: 错误:找不到符号[javac] cookieManager.setAcceptThirdPartyCookies(this, true);[javac] ^[javac] 符号:方法 setAcceptThirdPartyCookies(CordovaWebView,boolean)[javac] 位置:CookieManager 类型的变量 cookieManager[javac] .../platforms/android/CordovaLib/src/org/apache/cordova/CordovaWebViewClient.java:143:错误:方法没有覆盖或实现来自超类型的方法[javac] @Override[javac] ^[javac] .../platforms/android/CordovaLib/src/org/apache/cordova/CordovaChromeClient.java:341: 错误:方法没有覆盖或实现来自超类型的方法[javac] @Override[javac] ^[javac] .../platforms/android/CordovaLib/src/org/apache/cordova/CordovaChromeClient.java:348: 错误:找不到符号[javac] Uri[] result = WebChromeClient.FileChooserParams.parseResult(resultCode, intent);[javac] ^[javac] 符号:变量 FileChooserParams[javac] 位置:类 WebChromeClient[javac] 注意:某些输入文件使用或覆盖已弃用的 API.[javac] 注意:使用 -Xlint:deprecation 重新编译以获取详细信息.[javac] 12 个错误[javac] 3 个警告构建失败/Users/.../Library/Android/sdk/tools/ant/build.xml:720: 执行此行时出现以下错误:/Users/.../Library/Android/sdk/tools/ant/build.xml:734: 编译失败;有关详细信息,请参阅编译器错误输出.总时间:3秒

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"><使用-sdk android:minSdkVersion="14" android:targetSdkVersion="19"/></清单>

不明白为什么它在错误消息中提到了LOLLIPOP,为什么它安装了之后找不到它.

解决方案

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

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

Cordova version: 4.3.0

java version "1.8.0_40" 64bit

OS X 10.10.2

Ant version: 1.9.4

Target android SDK I'm using is 19.

When I run 'ant release' in the platforms/android/CordovaLib folder I get the following output with error:

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 are all in in the PATH.

I've tried fiddling with the target sdks and tried downloading different versions but I've run out of ideas. Any help would be much appreciated.

AndroidManifest - from CordovaLib folder:

<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>

Don't understand why it refers to LOLLIPOP in the error message and then why can't it find it since it's installed.

解决方案

I think it's because the Cordova 4.3.0 has referenced the android.webkit.ClientCertRequest, which is newly added in API level 21.

FYI: https://developer.android.com/reference/android/webkit/ClientCertRequest.html

这篇关于Cordova Android 项目无法编译的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆