Сборка кордова новый пустой проект и цель на андроид-22
Я хочу установить Android-22 в качестве целевого Android SDK. Мне нужно это как разрешение разрешения workaroud с камерой на Android 6 и выше. (описано здесь https://developer.android.com/training/permissions/requesting.html, предложено здесь Временное решение для разрешений Android 6.0) Но мой cordova 6.2.1 устанавливает SDK по умолчанию 23. Я изменил его в AndroidManifest.xml
<uses-sdk android:minSdkVersion="14" android:targetSdkVersion="22" />
встроенный но apk был того же размера, как если бы я buld для Android-23. Итак, чтобы быть уверенным, что он построен для Android-22, я удалил SDK-23 и оставил только SDK-22. Сборка не началась и Cordova сказала, мне нужен Android-23 SDK
e:\projects\android\qp2>cordova build --release
Error: Please install Android target: "android-23".
Hint: Open the SDK manager by running: "c:\android\android-sdk\tools\android.bat
"
You will require:
1. "SDK Platform" for android-23
2. "Android SDK Platform-tools (latest)
3. "Android SDK Build-tools" (latest)
, поэтому я изменил цель на android-22 в project.properties и CordovaLib / project.properties, как предложено здесь. Сборка не удалась.
E:\projects\android\qp2\platforms\android\CordovaLib\src\org\apache\cordova\CordovaInterfaceImpl.java:191: error: cannot find symbol
getActivity().requestPermissions(permissions, requestCode);
^
symbol: method requestPermissions(String[],int)
location: class Activity
E:\projects\android\qp2\platforms\android\CordovaLib\src\org\apache\cordova\CordovaInterfaceImpl.java:197: error: cannot find symbol
getActivity().requestPermissions(permissions, requestCode);
^
symbol: method requestPermissions(String[],int)
location: class Activity
E:\projects\android\qp2\platforms\android\CordovaLib\src\org\apache\cordova\CordovaInterfaceImpl.java:202: error: cannot find symbol
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.M)
^
symbol: variable M
location: class VERSION_CODES
E:\projects\android\qp2\platforms\android\CordovaLib\src\org\apache\cordova\CordovaInterfaceImpl.java:204: error: cannot find symbol
int result = activity.checkSelfPermission(permission);
^
symbol: method checkSelfPermission(String)
location: variable activity of type Activity
E:\projects\android\qp2\platforms\android\CordovaLib\src\org\apache\cordova\CordovaActivity.java:493: error: method does not override or implement a method from a supertype
@Override
^
Note: Some input files use or override a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
5 errors
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':CordovaLib:compileReleaseJava'.
> Compilation failed; see the compiler error output for details.
* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.
Error: cmd: Command failed with exit code 1
Вкратце, моя проблема в том, что я не знаю, как нацеливаться на другую, кроме новейшей платформы Android-23. Проект пуст, только что создан, без плагинов и без кода.
Можно ли создать и собрать для android-22 в cordova 6.2.1. Должен ли я понизить Cordova?
1 ответ
Можно ли создать и собрать для android-22 в cordova 6.2.1.
cordova@6.2.1
(CLI) по умолчанию устанавливает cordova-android@5.1
который требует установки API 23 через SDK Manager.
Чтобы собрать API 22, вам нужно специально установить cordova-android@4
:
$ cordova platform rm android
&& cordova platform add android@4
Чтобы использовать текущие версии плагинов Cordova (которые теперь также содержат код для поддержки разрешений времени выполнения Android 6.0), вам необходимо установить в свой проект https://github.com/apache/cordova-plugin-compat.
Я хочу установить Android-22 в качестве целевого Android SDK. Мне нужно это как разрешение разрешения workaroud с камерой на Android 6 и выше.
Это не лучший способ обойти проблему с разрешениями во время выполнения. Ориентируясь на API 22, вы создаете устаревший API. В то время как официальные плагины Cordova обеспечивают обратную совместимость для обеспечения возможности сборки с использованием API 22, вы можете столкнуться с ошибками сборки, если вы установите последние версии некоторых сторонних плагинов, которые явно зависят от компонентов из API 23.
Другим способом решения вашей проблемы было бы использование cordova.plugins.diagnostic, чтобы вручную запросить необходимые разрешения на выполнение Android 6.0, которые вам нужны, вызвав requestRuntimePermissions()
, После успешного запроса и получения разрешения во время выполнения вы можете активировать функцию камеры. Это позволит вам использовать API 23 с последними выпусками cordova-android
платформа, официальные плагины Cordova и сторонние плагины.