Sabtu, 27 Januari 2024

Cara Merilis Aplikasi Android di Lazarus Android Module Wizard (LAMW)

Hallo guys, 

Postingan kali ini akan membahas bagaiaman merelease aplikasi android yang dikembangan menggunakan Bahasa Lazarus + Free Pascal + Lazarus Android Module Wizard (LAMW). Sebelumnya pastikan anda sudah bisa mengcompile projek android anda. Baca postingan saya sebelumnya di sini.   

Tahap release application merupakan bagian utama setelah aplikasi dinyatakan layak untuk dikonsumsi oleh publik. Tentunya setelah melewati tahap ujicoba dan trial error. Beruntungnya, LAMW telah menyediakan fitur untuk rilis aplikasi baik menjadi signed Apk (.apk) atau signed Bundle (.aab). Fitur ini sangat membantu terutama untuk mereka yang bertujuan mempublish aplikasinya di Google Play Store. 

Pertama-tama, untuk menyamakan persepsi, kita akan menggunakan contoh projek di dalam folder demos nama projekya adalah AppCompatBottomNavigationDemo1. Jika anda menggunakan projek lain, silahkan sesuaikan. 

Pada tutorial ini akan dicontohkan bagaimana merilis aplikasi menjadi signed .apk secara universal. Artinya dalam file .apk tersebut terdapat library armeabi-v7a (32 bits) dan arm64-v8a (64 bits) sehingga tidak perlu membuat file .apk secara terpisah untuk masing-masing platform yang berbeda. 

Sebelumnya, lakukan kompilasi projek pada masing-masing Chipset/Architecture. Masuk ke menu Project - Project Options... Pilih [LAMW] Android Project Options - Build - Chipset ARMV7a+Soft dan Aarch64. Hasilnya akan diperoleh 2 buah library (32 bits dan 64 bits) dalam folder libs. Selain itu, proses kompilasi akan menghasilnya beberapa file di dalam folder D:\OprekLAMW\lazandroidmodulewizard-master\demos\GUI\AppCompatBottomNavigationDemo1\build\outputs\apk\release

1. Mengatur Konfigurasi File Pendukung

Membuat file Signed Apk atau File Bundle (.aab) melalui LAMW, memerlukan beberapa file pendukung yang perlu disesuaikan dengan konfiguras Path perkakas yang digunakan. 
 
Mengedit file release-keystore.bat. File tersebut berada di dalam folder projek. Jika belum ada, silahkan tambahkan secara mandiri. sesuaikan dengan path perkakas pendukung yang anda gunakan. 

set JAVA_HOME=C:\Program Files\Zulu\zulu-17
set PATH=%JAVA_HOME%\bin;%PATH%
set JAVA_TOOL_OPTIONS=-Duser.language=en
keytool -genkey -v -keystore appcompatbottomnavigationdemo1-release.keystore -alias appcompatbottomnavigationdemo1.keyalias -keyalg RSA -keysize 2048 -validity 10000 < keytool_input.txt
:Error
echo off
cls
echo.
echo Signature file created previously, remember that if you delete this file and it was uploaded to Google Play, you will not be able to upload another app without this signature.
echo.
pause
 
Berikutnya edit file gradle-local-build.bat yang ada di dalam folder projek. Jika belum ada, silahkan tambahkan secara mandiri sbb:

set Path=%PATH%;D:\OprekLAMW\Sdk\platform-tools
set GRADLE_HOME=D:\OprekLAMW\gradle-7.6.3\
set PATH=%PATH%;%GRADLE_HOME%\bin
gradle clean build --info

Berikutnya edit file gradle-local-apksigner.bat yang ada di dalam folder projek. Jika belum ada, silahkan tambahkan secara mandiri sbb:

