# Hari 29: Publish React Native ke Playstore

Akhirnya aplikasi terpublish juga ke play store.

### Persiapan Publish

Semua aplikasi yang masuk ke Play store harus ditandatangani, sebagai penanda jika ada publish lagi artinya update bukan nambah aplikasi. Tanda tangan aplikasi disini menggunakan .keystore.

Berikut cara membuat keystore.

Masuk ke directory `java` terinstall. Kemudian gunakan perintah berikut untuk melakukan generate.

```bash
sudo keytool -genkey -v -keystore my-upload-key.keystore -alias my-key-alias -keyalg RSA -keysize 2048 -validity 10000
```

> Nama key dapat disesuaikan

![Key Asrul Dev](https://raw.githubusercontent.com/AsrulLove/img-db/master/keystore.png)

Hasil generate tersebut pindahkan ke dalam proyek, pada folder `android/app`.

![Keystore](https://raw.githubusercontent.com/AsrulLove/img-db/master/place-keystore.png)

Ubah file `android/gradle.properties` seingga hasilnya seperti berikut.

```java
org.gradle.configureondemand=false

android.useAndroidX=true
android.enableJetifier=true

MYAPP_UPLOAD_STORE_FILE=asruldev-js.keystore
MYAPP_UPLOAD_KEY_ALIAS=asruldev-js-alias
MYAPP_UPLOAD_STORE_PASSWORD=rahasia-sekali-yah
MYAPP_UPLOAD_KEY_PASSWORD=rahasia-sekali-yah
```

![Gradle prop](https://raw.githubusercontent.com/AsrulLove/img-db/master/gradle-prop.png)

Selanjutnya ubah kode `android/app/build.gradle` sehingga menjadi seperti berikut.

```gradle
...
signingConfigs {
        debug {
            storeFile file('debug.keystore')
            storePassword 'android'
            keyAlias 'androiddebugkey'
            keyPassword 'android'
        }
        release {
            if (project.hasProperty('MYAPP_UPLOAD_STORE_FILE')) {
                storeFile file(MYAPP_UPLOAD_STORE_FILE)
                storePassword MYAPP_UPLOAD_STORE_PASSWORD
                keyAlias MYAPP_UPLOAD_KEY_ALIAS
                keyPassword MYAPP_UPLOAD_KEY_PASSWORD
            }
        }
    }
    buildTypes {
        debug {
            signingConfig signingConfigs.debug
        }
        release {
            // Caution! In production, you need to generate your own keystore file.
            // see https://facebook.github.io/react-native/docs/signed-apk-android.
            signingConfig signingConfigs.release
            minifyEnabled enableProguardInReleaseBuilds
            proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro"
        }
    }
...
```

![TTD Release](https://raw.githubusercontent.com/AsrulLove/img-db/master/ttd-realise.png)

Jika configurasi selesai, selanjutnya lakukan release apk dengan perintah berikut.

```bash
./gradlew bundleRelease
```

> Pastikan terminal sedang berada dalam folder android

![Release APK](https://raw.githubusercontent.com/AsrulLove/img-db/master/realese-apk.png)

Uji dengan perintah berikut, jika tidak ada error maka lanjutkan ke tahap upload ke play store.

```bash
npx react-native run-android --variant=release
```

### Upload

Jika APK ingin dipublish ke play store agar dapat didownload oleh org banyak, maka diperlukan akun play console sendiri, jika belum ada silahkan daftarkan jika udah ada langsung login di https://play.google.com.

Pilih menu **Buat Aplikasi** dan pilih bahasa dan isi nama aplikasi.

![Pilih Bahasa](https://raw.githubusercontent.com/AsrulLove/img-db/master/Screenshot%20from%202020-02-01%2010-17-47.png)

Isi formulir yang diminta oleh google play sendiri, seperti alamat, descripsi, gambar, dll. Kemudian upload apk dan lakukan release, yang diapload adalah hasil release yang ada dalam folder proyek `minibioapp/android/app/build/outputs/apk/release`.

![Upload](https://raw.githubusercontent.com/AsrulLove/img-db/master/upload-apk.png)

Setelah dipload, maka lakukan cek ulang apakah semua field yang dibutuhkan google play udah tercentang? jika sudah, pilih `Buat Rilis`.

![Menunggu](https://raw.githubusercontent.com/AsrulLove/img-db/master/tunggu.png)

Jika masa pemeriksaan untuk verfifkasi aplikasi oleh google selesai maka aplikasi akan terpublish dan bisa didownload.

![Publised](https://raw.githubusercontent.com/AsrulLove/img-db/master/publis-lo.png)

Bisa cek dan download segera di https://play.google.com/store/apps/details?id=com.minibioapp

