??????小菜今天升級適配 SDK-API 27,可謂艱難險阻,真的好磨人,記錄一下遇到的兩個比較重要的問題,希望各位不會掉坑。
問題一 Could not find common.jar
-
小菜是由 26.1.0 準備升級到 27.1.1,首先是更換 SDK-Version 等,然后下載 SDK,一切正常,等到下載完 sync now 同步時,卻報了如下錯誤:
問題一.png -
在網頁中打開鏈接,卻是 404;
404.png 查閱網上資料,說涉及到的版本不要用 27.+ 之類的,應替換為準確的版本號,但是小菜用的是明確的 27.1.1,該方案失??;
-
網上部分大神說,需要在 build.gradle 中添加 maven { url "https://maven.google.com" },但是小菜也都有,并不能直接解決問題,如圖:
修改前 build.gradle -
之后查閱資料發(fā)現在 build.gradle 中 maven 順序有關系,因為 jcenter 已經刪除 android.arch.core 庫,需要從 google.com 中下載,小菜調整順序,rebuild 之后問題解決。
解決后 build.gradle
問題二 Only fullscreen opaque activities can request orientation
-
小菜好不容易解決掉問題一,緊接著進入程序各種閃退,如圖:
問題二.png -
小菜按字面意思理解的是,只有占據整個屏幕的 Activity 才可以設置橫豎屏,半透明/對話框等不可設置橫豎屏,當然小菜用到的側拉頁面也是不可以;
源碼 小菜首先把 AndroidManifest.xml 中注冊的 Activity 均去掉該屬性 android:screenOrientation="portrait";
-
為了橫豎屏的切換,小菜添加了一個 values-26 的文件夾,存放針對 Android8.0 以上手機的 style.xml,將 android:windowIsTranslucent 改為 false
<item name="android:windowIsTranslucent">false</item> 并加入 <item name="android:windowDisablePreview">true</item>,如下:
values-26.png
<style name="TopicDetailTheme" parent="Theme.AppCompat.Light.NoActionBar">
<item name="android:windowAnimationStyle">@style/AnimationThemeEpager</item>
<item name="android:windowIsTranslucent">false</item>
<item name="android:windowDisablePreview">true</item>
<item name="android:windowActionBar">false</item>
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
<item name="android:windowDrawsSystemBarBackgrounds">false</item>
<item name="android:windowTranslucentStatus">true</item>
</style>
- 以上,就解決掉進入程序閃退,和橫豎屏正常切換的問題了。但是如果有需求固定橫屏或豎屏呢,很簡單,在 Java/Kotlin 代碼的 onCreate 中設置 setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
即可,親測可用。
??????Tips: Android8.0 的適配還會涉及很多東西,需要不斷測試研究,并及時優(yōu)化處理。
來源: 阿策小和尚