set Path=%PATH%;D:\OprekLAMW\Sdk\platform-tools;D:\OprekLAMW\Sdk\build-tools\34.0.0
set GRADLE_HOME=D:\OprekLAMW\gradle-7.6.3
set PATH=%PATH%;%GRADLE_HOME%\bin
zipalign -v -p 4 D:\OprekLAMW\lazandroidmodulewizard-master\demos\GUI\AppCompatBottomNavigationDemo1\build\outputs\apk\release\AppCompatBottomNavigationDemo1-armeabi-v7a-release-unsigned.apk D:\OprekLAMW\lazandroidmodulewizard-master\demos\GUI\AppCompatBottomNavigationDemo1\build\outputs\apk\release\AppCompatBottomNavigationDemo1-armeabi-v7a-release-unsigned-aligned.apk
apksigner sign --ks D:\OprekLAMW\lazandroidmodulewizard-master\demos\GUI\AppCompatBottomNavigationDemo1\appcompatbottomnavigationdemo1-release.keystore --ks-pass pass:123456 --key-pass pass:123456 --out D:\OprekLAMW\lazandroidmodulewizard-master\demos\GUI\AppCompatBottomNavigationDemo1\build\outputs\apk\release\AppCompatBottomNavigationDemo1-release.apk D:\OprekLAMW\lazandroidmodulewizard-master\demos\GUI\AppCompatBottomNavigationDemo1\build\outputs\apk\release\AppCompatBottomNavigationDemo1-arm64-v8a-release-unsigned-aligned.apk

Berikutnya edit file gradle-local-universal-apksigner.bat yang ada di dalam folder projek sbb:

set Path=%PATH%;D:\OprekLAMW\Sdk\platform-tools;D:\OprekLAMW\Sdk\build-tools\34.0.0
set GRADLE_HOME=D:\OprekLAMW\gradle-7.6.3
set PATH=%PATH%;%GRADLE_HOME%\bin
zipalign -v -p 4 D:\OprekLAMW\lazandroidmodulewizard-master\demos\GUI\AppCompatBottomNavigationDemo1\build\outputs\apk\release\AppCompatBottomNavigationDemo1-universal-release-unsigned.apk D:\OprekLAMW\lazandroidmodulewizard-master\demos\GUI\AppCompatBottomNavigationDemo1\build\outputs\apk\release\AppCompatBottomNavigationDemo1-universal-release-unsigned-aligned.apk
apksigner sign --ks D:\OprekLAMW\lazandroidmodulewizard-master\demos\GUI\AppCompatBottomNavigationDemo1\appcompatbottomnavigationdemo1-release.keystore --ks-pass pass:123456 --key-pass pass:123456 --out D:\OprekLAMW\lazandroidmodulewizard-master\demos\GUI\AppCompatBottomNavigationDemo1\build\outputs\apk\release\AppCompatBottomNavigationDemo1-release.apk D:\OprekLAMW\lazandroidmodulewizard-master\demos\GUI\AppCompatBottomNavigationDemo1\build\outputs\apk\release\AppCompatBottomNavigationDemo1-universal-release-unsigned-aligned.apk

Berikutnya edit file gradle-local-build-bundle.bat yang ada di dalam folder projek. Jika belum ada, silahkan tambahkan secara mandiri sbb:

set Path=%PATH%;D:\OprekLAMW\Sdk\platform-tools
set GRADLE_HOME=D:\OprekLAMW\gradle-7.6.3\
set PATH=%PATH%;%GRADLE_HOME%\bin
gradle clean bundle --info

Berikutnya edit file gradle-jarsigner-verify.bat yang ada di dalam folder projek. Jika belum ada, silahkan tambahkan secara mandiri sbb:

set JAVA_HOME=C:\Program Files\Zulu\zulu-17
path %JAVA_HOME%\bin;%path%
jarsigner -verify -verbose -certs D:\OprekLAMW\lazandroidmodulewizard-master\demos\GUI\AppCompatBottomNavigationDemo1\build\outputs\apk\release\AppCompatBottomNavigationDemo1-release.apk

2. Membuat File Signed Apk

