Ответ 1
Я думаю, потому что Cordova 4.3.0 ссылается на android.webkit.ClientCertRequest, который недавно добавлен в уровень API 21.
FYI: https://developer.android.com/reference/android/webkit/ClientCertRequest.html
Версия Кордовы: 4.3.0
java version "1.8.0_40" 64bit
OS X 10.10.2
Ant версия: 1.9.4
Целевой SDK для Android, который я использую, составляет 19.
Когда я запускаю 'ant release' в папке platform/android/CordovaLib, я получаю следующий вывод с ошибкой:
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 в сообщении об ошибке, и почему он не может найти его с момента его установки.
Я думаю, потому что Cordova 4.3.0 ссылается на android.webkit.ClientCertRequest, который недавно добавлен в уровень API 21.
FYI: https://developer.android.com/reference/android/webkit/ClientCertRequest.html
Установите инструменты для создания Android версии 21 и 22 из SDK Manager.
После установки инструментов сборки удалите папку платформ в своем приложении.
Отправляйтесь в Кордову и снова добавьте платформу для Android (используя команду кордовы платформы add android).
После того, как платформа будет переустановлена, перестройте приложение (используя команду corova build) и он будет успешно выполнен
Ваша Кордова слишком высока, чтобы работать с Android Api 19. Это означает, что она более новая, поэтому она ссылается на библиотеки, которые Api 19 не имеет, и дает ошибку. Поэтому вам нужно немного опустить его.
Удалите его:
sudo npm uninstall -g cordova
И затем установите более раннюю версию кордовы, которая хорошо работает с Api 19:
sudo npm install -g [email protected]
и теперь делать все снова с нуля. "кордова создать блабла", "кордова" платформа add android "," android "и т.д.
Чтобы получить список версий кордовы, выполните:
npm view cordova versions
Но я знаю, что 4.0.0 будет работать с Api 19, поскольку у меня была та же проблема.