<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Ihwan</title>
    <description>The latest articles on DEV Community by Ihwan (@ihwanid).</description>
    <link>https://dev.to/ihwanid</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F276474%2F3a55bed8-2d7e-4616-a5b8-2f6eaf22d478.jpeg</url>
      <title>DEV Community: Ihwan</title>
      <link>https://dev.to/ihwanid</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/ihwanid"/>
    <language>en</language>
    <item>
      <title>Cara Membuat APK / AAB di Flutter</title>
      <dc:creator>Ihwan</dc:creator>
      <pubDate>Fri, 22 Nov 2019 03:20:03 +0000</pubDate>
      <link>https://dev.to/ihwanid/cara-membuat-apk-aab-di-flutter-8bf</link>
      <guid>https://dev.to/ihwanid/cara-membuat-apk-aab-di-flutter-8bf</guid>
      <description>&lt;p&gt;Membuat file APK / AAB melalui flutter terbilang gampang gampang susah. berbeda seperti saat kita mengembangkan secara native dimana kita bisa langsung menggunakan menu build -&amp;gt; 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. &lt;/p&gt;

&lt;p&gt;Pertama, mari kita buat dulu keystore, kalau sudah punya pastikan teman teman ingat password serta alias nya.&lt;/p&gt;

&lt;p&gt;membuat keystore bisa dengan mengguanakan perintah berikut&lt;/p&gt;

&lt;p&gt;khusus unix (MacOs, Linux)&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;keytool -genkey -v -keystore ~/key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias key
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;pengguna Windows&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;keytool -genkey -v -keystore c:/Users/USER_NAME/key.jks -storetype JKS -keyalg RSA -keysize 2048 -validity 10000 -alias key
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Okey kalau command keytoolnya tidak terdeteksi, maka teman teman perlu menjalankan nya langsung dari directory Java Binary nya. silahkan ketik&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;flutter doctor -v
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;dan temukan dimana folder java nya terletak, pindah ke directory tersebut dan jalankan perintah keytool yang tadi. &lt;/p&gt;

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

&lt;p&gt;Setelah itu didalam directory android buatlah sebuah file dengan nama key.properties kemudian isi file tersebut sebagai berikut&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight properties"&gt;&lt;code&gt;&lt;span class="py"&gt;storePassword&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;lt;password yang tadi teman teman masukan&amp;gt;&lt;/span&gt;
&lt;span class="py"&gt;keyPassword&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;lt;password yang tadi teman teman masukan&amp;gt;&lt;/span&gt;
&lt;span class="py"&gt;keyAlias&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;key&lt;/span&gt;
&lt;span class="py"&gt;storeFile&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;lt;Lokasi file keystore , Misal /Users/&amp;lt;username&amp;gt;/key.jks&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;okey selanjutnya di file android/app/build.gradle silahkan refactor dan sesuaikan menjadi seperti berikut&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight gradle"&gt;&lt;code&gt;   &lt;span class="o"&gt;...&lt;/span&gt;

   &lt;span class="kt"&gt;def&lt;/span&gt; &lt;span class="n"&gt;keystoreProperties&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="n"&gt;Properties&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt;
   &lt;span class="kt"&gt;def&lt;/span&gt; &lt;span class="n"&gt;keystorePropertiesFile&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;rootProject&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;file&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'key.properties'&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
   &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;keystorePropertiesFile&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;exists&lt;/span&gt;&lt;span class="o"&gt;())&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
       &lt;span class="n"&gt;keystoreProperties&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;load&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="n"&gt;FileInputStream&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;keystorePropertiesFile&lt;/span&gt;&lt;span class="o"&gt;))&lt;/span&gt;
   &lt;span class="o"&gt;}&lt;/span&gt;

&lt;span class="n"&gt;android&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
    &lt;span class="o"&gt;...&lt;/span&gt;

    &lt;span class="n"&gt;signingConfigs&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
        &lt;span class="n"&gt;release&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
            &lt;span class="n"&gt;keyAlias&lt;/span&gt; &lt;span class="n"&gt;keystoreProperties&lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;'keyAlias'&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
            &lt;span class="n"&gt;keyPassword&lt;/span&gt; &lt;span class="n"&gt;keystoreProperties&lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;'keyPassword'&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
            &lt;span class="n"&gt;storeFile&lt;/span&gt; &lt;span class="nf"&gt;file&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;keystoreProperties&lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;'storeFile'&lt;/span&gt;&lt;span class="o"&gt;])&lt;/span&gt;
            &lt;span class="n"&gt;storePassword&lt;/span&gt; &lt;span class="n"&gt;keystoreProperties&lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;'storePassword'&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
        &lt;span class="o"&gt;}&lt;/span&gt;
    &lt;span class="o"&gt;}&lt;/span&gt;
    &lt;span class="n"&gt;buildTypes&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
        &lt;span class="n"&gt;release&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
            &lt;span class="n"&gt;signingConfig&lt;/span&gt; &lt;span class="n"&gt;signingConfigs&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;release&lt;/span&gt;
            &lt;span class="n"&gt;minifyEnabled&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
            &lt;span class="n"&gt;useProguard&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;

            &lt;span class="n"&gt;proguardFiles&lt;/span&gt; &lt;span class="nf"&gt;getDefaultProguardFile&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'proguard-android.txt'&lt;/span&gt;&lt;span class="o"&gt;),&lt;/span&gt; &lt;span class="s1"&gt;'proguard-rules.pro'&lt;/span&gt;
        &lt;span class="o"&gt;}&lt;/span&gt;
    &lt;span class="o"&gt;}&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;

&lt;span class="o"&gt;...&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;selanjutnya kita akan setup proguard untuk aplikasi kita, buatlah file proguard-rules.pro didalam direktori /android/app/ kemudian isi file tersebut seperti berikut&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;## 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 *;
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



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

&lt;p&gt;okey selanjut nya tinggal kita ekspor file apa yang kita butuhkan, biasanya playstore lebih menyukai format aab. untuk membuat file nya jalankan perintah berikut&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;flutter build appbundle
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;jika ingin membuat file apk maka gunakan perintah berikut&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;flutter build apk --split-per-abi
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;nah semua file tersebut bisa teman teman cek hasilnya di direktori /build/app/outputs/&lt;/p&gt;

&lt;p&gt;Jika ingin mengupdate versi aplikasinya silahkan update version yang terdapat di file pubspec.yaml&lt;/p&gt;

&lt;p&gt;Okey semoga berhasil, jika ada error atau kendala silahkan ditanyakan. &lt;/p&gt;

&lt;p&gt;NB : subscribe  &lt;a href="https://www.youtube.com/channel/UCjntzibNSsjjIOh0HoP9vxw"&gt;channel saya&lt;/a&gt; dong :)&lt;/p&gt;

</description>
      <category>flutter</category>
      <category>dart</category>
      <category>apk</category>
      <category>playstore</category>
    </item>
  </channel>
</rss>
