Tutorial Cross Platform Mobile Application untuk Penjualan menggunakan Intel XDK

Project Waroeng XDK
Project Waroeng XDK
Tutorial Cross Platform Mobile Application menggunakan Intel XDK yang akan kita pelajari berikut adalah membuat aplikasi untuk warung kecil dengan fungsi pencatatan penjualan sehingga penjual akan dengan mudah mencatat dan melihat laporan penjualan yang dilakukan tiap harinya.

Waroeng XDK Halaman Jual
Halaman Jual

Warong XDK Pilih Menu
Pilih Menu

Waroeng XDK Menu Option
menu Options

Waroeng XDK Halaman Input Daftar Menu
Halaman Input Daftar Menu

Waroeng XDK Halaman Laporan
Halaman Laporan


hal yang akan kita pelajari :
  1. Membuat project menggunakan intel xdk
  2. Membuat page dengan rincian page Penjualan, page Input Data Menu dan page Laporan
  3. Mengatur Interactivity / Event Handler
  4. Coding Logic dan penyimpanan ke database websql sebagai basis datanya
  5. Build menjadi apk dan menyebarkannya. 

1. Membuat Project Menggunakan Intel XDK

buat dulu sebuah project baru menggunakan template blank dengan type HTML + Cordova project, pastikan opsi use App Designer sudah anda aktifkan (centang)

2. Membuat Page Penjualan

Waroeng XDK Design Halaman Jual
  • Tambahkan Header dan Footer, beri title sesuai keinginan Anda
  • Tambahkan Tombol Menu menggunakan komponen Button pada sebelah kiri Header beri Id btnShowMenu
  • tambahkan Tombol Opsi menggunakan komponen Button pada sebelah kanan Header beri Id btnShowOpsi
  • Tambahkan row dan isi dengan list pada bagian tengah halaman, hapus item pada listnya dan sisakan satu saja dan beri id itemDetailJual atur properties nya seperti gambar berikut

  • Bawah list tambahkan text beri id txtTotalJual atur style textnya sesuai keinginan
  • Bawah text total tambahkan 2 tombol, gunakan button group dan hapus salah satu tombolnya beri nama tombolnya masing-masing btnSimpan dan btnClear
  • Tambahkan text lagi pada bagian bawah dan isi dengan petunjuk cara penggunaan aplikasi ini
  • Berikutnya untuk memilih menu yang dijual tambahkan sebuah side menu pada bagian kiri halaman menggunakan komponen Animated Sidebar Left dan beri id menuSamping isi dengan row terlebih dahulu dan tambahkan :
    • input untuk pencarian beri id txtSearchMenu
    • list untuk daftar menu hapus item dan sisakan satu beri id itemMenu
    • button untuk menutup side menu beri id btnCloseMenu


  • Tambahkan lagi Animated Sidebar tapi yang Right berfungsi untuk menempatkan menu Input Daftar menu yang dijual dan menu Laporan, gunakan list untuk menunya
    • item Daftar Menu beri id mnDaftarMenu
    • item Laporan beri id mnLaporan
    • item Keluar beri id mnKeluar
    • tombol untuk tutup menu opsi beri id btnCloseOpsi 



  •  Tambahkan komponen popup kedalam halaman jual ini, yang berfungsi untuk menampung pilihan menu edit jumlah barang ,edit harga dan hapus barang jika item jual di tap. Beri id popupEdit dan tambahkan tiga tombol dalam popup ini :
    • Tombol Edit jumlah beri id btnEditJumlah
    • Tombol Edit Harga beri id btnEditHarga
    • Tombol Hapus dan beri id btnEditHapus



  •   Berikutnya buat Page baru lewat tombol New Page yang ada pada panel Pages beri nama menupage kemudian isi dengan control seperti berikut

  • Tambahkan Input Menu pada page ini dan beri id txtNamaMenu
  • Tambahkan Input Harga dan beri id txtHargaMenu
  • Tambahkan Tombol untuk simpan dan beri id btnSimpanMenu
  • Tambahkan List untuk menampilkan data Menu yang sudah tersimpan, hapus itemnya dan tinggalkan satu beri id itemDataMenu
  • Atur item data menu dengan properties seperti berikut 
  • Berikutnya buat halaman ke tiga untuk laporan, dengan nama laporanpage dengan tampilan seperti berikut

  •  Gunakan komponen Collapsible dan beri id panelLap kemudian isikan List pada panel body nya, hapus itemnya dan sisakan satu beri nama itemLap

