2016-06-11 120 views
1

我想设置android-22作为目标android sdk。我需要它作为Android 6及更高版本的相机的workaroud权限问题。 (这里所描述https://developer.android.com/training/permissions/requesting.html,这里建议Workaround for Android 6.0 Permissions) 但我的科尔多瓦6.2.1设置默认的SDK 23.我在AndroidManifest.xml中改变了它建立科尔多瓦新的空项目和目标android-22

<uses-sdk android:minSdkVersion="14" android:targetSdkVersion="22" /> 

建,但APK是相同的大小,如果我的球泡Android的23。因此,为了确保它是为android-22构建的,我已经删除了sdk-23并且只保留了sdk-22。 构建没有启动和科尔多瓦说,我需要Android的SDK 23

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) 

,所以我在project.properties和CordovaLib/project.properties改变目标到Android-22在这里建议。生成失败。

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平台。项目是空的,只是创建,没有插件和代码。

是否有可能在cordova 6.2.1中为android-22创建和构建。我应该降级科尔多瓦吗?

回答

4

是否有可能在cordova 6.2.1中为android-22创建和构建。

[email protected](CLI)默认安装[email protected]需要通过SDK管理器安装API 23。

要建立API 22,你需要特别安装[email protected]

$ cordova platform rm android 
    && cordova platform add [email protected] 

要使用科尔多瓦插件的最新版本(也现在包含代码,支持Android 6.0运行时权限),你会需要将cordova-plugin-compat安装到您的项目中。

我想将android-22设置为目标android sdk。我需要它作为Android 6及更高版本的相机的workaroud权限问题。

这不是解决运行时权限问题的最佳方法。通过瞄准API 22,您正在构建一个过时的API。尽管官方Cordova插件提供向后兼容性以支持针对API 22构建,但如果安装明确依赖于API 23组件的最新版本的某些第三方插件,则可能会遇到构建错误。

解决您的问题的另一种方法是请使用cordova.plugins.diagnostic通过调用requestRuntimePermissions()来手动请求您需要的相应Android 6.0运行时权限。成功请求并获取运行时权限后,即可调用摄像头功能。这将允许您针对API 23构建最新版本的cordova-android平台,官方Cordova插件和第三方插件。

+0

是的,它的工作原理!你从哪里得到这些信息,“[email protected]需要API 23 ....并且为API 22构建,你需要专门安装cordova-android @ 4”?我真的很确定,那是Android 6.0〜API23,Android 5.1.1〜API22,Android 5.0.1〜API21等等。我从Android SDK Manager窗口中获得了这个错误信息。所以我整天试着[email protected],我想知道cordova一次又一次地设定目标为api 23. – user2106769

+0

“Android 6.0〜API23,Android 5.1.1〜API22,Android 5.0.1〜API21” - 这个是正确的,但是因为您使用Cordova(非本机Android)构建,所以您还需要考虑Cordova平台中本机代码的依赖关系:https://cordova.apache.org/news/2016/01/28 /tools-release.html – DaveAlden

+0

你真的帮了我一个大忙,非常感谢。 –

相关问题