關於Support庫28及以上版本沒法查看源碼問題

聲明

不知道你們有沒有注意到這麼個問題:android

在最新建立項目的時候,有了 User androidx.* artifacts 這樣一個選項。可能你還不知道 androidx 的意思,能夠這樣理解,androidx 代替了以前的一系列的 support 庫。若是你選擇了 androidx 就表示在你新建立的項目裏面使用的支持庫就是 androidx 了而不是以前咱們用的 support 類型的支持庫了。api

假設這裏不勾選那麼就說明咱們依然使用以前的 android.support.* 這種類型的支持庫,好比implementation 'com.android.support:appcompat-v7:28.0.0' implementation 'com.android.support.constraint:constraint-layout:1.1.3' 等等。bash

這個時候你新建的項目若是編譯的時候用的 api 28,也就是在build.gradle 中是 compileSdkVersion 28 這個是你會發現,當你查看 support 庫中的代碼的時候無法看了,變成下面這樣了markdown

無法看源碼了,只能看到 .class 了。這是由於:app

在 Android 28.0.0 已經沒有給 Support Library 28.0.0 提供源碼查看了,即使咱們使用了 Android 28 進行編譯項目,用了 Support Library 28.0.0,這個時候當你查看 Support Library 中的類的時候會發現沒法查看源碼,看到的只是 xxx.class 。這是由於在 Android9.0(API 級別 28)發佈後,新版本支持庫 AndroidX 隨之誕生了,它屬於 JetPack,除了包含了原先支持庫中的內容,還包含了最新的 JetPack 組件。gradle

在使用 api 28 的時候咱們仍然能夠繼續使用支持庫,不過全部的新庫的開發都在 androidx 中進行了,所以咱們是看不到源碼的(以前的版本是能夠看到源碼的),Google 建議全部的新項目使用 androidx 庫。ui

所以解決方案spa

擁抱 androidx 庫,這也是 Google 所推薦的code

另一個方法就是使用 28 如下的版原本進行編譯:好比:orm

compileSdkVersion 26
  dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'com.android.support:appcompat-v7:26.1.0'
    implementation 'com.android.support.constraint:constraint-layout:1.1.3'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.android.support.test:runner:1.0.2'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
}

複製代碼

這樣是仍然能夠查看 support 中類的源代碼的。

相關文章
相關標籤/搜索