2015-03-05 10 views
10

versione Cordova: 4.3.0Cordova Android non può essere compilato

versione java "1.8.0_40" 64bit

OS X 10.10.2

versione Ant: 1.9.4

enter image description here

target SDK di Android che sto utilizzando è 19.

Quando eseguo 'uscito formica' nella cartella/piattaforme Android/CordovaLib ottengo il seguente output con errore:

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, formica, java sono tutti in nel percorso.

Ho provato a trafficare con gli sdks di destinazione e ho provato a scaricare versioni diverse ma ho esaurito le idee. Qualsiasi aiuto sarebbe molto apprezzato.

AndroidManifest - dalla cartella 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> 

non capiscono perché si riferisce alla LOLLIPOP nel messaggio di errore e quindi perché non può trovare dal momento che è installato.

+0

su cui Os stai complimentando?puoi specfy versione ant? – KOTIOS

+0

hi @diva ant versione è 1.9.4, il sistema operativo è OS X 10.10.2 Yosemite – L4zl0w

+0

mac giusto? e java version "1.8.0_40" 64bit – KOTIOS

risposta

15

Penso che sia perché la 4.3.0 Cordova ha fatto riferimento l'android.webkit.ClientCertRequest, che è stato recentemente aggiunto a livello di API 21.

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

+0

Non ho visto alcun riferimento qui: https://cordova.apache.org/docs/en/4.0. 0/guide_platforms_android_index.md.html dovrebbe probabilmente essere aggiunto ai documenti. ma questo ha funzionato anche per me – TyBourque

13

Installare strumenti di generazione di Android versione 21 e 22 dal responsabile SDK.
Una volta installati gli strumenti di compilazione, rimuovere la cartella di piattaforme all'interno della propria app.
Vai su Cordova e aggiungi di nuovo la piattaforma Android (usando la piattaforma cordova aggiungi il comando android).
volta che la piattaforma viene reinstallato, ricostruire l'applicazione (utilizzando Cordova costruire di comando) e sarà costruire con successo

+3

Rimuovere la cartella delle piattaforme e creare nuovamente l'app ha fatto il trucco. –

+1

grazie, ha funzionato :) @Raj –

5

tuo Cordova è troppo alto per lavorare con Api Android 19. Significato è più recente in modo che fa riferimento a librerie che Api 19 non ha e dà un errore. Quindi devi ridurlo un po '.

disinstallarlo:

sudo npm uninstall -g cordova 

e quindi installare una versione precedente di Cordova che funziona bene con Api 19:

sudo npm install -g [email protected] 

e ora fare tutto di nuovo da zero. "Cordova creare blabla", "Cordova piattaforma Android aggiungere", "Cordova eseguire Android", ecc

Per ottenere un elenco delle versioni Cordova fare:

npm view cordova versions 

ma so che sarà 4.0.0 lavoro con Api 19 poiché ho avuto lo stesso problema.

+0

Ottima risposta. In alternativa, puoi aggiornare il tuo target se non ti interessa usare 19. Puoi eseguire 'android list targets' per vedere le tue opzioni, e poi aggiornare da 'platforms/android' eseguendo 'android update project --target android- 23 -p ~//piattaforme/android -s' Ho ricevuto lo stesso errore del richiedente e l'aggiornamento ad Android-23 lo ha risolto per me. – Sarah