3. Mengatur Interactivity / Event Handler 

Langkah berikutnya adalah mengatur Interactivity atau event ketika sebuah tombol atau menu di tap/click dia mau ngapain, misal ketika tombol btnShowMenu di click maka akan memunculkan side menu, maka langkahnya cari kontrol btnShowMenu pada panel Interactivity (biasanya ada di kanan bawah) pilih menu dropdownnya kemudian pilih opsi menuSamping, sedangkan untuk menutup kembali side menu cari btnCloseMenu dan pilih juga opsi menuSamping.

Lakukan juga untuk tombol btnShowOpsi pilih menuOpsi untuk memunculkan side Menu yang sebelah kanan. Sedangkan untuk mengakses halaman lain tinggal cari mnDaftarMenu set actien ke menupage dan mnLaporan ke laporanpage

pada tahap ini harusnya anda sudah bisa mencoba aplikasi anda lewat emulator dan ketika anda klik tombol menu akan keluar side daftar menu dan ketika anda klik tombol opsi akan keluar side menu disebelah kanan yang isinya tombol daftar menu, laporan dan keluar. ketika di klik tombol daftar menu akan berpindah ke halaman daftar menu, begitu pula kalau di klik menu laporan akan diarahkan ke halaman laporan.

Pada halaman daftar menu tambahkan tombol back pada header dan set actionnya ke mainpage agar kembali ke halaman utama. sedangkan tombol yang lain seperti tombol simpan dan batal pakai custom script saja sehingga nanti kita bisa menuliskan codenya sendiri secara manual.

4. Coding Logic dan penyimpanan ke database websql sebagai basis datanya
Buka file index_user_script.js yang ada di dalam folder js kemudian tambahkan code berikut pada bagian atas sendiri yang berfungsi untuk membuat database, struktur tabel dan mengisi tabel menu dengan daftar menu default,

var db = null;
function OpenDB(){
    try
    {
        db = openDatabase("waroeng.db","1.0","waroeng db",2*1024*1024);
    }
    catch(e)
    {
        alert(e);
    }
    if(localStorage.getItem("createTable")==null)
    {
        db.transaction(function(tx){
            //buat tabel menu
            tx.executeSql("CREATE TABLE IF NOT EXISTS menu (nama TEXT PRIMARY KEY,harga INTEGER)");
            //isi menu awal
            tx.executeSql("INSERT INTO menu VALUES('Mie Ayam',5000)");
            tx.executeSql("INSERT INTO menu VALUES('Bakso',5000)");
            tx.executeSql("INSERT INTO menu VALUES('Mie Ayam Bakso',8000)");
            tx.executeSql("INSERT INTO menu VALUES('Es Teh',2000)");
            //buat tabel jual dan detail
            tx.executeSql("CREATE TABLE IF NOT EXISTS jual (nota INTEGER PRIMARY KEY AUTOINCREMENT, tanggal TEXT, total INTEGER)");
            tx.executeSql("CREATE TABLE IF NOT EXISTS detail (nota INTEGER, nama TEXT, harga INTEGER, jumlah INTEGER)");

            localStorage.setItem("createTable","OK");
        });
    }

}; // end opendb


kemudian buat function dibawahnya untuk meload data menu pada page daftar menu

function loadDataMenu(){
    var listDataMenu = $("#listDataMenu");
    var itemDataMenu = listDataMenu.data("templatesItem");
   
    listDataMenu.html("");
   
    db.transaction(function(tx){
        tx.executeSql('SELECT * FROM menu',[],
        function(tx,result){
            for(i=0;i<result.rows.length;i++){
                var nama = result.rows.item(i).nama;
                var harga = result.rows.item(i).harga;
                //tambah item data
                var newItem = itemDataMenu.clone().appendTo(listDataMenu);
                newItem.find("h4").html(nama)
                newItem.find("p").html(harga);
            }
           
            //bind event
            listDataMenu.find("a").unbind().click(function(){
                var item = $(this);
                var nama = item.find("h4").html();
                //hapus menu item
                db.transaction(function(tx){
                    tx.executeSql("DELETE FROM menu WHERE nama=?",[nama],
                    function(tx,result){
                        if(result.rowsAffected>0){
                            $(item).fadeOut();
                            loadMenu();
                        }
                    },
                    function(tx,err){
                        console.log("ERROR DELETE MENU");
                        console.log(err);
                    });
                });
            });
        },
        function(tx,err){
            console.log(err);
        });
    });
}; //end loadDataMenu

 Tambahkan juga fungsi untuk meload data menu yang akan diletakkan pada sidemenu
