web-dev-qa-db-ja.com

Cordova Androidプロジェクトがコンパイルされません

Cordovaバージョン:4.3.0

Javaバージョン "1.8.0_40" 64ビット

OS X 10.10.2

Antバージョン:1.9.4

enter image description here

ターゲット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に含まれています。

ターゲットSDKをいじってみて、さまざまなバージョンをダウンロードしてみましたが、アイデアが足りません。どんな助けでも大歓迎です。

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を参照している理由が理解できず、インストールされているためになぜそれを見つけられないのか理解できません。

10
L4zl0w

これは、Cordova 4.3.0がAPIレベル21で新しく追加されたAndroid.webkit.ClientCertRequestを参照したためだと思います。

参考: https://developer.Android.com/reference/Android/webkit/ClientCertRequest.html

15
Zheng Can

SDK ManagerからAndroidビルドツールバージョン21および22をインストールします。
ビルドツールがインストールされたら、アプリ内のプラットフォームフォルダーを削除します。
Cordovaに移動して、Androidプラットフォームを再度追加します(cordova platform add Androidコマンドを使用))。
プラットフォームが再インストールされたら、アプリを再ビルドし(cordova buildコマンドを使用)、正常にビルドされます

13
Raj Adepu

コルドバが高すぎるため、Android Api 19を使用できません。Api19にはないライブラリを参照し、エラーが発生するため、それが新しいということです。そのため、少し調整する必要があります。 。

それをアンインストールします。

Sudo npm uninstall -g cordova 

次に、Api 19で動作する古いバージョンのCordovaをインストールします。

Sudo npm install -g [email protected]

そして今、すべてを最初からやり直します。 「cordova create blabla」、「cordova platform add Android」、「cordova run Android」など.

コルドバのバージョンのリストを取得するには、次のようにします。

npm view cordova versions

しかし、同じ問題があったので、4.0.0がApi 19で動作することを知っています。

6
foreyez