2017-08-16 34 views
0

大家好!如何正確選擇Android sdkVersion?

我是新來的android編程,所以簡單的事情有時會成爲一個問題。

我有我的申請。它應該適用於Android 5及更高版本的設備。 問題是sdkVersion定義的正確策略是什麼?

我的意思是。

例如,我需要獲得使用藍牙的許可。 如果我的目標sdkVersion是7並且最小sdkVersion是5,我應該在清單文件中請求權限,然後在運行時實現它。像這樣

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { 
... 
} 

但如果我的目標是sdkVersion甚至5 Build.VERSION_CODES.M不能得到解決。

所以問題是:什麼是適當的方法來選擇sdkVersion?我在哪裏可以讀到它?

我讀到這裏https://developer.android.com/guide/topics/manifest/uses-sdk-element.html#target

,但我沒有得到什麼是最好的做法。所以請分享你的經驗。

+0

對於android 5.0 sdkversion是21 - > https://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels –

回答

1

從伊恩湖閱讀這篇文章:Picking your compileSdkVersion, minSdkVersion, and targetSdkVersion

compileSdkVersion:

compileSdkVersion是你的方式告訴搖籃什麼 Android SDK中的版本編譯您的應用程序。使用新的Android SDK是需要使用在該級別添加的任何新API的 。

的minSdkVersion:

如果compileSdkVersion設置了最新的API提供給您, 的minSdkVersion是你的應用程序的下限。 minSdkVersion是 Google Play商店用來確定應用程序可安裝在哪個用戶設備上的信號之一。

targetSdkVersion:

最有趣的三個,然而,是targetSdkVersion。 targetSdkVersion是Android提供前向 兼容性的主要方式,除非更新了 targetSdkVersion,否則不應用行爲更改。這允許您在使用 行爲更改之前使用新的API(因爲 確實更新了您的compileSdkVersion?)。

理想情況下,關係將看起來更像這樣的穩定​​狀態:

的minSdkVersion(最低的)< = targetSdkVersion == compileSdkVersion(最新SDK)

+0

如果'minSdkVersion' <='compileSdkVersion'(當然) ,這是否意味着我永遠不會知道它會在使用'minSdkVersion'的設備上工作,直到我測試它?沒有其他方法來檢查它。這是對的嗎? – Yura

+0

是的,從「minSdkVersion」到最新版本測試所有支持的API級別始終是最佳做法。 – Bob

1

我猜想你正在使用Android Studio和build.gradle。如果不是,我建議你去弄明白。以下所有內容與Android Studio和Gradle構建系統相關。

您的主要錯誤是SDK版本build.gradleapp模塊與Android版本不一樣。 Here是平臺代碼名稱,版本,API級別的列表。您需要的SDK版本是第一個表的API級別列中的數字。

這就是android部分build.gradle針對Android 5.0及更新版本應用的應該看起來像。

android { 
    compileSdkVersion 25 
    buildToolsVersion "25.0.3" 
    defaultConfig { 
     applicationId "net.eraga.myobjectives" 
     minSdkVersion 21 
     targetSdkVersion 25 
     versionCode 1 
     versionName "1.0" 
     testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" 
    } 
    buildTypes { 
     release { 
      minifyEnabled false 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
     } 
    } 
} 

瞭解更多關於targetSdkVersionminSdkVersioncompileSdkVersionhere

在這種情況下,您的minSdkVersion應該是21(android 5.0)和targetSdkVersion以及compileSdkVersion應該是25(android 7.1)。