function loadMenu(){
    var listMenu = $("#listMenu");
    var itemMenu = listMenu.data("templatesItem");
   
    listMenu.html("");
   
    db.transaction(function(tx){
        tx.executeSql('SELECT * FROM menu',[],
        function(tx,result){
            for(i=0;i<result.rows.length;i++){
                var nama = result.rows.item(i).nama;
                var harga = result.rows.item(i).harga;
                //tambah item menu
                var newItem = itemMenu.clone().appendTo(listMenu);
                newItem.find("h4").html(nama);
                newItem.find("p").html(harga);
            }
           
            //bind event
            listMenu.find("a").unbind().click(function(){
                var nama = $(this).find("h4").html();
                var harga = $(this).find("p").html();
                var nota = localStorage.getItem("curnota");
                db.transaction(function(tx){
                    tx.executeSql("SELECT * FROM detail WHERE nota=? AND nama=?",[nota,nama],
                    function(tx,result){
                        if(result.rows.length>0){
                            //sudah ada
                            tx.executeSql("UPDATE detail SET jumlah=jumlah+1 WHERE nota=? AND nama=?",[nota,nama],
                            function(tx,result){
                                $("#listDetailJual>a").each(function(){
                                   var detNama = $(this).find("h4").html();
                                    if(detNama===nama){
                                        var jumlahLama = $(this).data("jumlah");
                                        jumlahLama++;
                                        $(this).data("jumlah",jumlahLama);
                                        $(this).find("p").html(jumlahLama + " x " + $(this).data("harga"));
                                        var totalBaru = jumlahLama * $(this).data("harga");
                                        $(this).find(".badge").html("Rp " + totalBaru);
                                       
                                        hitungTotal();
                                    }
                                });
                            },
                            function(tx,error){
                                console.log(error);
                            });
                        }else{
                            //blom ada
                            tx.executeSql("INSERT INTO detail VALUES (?,?,?,1)",[nota,nama,harga],
                            function(tx,result){
                                var listDetailJual = $("#listDetailJual");
                                var itemDetailJual = listDetailJual.data("templatesItem");
                                var newDetail = itemDetailJual.clone().appendTo(listDetailJual);
                                newDetail.find("h4").html(nama);
                                newDetail.find("p").html("1 x Rp " + harga);
                                newDetail.find(".badge").html("Rp " + harga);
                                newDetail.data("jumlah",1);
                                newDetail.data("harga",harga);
                                newDetail.slideDown();

                                hitungTotal();

                            },
                            function(tx,error){
                                console.log(error);
                            });
                        }
                    },
                    function(tx,error){
                        console.log(error);
                    });
                   
                });
            });
        },
        function(tx,err){
            console.log(err);
        });
    });
}; //end loadMenu

Berikutnya tambahkan menu untuk buat transaksi baru / meload transaksi lama beserta detailnya untuk ditampilkan dalam halaman utama
 function loadTransaksi(){
    if(localStorage.getItem("curnota")==null){
        newTransaksi();
    }else{
        loadDataTransaksi();
    }
   
}; //end loadTransaksi

function newTransaksi(){
    //transaksi baru
    db.transaction(function(tx){
        tx.executeSql("INSERT INTO jual (tanggal) VALUES (?)",[new Date().toISOString().substr(0,10)],
        function(tx,result){
            if(result.rowsAffected==1){
                localStorage.setItem("curnota", result.insertId);
                loadDataTransaksi();
            }
        },
        function(tx,error){
            console.log(error);
        });
    });
}; //end transaksi baru

function loadDataTransaksi(){
    var listDetailJual = $("#listDetailJual");
    var itemDetailJual = listDetailJual.data("templatesItem");
    listDetailJual.html("");
   
    db.transaction(function(tx){
        tx.executeSql("SELECT * FROM detail WHERE nota=?",[localStorage.getItem("curnota")],
        function(tx,result){
           
            for(i=0;i<result.rows.length;i++){
                var nama = result.rows.item(i).nama;
                var harga = result.rows.item(i).harga;
                var jumlah = result.rows.item(i).jumlah;
               
                var newDetail = itemDetailJual.clone().appendTo(listDetailJual);
                newDetail.find("h4").html(nama);
                newDetail.find("p").html(jumlah + " x Rp " + harga);
                var total = jumlah * harga;
                newDetail.find(".badge").html("Rp " + total);
                newDetail.data("jumlah",jumlah);
                newDetail.data("harga",harga);
                newDetail.show();
            }
           
            hitungTotal();
           
        },
        function(tx,error){
            console.log(error);
        });
    });
   
} //end loadDataTransaksi