Pada menu Tools - [LAMW] Lazarus Module Wizard - Build Release Signed Apk.... Akan muncul tampilan Input Keytool untuk kebutuhan membuat keystore baru jika key belum ada (belum pernah dibuat sebelumnya). Pada contoh ini saya menggunakan data default, silahkan sesuaikan dengan data anda termasuk pada file pendukung diatas seperti nama dan password keystore. Pilih Ok dan tunggu prosesnya sampai selesai. 

Tauhidslab

Jika tidak ada kesalahan, akan muncul file baru di dalam folder D:\OprekLAMW\lazandroidmodulewizard-master\demos\GUI\AppCompatBottomNavigationDemo1\build\outputs\apk\release dengan nama AppCompatBottomNavigationDemo1-release.apk. Sampai pada tahap ini anda sudah berhasil membuat sebuah file Signed Apk yang dapat didistribusikan baik pada perangkat android 32 atau 64 bit. 

3. Membuat File Bundle .aab Untuk Google Play Store

Pada saat postingan ini ditulis, Google Play Store mengharuskan Developer untuk mempublis aplikasi android yang telah dipaketkan dengan ekstensi .aab. Beruntungnya, LAMW juga telah menyediakan fitur untuk mempaketkan aplikasi menjadi file .aab dengan cara yang relatif sangat mudah. 

Pada menu Tools - [LAMW] Lazarus Module Wizard - Build Release Signed Bundle.... Proses bundle akan memerlukan waktu beberapa menit. Berikut adalah proses bundle projek android menjadi file .aab menggunakan Lazarus Android Module Wizard (LAMW)

Tauhidslab

Tunggu sampai prosesnya selesai. Jika tidak ada kesalahan, proses diatas akan menghasilkan sebuah file di dalam folder D:\OprekLAMW\lazandroidmodulewizard-master\demos\GUI\AppCompatBottomNavigationDemo1\build\outputs\bundle\release dengan nama AppCompatBottomNavigationDemo1-release.aab. Dan selamat anda dapat mempublish projek anda ke Google Play Store. :)


Jumat, 26 Januari 2024

Mengembangkan Aplikasi Android dengan Lazarus Android Module Wizard (LAMW)

Hallo sobat,

Sebelumnya saya sudah pernah membahas cara membuat aplikasi android dengan Free Pascal menggunakan Laz4Android yang dapat anda baca di sini. Pada postingan ini saya akan berbagi trik dan tutorial menjadikan Lazarus IDE agar dapat digunakan untuk mengembangkan aplikasi android. Cara ini agak sedikit berbeda dengan Laz4Android karena compiler dan tools pendukung akan dipasang secara mandiri. Tidak seperti Laz4Android yang sudah menyediakan compiler dan tools pendukung secara otomatis. Selain itu, perkakas pendukung yang digunakan akan lebih terupdate bila dibandingkan dengan postingan sebelumnya. Langkah-langkah ini akan cukup panjang, jadi siapkan kopi dan camilan anda. haha  

Pertama-tama, untuk menyamakan persepsi, silahkan pasang Lazarus versi 2.2.4 menggunakan Free Pascal 3.2.2 di komputer anda. Kemudian download Lazarus Android Module Wizard (LAMW). Berikutnya download Java 17 melalui laman Zulu. Kemudian download build tools Gradle 7.6.3. Selanjutnya download build tools Apache Ant apache-ant-1.10.14. Berikutnya download Android Native Development Kit android-ndk-r21e. 

Saya sangat menyarankan agar anda mengelompokan perkakas pendukung tersebut di dalam sebuah folder agar lebih rapih, misal di folder (D:\OprekLAMW)

