2012-03-29 71 views
31

我剛讀了Android支持包/兼容庫的描述......Android支持包/兼容性庫 - 使用v4還是v13?

http://developer.android.com/sdk/compatibility-library.html

...並且它給我留下了小迷糊!它說v13庫是v4的超集,但我認爲這是另一種方式?實用:如果我想使用兼容性庫,以便我的應用程序能夠在運行Android 2.2(API 8)至4.0(API 14)及更高版本的手機上生成並正常工作,那麼v4是否足以滿足我的需求?

回答

35

要定位API 8(v2.2),您應該使用v4版本。

v13的大部分內容都可以使用,但如果您使用依賴於平臺13 API的任何功能,則您的應用將在舊設備上爆炸。

除非有特別令人信服的理由需要v13,否則我建議直接v4。

+0

澄清:我在我的清單中指定 'targetSdkVersion' 爲 「14」 和 '的minSdkVersion' 爲 「8」。那麼v4仍然是我想要的嗎? – 2012-03-29 13:56:36

+2

如果您使用v13,並且您使用的功能依賴於平臺13 API,則您的應用程序將會崩潰。僅僅因爲它編譯,並不意味着它可以在所有設備上運行。 – 2012-03-29 14:07:08

+0

我仍然不明白,如果v13需要13+設備爲什麼它是v4的超集... – Olivier 2012-07-19 22:55:37

9

答案是正確的,但也有點混淆! 目前有3個支持罐:V4,V7和V13。 不幸的是,V7僅適用於gridlayout,因此不是超集。

我們只對支持庫中的一個jar感興趣[除非我們也想gridlayout(我不知道它是什麼!)]。因此,我們正在查看我們的android:minSdkVersion =「8」並對照罐子進行檢查。所以我們想要V4。

V13只是一個超集,它重複V4方法,而不是代碼。即在這個例子中,V13的使用是不正確的。

5

我不認爲我們應該用超(或子集)來描述這三個庫(V4,V7,V13)雖然最簡單的意義似乎向後兼容的版本4,7和13

加入谷歌這意味着除非你的應用只支持最新版本(強烈推薦),我們幾乎需要support-v4。假設你的minsdk有14個片段已經可以,但'嵌入式片段'僅支持17位以後,所以我們仍然需要v4和v4片段。

今年(2013)google發佈了v7,並在其中添加了appcompat-library。 這意味着除了第三次支持Actionbar(ActionbarSherlock)之前11,官方支持可能更好One然後,我相信當每個新版本將來在v7中發佈時,我們都會更新每個操作欄功能。

我們仍然需要minsdk = XX today(Nov.24,2013)(7和10之間)。我們應該添加支持-V4的片段和支持-V7的動作條都爲最佳實踐。

+0

你的回答很好地解釋了大多數人相信這些庫之間沒有子集超集關係。 – thedarkpassenger 2017-09-27 14:50:53

0

v13只是有關於片段的功能。大多數情況下,如果minVersion大於13並且不使用以下功能:FragmentPagerAdapter,FragmentStatePagerAdapter,FragmentTabHost和嵌套片段; 你不需要支持v13。

所以「v4是v13的一個子集」是不正確的!

1

我檢查V13的源代碼,它增加了只有4個類。

  • FragmentCompat
  • FragmentPagerAdapter
  • FragmentStatePagerAdapter
  • FragmentTabHost

FragmentCompat增加被包括在V4片段已經2種靜態util的方法。

FragmentPagerAdapter,FragmentStatePagerAdapter和FragmentTabHost,所有這些3類有相應的V4相同名稱的類,並且有相同的行爲。

在V13提供額外的API是沒有必要的。加入V4

因此,可以支持更多的平臺比V13,與V13相同的行爲,那麼爲什麼不使用V4?

,所以我不能看到任何V13 neccessarity。 我說得對不對?

0

晚了一點,但請有下面的圖片很好看。 在JAR文件Android的支持,v13.jar,有3包:

  • 註釋
  • V4
  • V13

這意味着我們只需要添加這一個罐子,我們會支持v4和v13。由於v7不在編譯中,因此我們需要自行添加該JAR。

enter image description here

相關問題