記事のディレクトリ
カスタムのGradleのプロフィール
config.gradle
新しいconfig.gradleのルートディレクトリに
次のようにconfig.gradleを読み取ります。
ext {
//Android 配置
android = [
compileSdkVersion: 29,
buildToolsVersion: "29.0.1",
applicationId : "com.xx.xx",
minSdkVersion : 21,
targetSdkVersion : 29,
versionCode : 8,
versionName : "1.7"
]
//依赖 配置
dependencies = [
"httpclient" : 'org.apache.http.legacy',
"appcompat" : 'androidx.appcompat:appcompat:1.0.2',
"bmobsdk" : 'cn.bmob.android:bmob-sdk:3.7.3-rc1',
"rxjava2" : "io.reactivex.rxjava2:rxjava:2.2.2",
"rxandroid2" : 'io.reactivex.rxjava2:rxandroid:2.1.0',
"okio" : 'com.squareup.okio:okio:2.1.0',
"gson" : 'com.google.code.gson:gson:2.8.5',
"okhttp3" : 'com.squareup.okhttp3:okhttp:3.12.0',
"tagcloud" : 'com.moxun:tagcloudlib:1.2.0',
"circleimageview": 'de.hdodenhof:circleimageview:3.0.0',
"glide" : 'com.github.bumptech.glide:glide:4.9.0',
"recyclerview" : 'androidx.recyclerview:recyclerview:1.0.0',
"datepicker" : 'cn.aigestudio.datepicker:DatePicker:2.2.0',
"litepal" : 'org.litepal.android:java:3.0.0',
"eventbus" : 'org.greenrobot:eventbus:3.1.1',
"tablayout" : 'com.google.android.material:material:1.0.0',
"photoview" : 'com.github.chrisbanes:PhotoView:2.3.0',
"3dmap" : 'com.amap.api:3dmap:5.0.0',
"location" : 'com.amap.api:location:3.3.0',
"search" : 'com.amap.api:search:5.0.0',
"bugly" : 'com.tencent.bugly:crashreport:2.1.9',
"buglyndk" : 'com.tencent.bugly:nativecrashreport:3.0',
"zxing" : 'cn.yipianfengye.android:zxing-library:2.2',
"videoplayer" : 'cn.jzvd:jiaozivideoplayer:7.0.5'
]
//仓库
maven = [
"bmobUrl": "https://raw.github.com/bmob/bmob-android-sdk/master",
"jitpack": "https://jitpack.io"
]
}
カスタムのGradleの導入
Gradleのプロジェクトbuild.gradleルートでカスタム設定ファイルの導入
//引入自定义Gradle配置文件
apply from: "config.gradle"
データのニーズが変更する場合は、アプリモジュールと他のモジュールは、config.gradleで定義された使用済みのbuild.gradleパラメータすることができ、唯一のbuild.gradle内のすべてのモジュールは変更を加える必要がない、config.gradleを変更する必要があります。
利点:
- 1.ユニティ
- 2.管理可能
- 3.バージョン管理
アプリ的build.gradle
アプリのbuild.gradleは次のとおりです。
android {
compileSdkVersion rootProject.ext.android["compileSdkVersion"]
buildToolsVersion rootProject.ext.android["buildToolsVersion"]
//默认配置
defaultConfig {
applicationId rootProject.ext.android["applicationId"]
minSdkVersion rootProject.ext.android["minSdkVersion"]
targetSdkVersion rootProject.ext.android["targetSdkVersion"]
versionCode rootProject.ext.android["versionCode"]
versionName rootProject.ext.android["versionName"]
}
...
}
基本的build.gradle
android {
//HttpClient
useLibrary rootProject.ext.dependencies["httpclient"]
compileSdkVersion rootProject.ext.android["compileSdkVersion"]
buildToolsVersion rootProject.ext.android["buildToolsVersion"]
defaultConfig {
minSdkVersion rootProject.ext.android["minSdkVersion"]
targetSdkVersion rootProject.ext.android["targetSdkVersion"]
versionCode rootProject.ext.android["versionCode"]
versionName rootProject.ext.android["versionName"]
}
...
}
dependencies {
implementation fileTree(include: ['*.jar'], dir: 'libs')
//V7
api rootProject.ext.dependencies["appcompat"]
api rootProject.ext.dependencies["bmobsdk"]
api rootProject.ext.dependencies["rxjava2"]
api rootProject.ext.dependencies["rxandroid2"]
api rootProject.ext.dependencies["okio"]
api rootProject.ext.dependencies["gson"]
api rootProject.ext.dependencies["okhttp3"]
api rootProject.ext.dependencies["tagcloud"]
api rootProject.ext.dependencies["circleimageview"]
api rootProject.ext.dependencies["datepicker"]
api rootProject.ext.dependencies["glide"]
api rootProject.ext.dependencies["recyclerview"]
api rootProject.ext.dependencies["litepal"]
api rootProject.ext.dependencies["eventbus"]
api rootProject.ext.dependencies["tablayout"]
api rootProject.ext.dependencies["photoview"]
api rootProject.ext.dependencies["3dmap"]
api rootProject.ext.dependencies["location"]
api rootProject.ext.dependencies["search"]
api rootProject.ext.dependencies["bugly"]
api rootProject.ext.dependencies["buglyndk"]
api rootProject.ext.dependencies["zxing"]
api rootProject.ext.dependencies["videoplayer"]
}
Gradleの構成定数
BuildConfig開いているファイル、ビューのGradle定数
buildTypesに次のコードを追加します。
debug {
//自定义Gradle常量
buildConfigField("boolean","LOG_DEBUG","true")
buildConfigField("String","LOG_TAG","\"YueJian\"")
buildConfigField("String","SP_NAME","\"Config\"")
}
BuildConfigファイルの同期化の見直し後
、一定の必要性を構築するために私たちのためになっています
次のようにリリースバージョンでこれらの操作を実行しないのに対し、これらの定数は、そのようなログ出力として、あなたには、いくつかのデバッグビルド操作を行うことができますのでことを、使用されています。
トップ10のヒントの速度を高めるためにGradleのビルド
- プラグインのGradleの最新バージョンを使用して
- 古いMultidexを活性化しないでください
- Multidex APK建物禁止
- リソースファイルのパッケージを最小化
- 圧縮PNGを無効にします
- PNG変換WEBP
- 推奨インスタントラン
- 動的なバージョン識別を使用しないでください
- チューニングメモリ割り当てのGradle
- オープンGradleでは、キャッシュを構築します
Multidex APK建物禁止
Gradleのビルド3パフォーマンス指標:
- 全額コンパイル:コンパイルすべて - プロジェクトを開きます
- コードのインクリメンタル・コンパイル:修正のJava / Kotlinコード以下のコンパイル
- 資源のインクリメンタル・コンパイル:コンパイルした場合、リソースファイル、次の解像度を変更します。
私たちはコンパイルにいくつかのファイルを禁止することができ、およびデバッグ時間をすることはあまり必要はありません。公開されたアプリケーションは、マルチチャンネルのパッケージとすべてのパッケージアプリケーション市場が必要です。
それをデバッグするときにどのように停止するには?
[設定] - [ビルド - コンパイラPdevBuild
アプリ的build.gradle:
android {
//调试的时候禁止,加快编译速度
if(rootProject.hasProperty('devBuild')){
splits.abi.enable = false
splits.density.enable = false
//禁用PNG压缩
//aaptOptions.cruncherEnabled = false
}
...
リソースファイルのパッケージを最小化
android {
//默认配置
defaultConfig {
//调试
resConfigs("zh","xxhdpi")
...
}
...
}
圧縮PNGを無効にします
android {
//调试的时候禁止,加快编译速度
if(rootProject.hasProperty('devBuild')){
splits.abi.enable = false
splits.density.enable = false
//禁用PNG压缩
aaptOptions.cruncherEnabled = false
}
...
PNG変換WEBP
動的なバージョン識別を使用しないでください
依存関係を追加するときに使用プラス+しないでください
チューニングメモリ割り当てのGradle
オープンGradleでは、キャッシュを構築します
#开启Gradle构建缓存
org.gradle.caching=true