日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

android 设置folder类型,正确配置你的 Android 项目

發布時間:2023/12/4 Android 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 android 设置folder类型,正确配置你的 Android 项目 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

簡評:優秀的 Android 項目從配置開始。: )

作者在這里介紹了一個 Android 項目應該有的配置,文中講到的內容大家都可以運用在自己的 Android 模板項目中。

gitignore

當你新建 Android 項目時,默認會生成 gitignore 文件,但并沒有包含所有必要的規則。這里推薦大家使用 gitignore.io 網站,只需要輸入關鍵字,比如 Android, Intellij 再點擊按鈕,就能得到一個標準的 gitignore 文件啦。

tools folder

如果你的項目有很多的第三方腳本,規則列表或其他的文件,不要隨意的將它們放在 root 目錄下,新建一個 tools 文件夾,把它們都放在里面。通常你可以放入自定義的 gradle 腳本文件,proguard 規則和靜態代碼分析工具,例如:pmd, findbugs,

flavors

Flavors 用來實現多渠道打包,作者自己通常是分為了 dev 和 prod 兩個 flavor:

productFlavors {

dev {

signingConfig signingConfigs.debug

versionCode gitVersionCodeTime

versionName gitVersionName

}

prod {

signingConfig signingConfigs.release

versionCode gitVersionCode

versionName gitVersionName

}

}

keystore

當你通過 Android Studio 運行或 debugging 你的項目時,Android Studio 會通過 Android SDK tools 自動生成 debug keystore 為你的應用簽名。

但使用默認的 debug keystore 會有下面幾個問題:

有效期 365 天

從不同計算機上安裝應用程序需要先卸載

google 服務需要 keystore 的 SHA-1 fingerprint

所以,建議開發者自己生成 debug keystore 并提交到版本控制系統中。

signingConfigs {

debug {

keyAlias 'androiddebugkey'

keyPassword 'android'

storePassword 'android'

storeFile file('../keystore/debug.keystore')

}

release {

...

}

}

proguard

Android proguard 主要有三個用途:

消除未使用的代碼 - 幫助你避免 64k 限制

優化代碼和 APK

模糊代碼 - 讓 APK 難以被逆向工程

但是代碼混淆和優化顯著增加了編譯的時間,不利于平時的開發調試。這也是為什么推薦針對 release 和 debug 使用不同的 proguard 規則。

buildTypes {

release {

minifyEnabled true

proguardFiles getDefaultProguardFile('proguard-android.txt'),

"$project.rootDir/tools/rules-proguard.pro"

signingConfig signingConfigs.release

}

debug {

minifyEnabled true

proguardFiles getDefaultProguardFile('proguard-android.txt'),

"$project.rootDir/tools/rules-proguard-debug.pro"

signingConfig signingConfigs.debug

}

}

對于用于 debug 的 proguard 文件,需要加上以下規則來強制 proguard 忽略掉警告、代碼混淆和優化:

# Add project specific ProGuard rules here.

-dontobfuscate

-dontoptimize

-ignorewarnings

對于 release 的 proguard 文件設置規則就比較復雜了,因為幾乎每一個庫都有自己獨特的規則。這里推薦一個開源項目:android-proguard-snippets,里面包含了幾乎所有主流庫的 proguard 規則。

strict mode

Android StrictMode能幫助開發者檢測應用中可能出現的多種問題:

可關閉的對象沒有關閉

在主線程中執行了文件讀取或網絡請求

URI 暴露

...

這里建議開發者在 debug build 時通過 *detectAll *方法檢測所有類型的問題:

if (BuildConfig.DEBUG) {

StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder()

.detectAll()

.penaltyLog()

.build());

StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder()

.detectAll()

.penaltyLog()

.build());

}

像是忘記關閉 SQLiteCursor 這類問題出現時,日志中就會有提示:

StrictMode:

A resource was acquired at attached stack trace but never released.

See java.io.Closeable for information on avoiding resource leaks.

java.lang.Throwable: Explicit termination method 'close' not called

at dalvik.system.CloseGuard.open(CloseGuard.java:184)

at android.database.CursorWindow.(CursorWindow.java:111)

at android.database.AbstractWindowedCursor.clearOrCreateWindow(AbstractWindowedCursor.java:198)

at android.database.sqlite.SQLiteCursor.fillWindow(SQLiteCursor.java:139)

at android.database.sqlite.SQLiteCursor.getCount(SQLiteCursor.java:133)

at android.database.AbstractCursor.moveToPosition(AbstractCursor.java:197)

at android.database.AbstractCursor.moveToFirst(AbstractCursor.java:237)

at com.dd.template.MainActivity.onCreate(MainActivity.java:124)

歡迎關注:知乎專欄「極光日報」,每天為 Makers 導讀三篇優質英文文章。

總結

以上是生活随笔為你收集整理的android 设置folder类型,正确配置你的 Android 项目的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。