2016-06-11 114 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

你真的幫了我一個大忙,非常感謝。 –

相關問題