Tambahkan pula function untuk menghitung total penjualan pada halaman utama
function hitungTotal(){
    var totalBayar = 0;
    $("#listDetailJual > a").each(function(index){
        totalBayar += $(this).data("jumlah") * $(this).data("harga");
    });
    $("#txtTotalJual").find("p").html("Total : Rp " + totalBayar);
    $("#txtTotalJual").data("total",totalBayar);
}; // end hitungtotal

Tambahkan function untuk menampilkan data laporan
function loadLaporan(){
    db.transaction(function(tx){
        tx.executeSql("SELECT tanggal,SUM(total) AS gtotal FROM jual GROUP BY tanggal ORDER BY tanggal DESC",[],
        function(tx,result){
            var containerLap = $("#containerLap");
            var panelLap = containerLap.data("panelLap");
            containerLap.html("");
           
            for(var i=0;i<result.rows.length;i++){
                var tanggal = result.rows.item(i).tanggal;
                var gtotal = result.rows.item(i).gtotal;
                var newLap = panelLap.clone().appendTo(containerLap).attr("data-date",tanggal);
                newLap.find(".panel-title > a").html(tanggal);
                newLap.find(".panel-lap-total").html("Rp " + gtotal);
               
                newLap.find(".panel-collapse").attr("id","lap-" + tanggal);
                newLap.find(".accordion-toggle").attr("href","#lap-" + tanggal);
               
                if(i==result.rows.length-1){
                    newLap.addClass("has-footer");
                }
               
                var itemLap = newLap.find("#itemLap");
                var listLap = itemLap.parent().attr("id","listLap" + tanggal).data("templatesItem",itemLap);
                listLap.html("");
               
                tx.executeSql("SELECT * FROM jual WHERE tanggal=? AND total NOT NULL",[tanggal],
                function(tx,resultDetail){
                    for(var j=0;j<resultDetail.rows.length;j++){
                        var listLap = $("#listLap" + resultDetail.rows.item(j).tanggal);
                        var itemLap = listLap.data("templatesItem");
                        var newItem = itemLap.clone().appendTo(listLap);
                        newItem.find("p").html("Nota : " + resultDetail.rows.item(j).nota);
                        newItem.find(".badge").html("Rp " + resultDetail.rows.item(j).total);
                    }  
                },
                function(tx,error){
                    console.log(error);
                });
               
            }
        },
        function(tx,error){
            console.log(error);
        });
    });
}; //end loadLaporan

setelah itu tambahkan function untuk setting apa aja yang akan dipanggil ketika aplikasi dijalankan / on load
 function loadAwal(){
    //buka database
    OpenDB();
   
    //sembunyikan temp menu
    var itemMenu = $("#itemMenu");
    var listMenu = itemMenu.parent().attr("id","listMenu");
    listMenu.data("templatesItem",itemMenu);
    loadMenu();
   
    //sembunyikan temp detail jual
    var itemJual = $("#itemDetailJual");
    var listJual = itemJual.parent().attr("id","listDetailJual");
    listJual.data("templatesItem",itemJual);
    listJual.html("");
    $("#txtTotalJual").find("p").html("Total : Rp 0");
    $("#txtTotalJual").data("total",0);
   
    loadTransaksi();
   
    //sembunyikan temp data menu di halaman daftar menu
    var itemDataMenu = $("#itemDataMenu");
    var listDataMenu = itemDataMenu.parent().attr("id","listDataMenu");
    listDataMenu.data("templatesItem",itemDataMenu);   
    loadDataMenu();
   
    //sembunyikan temp laporan
    /*var itemLap = $("#itemLap");
    var listLap = itemLap.parent().attr("id","listLap");
    listLap.data("templatesItem",itemLap);
    listLap.html("");*/
    var panelLap = $("#panelLap");
    var containerLap = panelLap.parent().attr("id","containerLap");
    containerLap.data("panelLap",panelLap);
    containerLap.html("");
    loadLaporan();
   
} //end load awal

