1. 程式人生 > 實用技巧 >Flutter Gradle配置新人篇

Flutter Gradle配置新人篇

Flutter Build IOS版本基本都很順暢,所以文中就不在說明。但是如果你使用flutter create的專案,使用模板中的gradle配置編譯Android APK總是會遇到一些問題。下面,我們一步一步來避開這些坑。

由於Flutter編譯是原生的編譯,在IOS下使用Xcode。在Android上自然使用Gradle。所以你遇到的問題,基本上就是gradle配置的問題。

1、Android X

如果你的專案不支援AndroidX,可能有的外掛就沒有辦法編譯了。如果你建立專案的時候選擇了支援AndroidX,那麼你可以跳過這個環節。

如何判斷你的專案是否支援AndroidX

開啟android/gradle.properties 或 .android/gradle.properties

看看裡面是否包含了

android.useAndroidX=true
android.enableJetifier=true

如果你新建一個專案,為了讓Flutter支援Android,那麼你需要使用下面的命令

flutter create --androidx -t <project-type> <new-project-path>

手動升級

1、修改 android/gradle/wrapper/gradle-wrapper.properties

distributionUrl=https\://services.gradle.org/distributions/gradle-4.10.2-all.zip

2、更新 android/build.gradle,將過去的版本更新為3.3.0至少

dependencies {
    classpath 'com.android.tools.build:gradle:3.3.0'
}

3、修改 android/gradle.properties

android.enableJetifier=true
android.useAndroidX=true

4、現在修改SDK version,開啟 android/app/build.gradle targetSdkVersion最少28

defaultConfig {
        minSdkVersion 17
        targetSdkVersion 28
}
升級AndroidX與否,是根據你自身的情況來決定,不會影響後續的文章內容

2、自動簽名配置

gradle編譯時,可以為你自動簽名,這樣省去了編譯後手動簽名的步驟。

1、建立簽名檔案

此處忽略如何建立.keystore格式的簽名,請自行建立keystore簽名。

2、新增key.properties檔案

在android目錄中建立一個key.properties檔案,這個檔案將包含簽名檔案的重要資訊

檔案內填入一下配置資訊

storePassword= 自己配置的簽名密碼
keyPassword= 自己配置的簽名密碼
keyAlias= keyAlias
storeFile= .keystore檔案儲存目錄

3、在 android/app/build.gradle下按照下面的格式,新增到 android{} 內

signingConfigs {
        release {
            keyAlias keystoreProperties['keyAlias']
            keyPassword keystoreProperties['keyPassword']
            storeFile file(keystoreProperties['storeFile'])
            storePassword keystoreProperties['storePassword']
        }
    }

並修改同級的buildTypes,在release中使用配置中的簽名,debug模式無需簽名

buildTypes {
        release {
            signingConfig signingConfigs.release
        }

        debug {
        }
    }

3、abi配置

gradle打包時,將自動把不同的abi(相容不同處理器的ABI)打包到APK中,預設模板中沒有配置其他的ABI,所以會出現有的裝置無法安裝或者安裝後閃退的情況。

下面我們將 android/app/build.gradle 中的 buildTypes 修改。

我們區分release和debug修改。debug中的abi根據你的除錯裝置進行配置

下面的配置基本可以相容市面上很多的安卓裝置,包含了64位的ABI,試錯後,這是最佳的配置。僅供參考,根據自身情況修正。

buildTypes {
        release {
            signingConfig signingConfigs.release
            minifyEnabled true
            shrinkResources true
            ndk{
                abiFilters "armeabi-v7a", "arm64-v8a", "x86", "x86_64"
                abiFilters.clear()
            }
        }

        debug {
            ndk {
                //除錯的時候用模擬器的就可以了,不然除錯打包安裝太慢
                abiFilters "x86"
            }
        }
    }

4、編譯打包

現在你可以使用flutter build apk來進行編譯。預設的情況下 flutter build apk即為--release。

注意:Flutter官方推薦使用 flutter build apk --split-per-abi 來分開打包編譯不同的ABI版本,Google Play中可以按照不同ABI版本上傳。但是國內的基本沒有上傳時可以區分不同ABI針對不同使用者群體的功能,所以我們還是一次性打包。

現在你可以使用 adb install ./android.apk將編譯的結果安裝到你的裝置啦