Android Tips 7

ohke9920 8年前發布 | 26K 次閱讀 Gradle 安卓開發 Android開發 移動開發

介紹關于Android的一些有趣的小知識點. 本文是第七篇, 歡迎閱讀.

不兼容 Gradle 版本

條件: 執行 gradle clean; gradle build 報錯.

Error:(1, 0) Plugin with id 'com.android.application' not found

原因: 使用 gradle 命令的版本過低, 如使用 2.8版本 編譯 2.10版本 的項目. 查看 gradle 版本, gradle -v .

升級Gradle命令的版本即可, 建立軟連接命令.

ln -s /Users/wangchenlong/Installations/gradle-all/gradle-2.10/bin/gradle gradle

同時使用v2.8版本, 需要額外gradle命令, 如 gradle-v2.8 .

ln -s /Users/wangchenlong/Installations/gradle-all/gradle-2.10/bin/gradle gradle-v2.8

AS 2.0 的 Sugar ORM 數據庫

在使用 Android Studio 2.x 版本時, 會啟用 Instant Run 會影響 Sugar ORM數據庫 的使用. 取消 勾選即可.

否則報錯, 參考

Sugar ORM No Such Table Exception

AlarmManager 取消注冊

AlarmManager有時會被系統關閉, 需要重復注冊, 保證魯棒性, 但保證只有一個生效, 需要取消之前的設置.

PendingIntent的標記選擇 FLAG_UPDATE_CURRENT , 而不是 FLAG_CANCEL_CURRENT .

PendingIntent.getBroadcast(appContext, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);

設置之前取消即可, 為了安全, 可以捕獲 setRepeating 的異常.

// 設置之前先取消前一個PendingIntent
am.cancel(pi);

// 設置每一天的計時器. 添加異常捕獲, 防止崩潰
try {
    am.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), AlarmManager.INTERVAL_DAY, pi);
} catch (Exception e) {
    e.printStackTrace();
}

否則報錯: Too many alarms registered from pid.

參考

Jack Option

Android Studio 2.1.0 版本支持 Jack 的功能, 即 Java Android Compiler Kit . Jack是Android新的工具鏈, 優點是完全開源(與Oracle之爭), 加快編譯速度(節省一步), 提供代碼優化與混淆功能.

使用方式

android {
    defaultConfig {
        jackOptions {
            enabled true
        }
    }
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
}

非常遺憾, 依賴注入庫Dagger或Butterknife的核心庫 android-apt 暫時不支持Jack, 參考 .

com.neenbedankt.gradle.plugins:android-apt:1.8

需要編譯版本 Build Tools 24.0.0+ , 即 Android N 以上.

啟動頁面留白

應用在啟動時, 系統會加載數據, 需要啟動完成 Application 的onCreate方法, Activity 的onCreate與onResume方法, 會產生短暫的留白, 不可避免.

也可能是黑色, 與應用的主題有關, light是白色, dark是黑色.

一些主流應用都會解決這一問題, 如微信\QQ\網易云音樂等, 但某些應用可能并未注意. 去掉留白需要修改啟動頁面的主題樣式, 設置 windowBackground 屬性, 默認是白色, 可以修改為其他顏色或展示Logo圖片.

<style name="WelcomeTheme" parent="Theme.AppCompat.Light.NoActionBar">
 <item name="windowNoTitle">true</item>
 <item name="windowActionBar">false</item>
 <item name="android:windowFullscreen">true</item>
 <item name="android:windowBackground">@drawable/launch_logo</item>
</style>

并且把首頁布局的背景設置為透明, 在加載完成后, 再顯示廣告或其他信息.

android:background="@android:color/transparent"

這樣可以提升用戶體驗, 開發之道在于細節. Thx@柏毅老師.

OK, that’s all! Enjoy it!

 

來自: http://www.wangchenlong.org/2016/05/07/tips/1605/072-android-tips-7/

 本文由用戶 ohke9920 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!