Setelah function load awal dibuat panggil function tersebut pada saat app.ready / sebelum event handler sehingga isi function event handler seperti ini
(function()
{
 "use strict";
 /*
   hook up event handlers
 */
 function register_event_handlers()
 {  
 
    loadAwal();
   
    
    $(document).on("change","#txtSearchMenu",function(){
        var cari = $("#txtSearchMenu").val().toUpperCase();
        $("#listMenu>a").each(function(){
            if($(this).find("h4").html().toUpperCase().indexOf(cari)>=0){
                $(this).show();
            }else{
                $(this).hide();
            }
        });
    });
    
   
     /* listitem  3 x Rp 5.000 */
    $(document).on("click", ".uib_w_6", function(evt)
    {
         /* Other options: .modal("show")  .modal("hide")  .modal("toggle")
         See full API here: http://getbootstrap.com/javascript/#modals
            */
       
         $("#popupEdit").modal("toggle"); 
       
        var item = $(this);
        var nama = $(this).find("h4").html();
        var jumlah = $(this).data("jumlah");
        var harga = $(this).data("harga");
       
       
        $("#btnEditJumlah").unbind().click(function(){
            $("#popupEdit").modal("hide");
            jumlah = prompt("Masukkan jumlah jual...!",jumlah);
            db.transaction(function(tx){
                tx.executeSql("UPDATE detail SET jumlah=? WHERE nota=? AND nama=?",[jumlah,localStorage.getItem("curnota"),nama],
                function(tx,result){
                    if(result.rowsAffected>0){
                        item.data("jumlah", jumlah);
                        item.find("p").html(jumlah + " x Rp " + harga);
                        var total = jumlah * harga;
                        item.find(".badge").html("Rp " + total);
                        hitungTotal();
                    }
                },
                function(tx,error){
                    console.log(error);
                });
                             
            });
           
        });
       
        $("#btnEditHarga").unbind().click(function(){
            $("#popupEdit").modal("hide");
            harga = prompt("Masukkan harga jual...!",harga);
            db.transaction(function(tx){
                tx.executeSql("UPDATE detail SET harga=? WHERE nota=? AND nama=?",[harga,localStorage.getItem("curnota"),nama],
                function(tx,result){
                    if(result.rowsAffected>0){
                        item.data("harga",harga);
                        item.find("p").html(jumlah + " x Rp " + harga);
                        var total = jumlah * harga;
                        item.find(".badge").html("Rp " + total);
                        hitungTotal();
                    }
                },
                function(tx,error){
                    console.log(error);
                });
            });
        });
       
        $("#btnEditHapus").unbind().click(function(){
            db.transaction(function(tx){
                tx.executeSql("DELETE FROM detail WHERE nota=? AND nama=?",[localStorage.getItem("curnota"),nama],
                              function(tx,result){
                    if(result.rowsAffected > 0){
                        $("#popupEdit").modal("hide");
                        item.remove();
                        hitungTotal();
                    }
                },function(tx,error){
                    console.log(error);
                });
            });
        });
       
    });
   
        /* button  #btnCloseMenu */
    $(document).on("click", "#btnCloseMenu", function(evt)
    {
         /* Other possible functions are:
           uib_sb.open_sidebar($sb)
           uib_sb.close_sidebar($sb)
           uib_sb.toggle_sidebar($sb)
            uib_sb.close_all_sidebars()
          See js/sidebar.js for the full sidebar API */
       
         uib_sb.toggle_sidebar($("#menuSamping"));
       
    });
   
        /* button  #btnShowMenu */
    $(document).on("click", "#btnShowMenu", function(evt)
    {
         /* Other possible functions are:
           uib_sb.open_sidebar($sb)
           uib_sb.close_sidebar($sb)
           uib_sb.toggle_sidebar($sb)
            uib_sb.close_all_sidebars()
          See js/sidebar.js for the full sidebar API */
       
         uib_sb.toggle_sidebar($("#menuSamping")); 
    });
   
        /* button  #btnShowOpsi */
    $(document).on("click", "#btnShowOpsi", function(evt)
    {
         /* Other possible functions are:
           uib_sb.open_sidebar($sb)
           uib_sb.close_sidebar($sb)
           uib_sb.toggle_sidebar($sb)
            uib_sb.close_all_sidebars()
          See js/sidebar.js for the full sidebar API */
       
         uib_sb.toggle_sidebar($("#mnOpsi")); 
    });
   
        /* button  #btnCloseOpsi */
    $(document).on("click", "#btnCloseOpsi", function(evt)
    {
         /* Other possible functions are:
           uib_sb.open_sidebar($sb)
           uib_sb.close_sidebar($sb)
           uib_sb.toggle_sidebar($sb)
            uib_sb.close_all_sidebars()
          See js/sidebar.js for the full sidebar API */
       
         uib_sb.toggle_sidebar($("#mnOpsi")); 
    });
   
        /* listitem  #mnDaftarMenu */
    $(document).on("click", "#mnDaftarMenu", function(evt)
    {
        activate_page("#menupage");
        uib_sb.toggle_sidebar($("#mnOpsi"));
    });
    
        /* button  #btnBack */
    $(document).on("click", "#btnBack", function(evt)
    {
         activate_page("#mainpage");
    });
   
        /* button  #btnSimpanMenu */
    $(document).on("click", "#btnSimpanMenu", function(evt)
    {
        var nama = $("#txtNamaMenu").val();
        var harga = $("#txtHargaMenu").val();
       
        if(nama!="" && harga!=""){
            db.transaction(function(tx){
                tx.executeSql("INSERT INTO menu VALUES(?,?)",[nama,harga],
                function(tx,result){
                    if(result.rowsAffected==1){
                       
                        $("#txtNamaMenu").val("");
                        $("#txtHargaMenu").val("");
                        loadDataMenu();
                        loadMenu();
                       
                       
                    }
                },
                function(tx,error){
                    console.log(error);
                });
            });
        }else{
            alert("Isikan nama menu dan harga...!");
        }
       
    });
   
        /* button  #btnSimpan */
    $(document).on("click", "#btnSimpan", function(evt)
    {
        db.transaction(function(tx){
            tx.executeSql("UPDATE jual SET tanggal=?,total=? WHERE nota=?",[new Date().toISOString().substr(0,10), $("#txtTotalJual").data("total"),localStorage.getItem("curnota")],
            function(tx,result){
                if(result.rowsAffected>0){
                    newTransaksi();
                }
            },
            function(tx,error){
                console.log(error);
            });
        });
       
        if(window.admob){
            window.admob.showFullScreenAd();
        }
    });
   
        /* button  #btnClear */
    $(document).on("click", "#btnClear", function(evt)
    {
        db.transaction(function(tx){
            tx.executeSql("DELETE FROM detail WHERE nota=?",[localStorage.getItem("curnota")],
            function(tx,result){
                loadDataTransaksi();
            },
            function(tx,error){
                console.log(error);
            });
        });
    });
   
        /* listitem  #mnKeluar */
    $(document).on("click", "#mnKeluar", function(evt)
    {
        navigator.app.exitApp();
    });
   
        /* listitem  #mnLaporan */
    $(document).on("click", "#mnLaporan", function(evt)
    {
       
         activate_page("#laporanpage");
        loadLaporan();
        uib_sb.toggle_sidebar($("#mnOpsi"));
    });
   
        /* button  #btnBackFromLaporan */
    $(document).on("click", "#btnBackFromLaporan", function(evt)
    {
         activate_page("#mainpage");
    });
   
    }   
 document.addEventListener("app.Ready", register_event_handlers, false);
})();

