Cara Membuat APK / AAB di Flutter
Tags: flutter, dart, apk, playstore
Published: 2019-11-22 03:20:03

Membuat file APK / AAB melalui flutter terbilang gampang gampang susah. berbeda seperti saat kita mengembangkan secara native dimana kita bisa langsung menggunakan menu build -> Generate Signed Bundle / APK dengan mudah. Tapi tenang, melalu artikel ini penulis berjanji akan membuat proses pembuatan apk / aab menjadi mudah dan menyenangkan. markimul, mari kita mulai. 

Pertama, mari kita buat dulu keystore, kalau sudah punya pastikan teman teman ingat password serta alias nya.

membuat keystore bisa dengan mengguanakan perintah berikut

khusus unix (MacOs, Linux) 
```
keytool -genkey -v -keystore ~/key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias key
```

pengguna Windows
```
keytool -genkey -v -keystore c:/Users/USER_NAME/key.jks -storetype JKS -keyalg RSA -keysize 2048 -validity 10000 -alias key
```

Okey kalau command keytoolnya tidak terdeteksi, maka teman teman perlu menjalankan nya langsung dari directory Java Binary nya. silahkan ketik
```
flutter doctor -v
```
dan temukan dimana folder java nya terletak, pindah ke directory tersebut dan jalankan perintah keytool yang tadi. 

Jika berhasil maka teman-teman diminta memasukan password serta data diri & company teman teman. untuk passowrd nya jangan sampai lupa ya. silahkan segera dicatat. 

Setelah itu didalam directory android buatlah sebuah file dengan nama key.properties kemudian isi file tersebut sebagai berikut

```properties
storePassword=<password yang tadi teman teman masukan>
keyPassword=<password yang tadi teman teman masukan>
keyAlias=key
storeFile=<Lokasi file keystore , Misal /Users/<username>/key.jks>
```

okey selanjutnya di file android/app/build.gradle silahkan refactor dan sesuaikan menjadi seperti berikut

```gradle
   ...

   def keystoreProperties = new Properties()
   def keystorePropertiesFile = rootProject.file('key.properties')
   if (keystorePropertiesFile.exists()) {
       keystoreProperties.load(new FileInputStream(keystorePropertiesFile))
   }

android {
    ...

    signingConfigs {
        release {
            keyAlias keystoreProperties['keyAlias']
            keyPassword keystoreProperties['keyPassword']
            storeFile file(keystoreProperties['storeFile'])
            storePassword keystoreProperties['storePassword']
        }
    }
    buildTypes {
        release {
            signingConfig signingConfigs.release
            minifyEnabled true
            useProguard true

            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

...

```

selanjutnya kita akan setup proguard untuk aplikasi kita, buatlah file proguard-rules.pro didalam direktori /android/app/ kemudian isi file tersebut seperti berikut 
```pro
## Flutter wrapper
-keep class io.flutter.app.** { *; }
-keep class io.flutter.plugin.**  { *; }
-keep class io.flutter.util.**  { *; }
-keep class io.flutter.view.**  { *; }
-keep class io.flutter.**  { *; }
-keep class io.flutter.plugins.**  { *; }
-dontwarn io.flutter.embedding.**
-ignorewarnings
-keep class * {
    public private *;
}
```

kemudian cek manifest yang terdapat di android/app/src/main dan tambahkan permission yang applikasi teman teman butuhkan misal seperti internet, kamera, lokasi dll. 

okey selanjut nya tinggal kita ekspor file apa yang kita butuhkan, biasanya playstore lebih menyukai format aab. untuk membuat file nya jalankan perintah berikut
```
flutter build appbundle
```

jika ingin membuat file apk maka gunakan perintah berikut
```
flutter build apk --split-per-abi
```

nah semua file tersebut bisa teman teman cek hasilnya di direktori /build/app/outputs/

Jika ingin mengupdate versi aplikasinya silahkan update version yang terdapat di file pubspec.yaml

Okey semoga berhasil, jika ada error atau kendala silahkan ditanyakan. 

NB : subscribe  [channel saya](https://www.youtube.com/channel/UCjntzibNSsjjIOh0HoP9vxw) dong :)