Berikutnya, kita memerlukan Android Software Development Kit (SDK). Sayangnya, saat postingan ini ditulis, Android SDK hanya dapat diperoleh dengan menginstall Aplikasi Android Studio. Jadi untuk kebutuhan tersebut, kita terpaksa harus menginstall Aplikasi Android Studio untuk mendapatkan Android SDK. Pada tutorial ini saya menggunakan android-studio-2023.1.1.27-windows. Lakukan pengaturan melalui SDK Manager. Sebaiknya mengganti Android SDK Location ke folder yang telah disepakati sebelumnya D:\OprekLAMW\Sdk. Kemudian pasang SDK Platforms dan SDK Tools yang akan digunakan nantinya. Jika diperlukan install semuanya kecuali System Image. :D

Berikutnya adalah install Java 17 (zulu17.44.15-ca-jdk17.0.8-win_x64) kemudian tambahkan variabel baru dalam System Variables Windows (Variable Name=JAVA_HOME, Variable Value=C:\Program Files\Zulu\zulu-17). Selanjutnya dalam Path Variable tambahkan %JAVA_HOME%\bin dan folder Gradle D:\OprekLAMW\gradle-7.6.3\bin. 

Selanjutnya adalah install Package Lazarus Android Module Wizard (LAMW) di Lazarus IDE anda. adapun urutan pemasangannya adalah tfpandroidbridge_pack.lpk (di dalam folder "..../android_bridges") kemudian lazandroidwizardpack.lpk (di dalam folder "..../android_wizard") dan terakhir amw_ide_tools.lpk (di dalam folder "..../ide_tools"). Pastikan tidak ada masalah dalam proses pemasangan package LAMW. 

Berikutnya adalah menambahkan Build Tools Android (armV7a dan aarch64) ke dalam Lazarus IDE. Download terlebih dahulu Source Code FPC. Ekstrak dan letakan di dalam folder yang telah disepakati sebelumnya (D:\OprekLAMW\source-main). Berikut adalah perkakas yang telah berhasil dikumpulkan dalam folder tersebut. 

Tauhidslab

Selanjutnya di aplikasi Lazarus IDE akses menu Tools - [LAMW] Lazarus Module Wizard - Build FPC Cross Android. Konfigurasikan Pathnya sbb:

Tauhidslab

Proses Build cukup lama tunggu sampai selesai! Setelah itu masuk ke Tab Install kemudian klik tombol Install. Jika tidak ada kesalahan maka Android Build Tools armV7a telah berhasil terpasang di Lazarus IDE. Ulangi langkah tersebut untuk Architecture aarch64. 

Langkah Berikutnya adalah melakukan sedikit pengaturan Path perkakas pendukung melalui menu Tools - [LAMW] Lazarus Module Wizard - Path Settings [Jdk, Sdk, Ndk...]. Konfigurasikan Path-nya sebagai berikut:

Tauhidslab

Langkah terakhir, edit file fpc.cfg di dalam folder (D:\lazarus\fpc\3.2.2\bin\x86_64-win64). Ubah script pada baris ke 158-160 menjadi sbb:

# searchpath for units and other system dependent things
-FuD:\lazarus\fpc\3.2.2/units/$fpctarget
-FuD:\lazarus\fpc\3.2.2/units/$fpctarget/*
-FuD:\lazarus\fpc\3.2.2/units/$fpctarget/rtl

Setelah selesai, Lazarus IDE sudah siap digunakan untuk mengembangkan aplikasi Android. Pada contoh ini pengujian akan dilakukan dengan mengcompile projek AppCompatNavigationDrawerDemo1 di dalam folder demos, buka folder jni - controls.lpi. 

Setelah projek terbuka (Jika ada dialog konfirmasi, pilih yes/ok/confirm/create), akses menu Project - Project Options... Pilih [LAMW] Android Project Options - Build - Chipset ARMV7a+Soft atau Aarch64 (Chipset/Architecture yang telah dipasang pada tahap sebelumnya). Pada Tab Android Manifest dan Application silahkan sesuaikan sesuai kebutuhan anda.  

Untuk melakukan kompilasi, akses menu Run - [LAMW] Build Android Apk and Run Ctrl+F1. 
 
Pada saat kompilasi, saya menemukan beberapa Error sbb:

1. Pada file Laz_XMLStreaming.pas baris ke 79 saya ubah menjadi sbb: 

procedure WriteString(const Value: String); //override;

2. Pada file UITypes.pas baris 93 saya ubah menjadi sbb:
  
ModalResultStr: array[mrNone..mrClose] of shortstring = (
    'mrNone',
    'mrOk',
    'mrCancel',
    'mrAbort',
    'mrRetry',
    'mrIgnore',
    'mrYes',
    'mrNo',
    'mrAll',
    'mrNoToAll',
    'mrYesToAll',
    'mrClose'); 

3. Pada file LResources.pp baris 294 saya ubah menjadi sbb:

procedure WriteString(const Value: String); //override;

4. Pada file Dialogs.pp baris 805 saya ubah menjadi sbb:

DialogResult : Array[mrNone..mrClose] of Longint = (
    -1, idButtonOK, idButtonCancel, idButtonAbort, idButtonRetry,
    idButtonIgnore, idButtonYes,idButtonNo, idButtonAll, idButtonNoToAll,
    idButtonYesToAll,idButtonClose);  

Setelah menyelesaikan 4 error diatas, proses kompilasi berjalan normal (pastikan komputer terhubung ke internet). Untuk diketahui saya tidak menggunakan Emulator tapi langsung menyambungkan komputer ke perangkat Android melalui USB dan mode Debug. Berikut hasil kompilasi pada jendela Message di Lazarus IDE.  

Tauhidslab

Kemudian di sisi perangkat android perlu dilakukan konfirmasi (setuju) pada proses pemasangan. Berikut adalah hasil kompilasi yang diperoleh 

Tauhidslab

Sekian tutorial dan tips kali ini, silahkan kembangkan kemampuan anda dengan mencoba mengkompilasi projek yang ada di folder demos kemudian buatlah sebuah projek secara mandiri agar kemampuan menjadi lebih terasah. Akhir kata selamat berkreasi menggunakan Free Pascal, Lazarus IDE dan Lazarus Android Module Wizard (LAMW). #cheers :)


Kamis, 25 Januari 2024

Memprogram Whatsapp Web dengan Free Pascal Lazarus

Hallo teman-teman, 

Pada postingan ini saya ingin berbagi sedikit pengetahuan tentang cara memprogram Whatsapp Web menggunakan bahasa pemrograman Free Pascal dan Lazarus IDE. Umumnya, memprogram Whatsapp dikenal juga dengan dengan istilah Aplikasi Whatsapp (WA) Automation atau Whatsapp Bot. Tidak masalah istilah mana yang akan anda gunakan. Intinya, aplikasi dapat mengambil dan mengirimkan pesan secara otomatis dari antarmuka aplikasi. 

Pertama-tama, untuk menyamakan persepsi, pada contoh ini saya menggunakan Free Pascal versi 3.2.2 dan Lazarus 2.2.4. Selanjutnya, kita memerlukan 2 buah package tambahan yaitu package CEF4Delphi yang bertugas sebagai Web Browser untuk membuka WhatsApp Web dan package wbot-modified sebagai antarmuka aplikasi dengan Browser. Sebelum memasang kedua package tersebut pastikan anda sudah memasang package dcpcrypt_laz yang dapat ditemukan melalui menu Package - Install/Uninstall Package di aplikasi Lazarus IDE. Berikutnya pasang package CEF4Delphi kemudian dilanjutkan dengan wbot-modified.

Sampai di sini sebenarnya anda sudah dapat membuat projek baru untuk memprogram Whatsapp Web. sebagai perkenalan, anda dapat mencompile contoh projek yang saya buat di folder demo dalam package wbot-modified. Berikut adalah tampilannya.  

Tauhidslab

Harap perhatikan bahwa agar aplikasi dapat berjalan dengan baik, download terlebih dahulu file CEF Binary. Link download dapat dilihat pada laman CEF4Delphi. Silahkan sesuaikan file binary yang akan anda download dengan spesifikasi perangkat dan OS yang anda gunakan, misal Windows 64 bits. Ekstrak file hasil download kemudian pisahkan beberapa file berikut dan letakan di dalam folder projek. Terakhir, karena dalam proses ini kita akan memproses request dari situs https, jadi kita memerlukan library openssl untuk windows silahkan download di sini.

Tauhidslab

Sebagai informasi tambahan, jika anda membuat projek baru, jangan lupa menambahkan unit-unit milik package wbot-modified di dalam unit projek anda. Selain itu, anda perlu menambahkan beberapa baris kode di dalam file *.lpr projek anda agar dapat menjalankan package CEF. Untuk lebih jelasnya silahkan lihat di file wbotdemo.lpr dan umain.pas di dalam projek demo folder wbot-modified.

Selamat dan Semangat Ngoprek :D

Jumat, 16 Juni 2023

Koneksi Aplikasi Lazarus Free Pascal Dengan Mikrotik RouterOS

Hallo semua, udah beberapa bulan gak posting nih karena kesibukan yang tidak bisa diprediksi. hehe

Pada postingan ini saya akan berbagi sedikit trik cara menghubungkan aplikasi yang dibangun menggunakan bahasa Free Pascal atau Lazarus IDE dengan Mikrotik alias RouterOS. Sebelumnya sudah ada yang membuat unit serupa yang dapat digunakan untuk keperluan koneksi ke Mikrotik melalui Pascal. Namun demikian, saya merasa unit tersebut masih belum cukup familiar untuk pemula. Apalagi panduan penggunaan masih minim di internet. cek di sini. 

Tauhidslab

Kemudian saya membuat sebuah unit yang lebih sederhana dan user friendly untuk berkomunikasi dengan RouterOS melalui aplikasi Free Pascal alias Lazarus. Namun masih dependency dengan unit yang saya sebutkan pada paragraf sebelumnya. Singkatnya adalah unit yang saya buat merupakan implementasi dari unit tersebut. 

Lantas apa yang beda? menurut saya ada 2 yaitu lebih user friendly dan sederhana. hehe. Silahkan dibuktikan sendiri. Unit serta panduan penggunaanya sudah saya tulis di github silahkan cek mikrotik api free pascal. 

Jumat, 24 Februari 2023

Membuat File PDF Dari String HTML di Cordova Android

Portable Document Format (*.PDF) seringkali menjadi pilihan dalam menyajikan informasi dalam bentuk file, apalagi untuk informasi yang dibutuhkan secara rutin seperti laporan harian, mingguan atau bulanan. Selain karena format yang sederhana karena hampir semua platform menyediakan aplikasi pendukung untuk membuka file ini, file PDF dinilai lebih aman dari virus.


Kali ini saya ingin berbagi plugin cordova yang saya buat untuk mengkonversi HTML menjadi PDF. Plugin ini merupakan implementasi dari Library Java yaitu Itext HTML2PDF sehingga plugin ini hanya tersedia untuk android. 

Sebenarnya, ada banyak plugin cordova yang dapat digunakan untuk membuat file PDF. Bahkan telah mendukung lintas platform. Namun demikian, saya sengaja membuat plugin ini dengan tujuan sebagai pembelajaran bagi saya pribadi untuk mengetahui langkah-langkah mengkonversi HTML menjadi PDF melalui aplikasi android yang dibuat menggunakan Cordova. 

Plugin ini menyedian dua buah opsi untuk mengkonversi HTML menjadi PDF yaitu String dan File. Pada proses pengujian yang saya lakukan opsi konversi String HTML menjadi PDF berjalan normal di Android 12. Namun demikian, untuk opsi File HTML terjadi masalah permission file. 

Plugin ini telah saya publikasikan di repository online github dan npmjs. Untuk panduan penggunaannya silahkan buka file readme. Semoga bermanfaat.