Perhatikan pada bagian atas function event handler ada pemanggilan loadAwal(); dan sesuaikan isi function untuk tombol simpan dan tombol batalnya seperti contoh script yang ada di atas.


5. Build menjadi apk dan menyebarkannya. 

Bagian terakhir jika sudah berjalan dengan baik silahkan masuk tab build dan pilih mau dijadikan aplikasi apa project ini, jika ingin dijadikan aplikasi android silahkan pilih android, proses ini membutuhkan koneksi internet karena project akan di upload ke server intel xdk dan di build disana setelah itu kita akan dikirim hasil apk nya lewat email.



Contoh Source Code Project Waroeng XDK ini bisa di Download di SINI

Sekian semoga bermanfaat
Terimakasih
First
5 Komentar
avatar

waduuuuhhh..pusing juga ya' gan...soalnya ane gaptek 1000%...he...he...tapi pingin bisa ....Sharing dong ....ane lagi ngerintis mau bikin aplikasi mengenai pembayaran online...

Balas
avatar

bagaimana cara menempelkan button pada header? d intel xdk saya tidak bisa. tolong penjelasannya. terimakasih banyak

Balas
avatar

om link nya rusak, gk bisa download

Balas
avatar

om kok linknya rusak ya ...mohon pencerahannya ,,, kirim ke anggacahyo3@gmail.com

Balas