By advertorial on Tag: Intel, MeeGo

การสร้างแอพลิเคชันสำหรับอุปกรณ์ MeeGo นั้น วิธีที่สะดวกที่สุดคือการสร้างแอพลิเคชันด้วย Qt หรือ QML (Qt Quick) เนื่องจากเป็นเฟรมเวิร์กหลักที่ MeeGo สนับสนุน พัฒนาได้ไม่ยากนัก และสามารถนำแอพลิเคชันที่พัฒนาไปทำงานบนแพลตฟอร์มอื่นๆ ได้ง่าย วันนี้เราจะมาแนะนำการสร้างแอพพลิเคชั่นบน MeeGo ด้วย MeeGo SDK ที่รวมเครื่องมือสำหรับการพัฒนาไว้ครบถ้วนแล้ว

ใน MeeGo SDK นั้นประกอบด้วย IDE คือ QtCreator ซึ่งได้ปรับตั้งค่ามาเพื่อให้นักพัฒนาสามารถสร้างโปรเจกต์ และทดสอบแอพลิเคชันบน MeeGo ได้ทันที นอกจากนี้ยังมีไลบรารีเสริมในส่วน Qt Mobility ซึ่งเป็นชุดคำสั่งที่ใช้ความสามารถต่างๆ ของอุปกรณ์ เช่น ตำแหน่งของผู้ใช้ สถานะการเชื่อมต่อเครือข่าย เซนเซอร์ต่างๆ ได้อีกด้วย

การติดตั้ง MeeGo SDK

ปัจจุบัน MeeGo SDK รุ่นล่าสุดคือรุ่น 1.2 สามารถติดตั้งได้บนวินโดวส์ XP/Vista/7 แบบ 32 บิต และบนลินุกซ์ (ดูดิสทริบิวชันที่สนับสนุน) อย่างไรก็ตาม ขอแนะนำให้ติดตั้งบนวินโดวส์ เพื่อให้แอพลิเคชันที่สร้างขึ้นสามารถใช้ Intel AppUp SDK ได้สะดวก (ซึ่งเราจะกล่าวถึงในบทความตอนถัดไป)

นอกจากนี้ หากต้องการทดสอบแอพลิเคชันด้วยเวอร์ชวลแมชชีน ซีพียูของเครื่องที่ใช้พัฒนาต้องสนับสนุนเทคโนโลยีเวอร์ชวลไลเซชันด้วย สำหรับบนวินโดวส์ทดสอบได้ด้วยโปรแกรม Hardware-Assisted Virtualization Detection Tool ส่วนบนลินุกซ์ให้พิมพ์คำสั่ง cat /proc/cpuinfo ในเทอร์มินัล แล้วสังเกตว่าในส่วน flags มีคำว่า vmx หรือ svm หรือไม่

ขั้นตอนการติดตั้งแบ่งเป็นสามขั้นตอนหลักๆ คือ

  1. ติดตั้ง MeeGo SDK 1.2
  2. ติดตั้ง runtime สำหรับทดสอบแอพลิเคชันด้วยเวอร์ชวลแมชชีน
  3. ติดตั้ง QEMU ซึ่งเป็น emulator สำหรับทดสอบแอพลิเคชัน

ขั้นตอนที่ 1 ติดตั้ง MeeGo SDK 1.2

  1. หากติดตั้งบนวินโดวส์ XP ให้ดาวน์โหลดและติดตั้ง Microsoft Visual C++ 2008 SP1 Redistributable Package ก่อน
  2. ดาวน์โหลดชุดติดตั้งจากเว็บไซต์สำหรับนักพัฒนาบน MeeGo
  3. รันชุดติดตั้ง โดยเลือกซิมูเลเตอร์และเลือก target ที่ต้องการทดสอบทั้งหมด (สามารถติดตั้งเพิ่ม/ถอนออกภายหลังได้)
  4. รอจนชุดติดตั้งทำงานเสร็จ โดยระหว่างนี้ต้องเชื่อมต่ออินเทอร์เน็ต และใช้เวลาค่อนข้างนาน ขอแนะนำให้ปิดโหมด sleep อัตโนมัติระหว่างการติดตั้ง

ขั้นตอนที่ 2 ติดตั้ง runtime สำหรับทดสอบแอพลิเคชันบนเวอร์ชวลแมชชีน

สามารถข้ามขั้นตอนนี้ได้ หากไม่ต้องการทดสอบแอพลิเคชันบนเวอร์ชวลแมชชีน

  1. เลือกเมนู MeeGo SDK 1.2 > MADDE Terminal จาก Start menu
  2. พิมพ์คำสั่ง mad-admin list เพื่อดูรายการ target และ runtime ที่ติดตั้งไว้แล้ว และที่สามารถติดตั้งเพิ่มได้
  3. สังเกต target ของเครื่องที่ต้องการทดสอบว่าอยู่ในสถานะ installed แล้วหรือไม่ (โดยปกติหากเลือก target ใดไว้ในขั้นตอนติดตั้ง target นั้นจะอยู่ในสถานะ installed อยู่แล้ว) หากยัง ให้เปิดโปรแกรม Maintain MeeGo SDK ขึ้นมาเพื่อเลือก Targets ที่ต้องการติดตั้ง ซึ่งอยู่ในเมนูโปรแกรม MeeGo SDK 1.2
  4. สังเกต runtime ของเครื่องที่ต้องการทดสอบว่าอยู่ในสถานะ installed แล้วหรือไม่ หากยัง ให้พิมพ์คำสั่ง mad-admin install -r <ชื่อ runtime> เพื่อติดตั้ง runtime ดังกล่าว (เช่น mad-admin create -f meego-tablet-ia32-qemu-1.2.0.90.0.20110517.1-runtime) ระหว่างนี้ต้องเชื่อมต่ออินเทอร์เน็ต
    การติดตั้ง runtime ด้วย MADDE

ขั้นตอนที่ 3 ติดตั้ง QEMU ซึ่งเป็นอีมูเลเตอร์สำหรับทดสอบแอพลิเคชันบนเวอร์ชวลแมชชีน

สำหรับบนลินุกซ์ให้ติดตั้ง QEMU จาก repository ได้เลย ส่วนบนวินโดวส์ให้ติดตั้ง KQEMU โดยทำตามขั้นตอนดังนี้

  1. ดาวน์โหลดโปรแกรม KQEMU

  2. สำหรับผู้พัฒนาบนวินโดวส์ Vista หรือ 7 ให้แก้ไขไฟล์ kqemu.inf โดยนำ .NT ออกจากทุกจุดในไฟล์ ดังนี้

    {syntaxhighlighter brush:plain first-line:27 highlight:[27,31,34,38]}
    [DefaultInstall.NT]
    CopyFiles = KQemu.DriverFiles, KQemu.InfFiles
    AddReg = KQemu.UninstallRegistry

    [DefaultInstall.NT.Services]
    AddService = kqemu,,KQemuService_Inst

    [Uninstall.NT]
    DelFiles = KQemu.DriverFiles, KQemu.InfFiles
    DelReg = KQemu.UninstallRegistry

    [Uninstall.NT.Services]
    DelService = kqemu,0x00000200
    {/syntaxhighlighter}

  3. คลิกขวาที่ไฟล์ kqemu.inf แล้วเลือกเมนู Install

การสร้างโปรเจกต์ QML สำหรับอุปกรณ์ MeeGo

การสร้างโปรเจกต์ทำได้โดยเลือกประเภทโปรเจกต์เป็น Qt Quick Application โดยระหว่างการสร้างโปรเจกต์ในขั้นตอน Qt Versions ให้เลือก Qt Simulator และเลือก MeeGo รุ่นที่ต้องการทดสอบบนเวอร์ชวลแมชชี (เลือกได้มากกว่าหนึ่งอัน)

การสร้างโปรเจกต์

การใช้ชุดคำสั่งในชุด Qt Mobility

การพัฒนาแอพลิเคชันนั้นเราสามารถทำได้โดยใช้ Qt และ QML ตามปกติ อย่างไรก็ตาม หากต้องการเรียกใช้ความสามารถต่างๆ ของอุปกรณ์ สามารถเรียกใช้ชุดคำสั่งในชุด Qt Mobility เพิ่มเติมได้

ชุดคำสั่งในชุด Qt Mobility ทั้งหมดนั้นสามารถดูได้จากเอกสารของ MeeGo SDK บางคำสั่งจะสามารถเรียกใช้ผ่าน QML ได้โดยตรง โดยสังเกตหัวข้อ QML Elements ท้ายเอกสาร เช่น อีลิเมนต์ต่างๆ ที่เกี่ยวกับ Location

ตัวอย่างด้านล่างนี้แสดงแอพลิเคชันอ่านฟีดจาก blognone.com ทุก 5 นาที โดยจะไม่อ่านหากเครื่องไม่ได้เชื่อมต่อไวร์เลสอยู่ ซึ่งใช้อีลิเมนต์ NetworkInfo จากโมดูล System Information เพื่อตรวจสอบสถานะการเชื่อมต่อ (ซอร์สโค้ดส่วนที่เกี่ยวข้องกับ Qt Mobility แสดงด้วยการไฮไลต์)

{syntaxhighlighter brush:plain highlight:[2,48,49,50,51,58]}
import QtQuick 1.0
import QtMobility.systeminfo 1.1

Rectangle {
width: 360
height: 360
color: "#ff0000"

Component {
    id: feedDelegate
    Rectangle {
        width: 360
        height: 60
        Column {
            Text {
                id: title
            }
            anchors.fill: parent
        }
    }
}

XmlListModel {
    id: feedModel
    source: "http://www.blognone.com/atom.xml"
    query: "/rss/channel/item"
    XmlRole {
        name: "link"
        query: "link/string()"
        isKey: true
    }
    XmlRole {
        name: "title"
        query: "title/string()"
    }
    XmlRole {
        name: "pubDate"
        query: "pubDate/string()"
    }
}

ListView {
    delegate: feedDelegate
    model: feedModel
    anchors.fill: parent
}

NetworkInfo {
    id: "networkInfo"
    useMode: NetworkInfo.WlanMode;
}

Timer {
    interval: 30000;
    running: true;
    repeat: true
    onTriggered: {
        if (networkInfo.networkStatus == NetworkInfo.Connected) {
            feedModel.reload();
        }
    }
}

}
{/syntaxhighlighter}

การทดสอบแอพลิเคชัน

การทดสอบแอพลิเคชันที่สร้างด้วย QtCreator บน MeeGo สามารถทำได้สองวิธี คือ

  1. ทดสอบบนซิมูเลเตอร์
  2. ทดสอบบนเวอร์ชวลแมชชีน

การทดสอบแอพลิเคชันบนซิมูเลเตอร์

Qt Simulator เป็นตัวจำลองสภาพแวดล้อมที่แอพลิเคชันจะทำงาน โดยไม่ได้จำลองการทำงานของอุปกรณ์ทั้งหมด ข้อดีของการทดสอบด้วยวิธีนี้คือทดสอบได้รวดเร็ว และสามารถทดลองระบุสภานะต่างๆ ของเครื่องได้ง่าย (เช่น ตำแหน่งของเครื่อง ระดับแบตเตอรี่) แต่หน้าตาอาจต่างไปจากการนำแอพลิเคชันไปทำงานบนเวอร์ชวลแมชชีน หรือบนเครื่องจริงบ้าง

วิธีการทดสอบทำได้โดย

  1. คลิกที่ปุ่มเลือก target สำหรับทดสอบ (ปุ่มบนสุดของกลุ่มปุ่มมุมซ้ายล่าง) แล้วเลือก Qt Simulator
  2. กดปุ่ม run หรือ debug ด้านล่าง แอพลิเคชันจะถูกเรียกขึ้นมาพร้อมกับหน้าต่างควบคุมซิมูเลเตอร์เพื่อปรับขนาดหน้าจอและกำหนดสภาวะแวดล้อมต่างๆ ที่จะใช้ทดสอบ

ตัวอย่างการทดสอบแอพลิเคชันด้วย Qt Simulator

การทดสอบแอพลิเคชันบนเวอร์ชวลแมชชีน

การทดสอบวิธีนี้เป็นการทดสอบบนเครื่องจำลองอุปกรณ์ที่ติดตั้งระบบปฏิบัติการ MeeGo จริงๆ โดยใช้วิธีการสร้างอุปกรณ์ MeeGo เป็นเวอร์ชวลแมชชีน ซึ่งจะได้สภาพแวดล้อมและหน้าตาของแอพลิเคชันที่เหมือนกับการนำแอพลิเคชันไปรันบนอุปกรณ์จริงๆ ทุกประการ

ขั้นตอนการทดสอบบนเวอร์ชวลแมชชีน มีดังนี้

  1. สำหรับบนวินโดวส์ ให้เปิดคอมมานด์ไลน์ด้วยสิทธิ์ผู้ดูแลระบบก่อน จากนั้นพิมพ์คำสั่ง net start kqemu (ทำเฉพาะครั้งแรกหลังจากเปิดเครื่อง)
  2. คลิกที่ปุ่มเลือก target สำหรับทดสอบ (ปุ่มบนสุดของกลุ่มปุ่มมุมซ้ายล่าง) แล้วเลือก MeeGo จากนั้นให้เลือกชนิดและรุ่นของ MeeGo ที่จะทดสอบจากดรอปดาวน์ลิสต์ build ที่อยู่ถัดลงมาด้านล่าง
  3. กดปุ่มเปิดเวอร์ชวลแมชชีน (อยู่ด้านล่างปุ่ม run) จากนั้นรอจนกระทั่งระบบเริ่มเรียบร้อยแล้ว (หากมีปัญหาให้ดูหัวข้อ การแก้ปัญหาเบื้องต้น ท้ายบทความนี้)
  4. กดปุ่ม run หรือ debug ด้านล่าง แอพลิเคชันจะถูกนำไปติดตั่้งบนเวอร์ชวลแมชชีนและเรียกขึ้นมาทำงานทันที

ตัวอย่างการทดสอบแอพลิเคชันผ่านอุปกรณ์ที่จำลองด้วย QEMU

ตัวอย่างการทดสอบแอพลิเคชันผ่านอุปกรณ์ที่จำลองด้วย QEMU

ตัวอย่างการทดสอบแอพลิเคชันผ่านอุปกรณ์ที่จำลองด้วย QEMU

การแก้ไขปัญหาเบื้องต้น

โดยทั่วไปการติดตั้งและทดสอบแอพลิเคชันจะทำได้โดยปกติ อย่างไรก็ตาม หากพบปัญหา วิธีแก้ไขปัญหาเบื้องต้นเหล่านี้อาจช่วยได้

หากเปิดเวอร์ชวลแมชชีน ไม่ได้ หรือเปิดแล้วพบว่า MeeGo ค้างอยู่ที่หน้าบูต อาจเกิดจากสาเหตุดังนี้

  1. พัฒนาบนวินโดวส์ แล้วลืมเปิดเซอร์วิส kqemu ให้เปิดคอมมานด์ไลน์ด้วยสิทธิ์ผู้ดูแลระบบ แล้วพิมพ์คำสั่ง start net kqemu ก่อนเปิดเวอร์ชวลแมชชีนใหม่
  2. เครื่องที่ใช้ทดสอบมีซีพียูที่ไม่สนับสนุนเทคโนโลยีเวอร์ชวลไลเซชัน (ดูวิธีทดสอบต้นบทความนี้) โดยซีพียูอาจสนับสนุนแต่ถูกปิดความสามารถนี้ไว้ ให้ดูที่ไบออสของเครื่อง
  3. เนื่องจาก QEMU บนวินโดวส์ยังมีปัญหากับซีพียูบางรุ่น กรณีนี้แนะนำให้ทดสอบด้วยซิมูเลเตอร์ไปก่อน หรือติดตั้ง MeeGo SDK และพัฒนาบนลินุกซ์ไปก่อนก็ได้ (ไม่แนะนำให้พัฒนาบนวินโดวส์หรือลินุกซ์ที่รันด้วยเวอร์ชวลแมชชีน เนื่องจากจะไม่สามารถเปิด QEMU ได้)

หากเปิดเวอร์ชวลแมชชีน แล้วพบว่า MeeGo ค้างอยู่ที่หน้า grub (หน้าที่มีพื้นหลังสีเทา) ให้ทดลองแก้ไขตามขั้นตอนนี้

  1. เปิดเวอร์ชวลแมชชีนใหม่ รอจังหวะที่หน้าสีเทาปรากฎขึ้น ให้กดปุ่ม Esc หนึ่งครั้ง
  2. เมื่อหน้าจอแสดงรายการระบบปฏิบัติการให้เลือก ให้กดปุ่ม Tab เพื่อแก้ไขรายการ
  3. นำคำว่า quiet ออก และใส่อักษร s ต่อท้าย (เว้นวรรคก่อน) จากนั้นกด Enter
    การแก้ไข Grub ของ MeeGo
  4. รอให้บูตเสร็จจนเทอร์มินัลพร้อมทำงาน ให้พิมพ์คำสั่ง chmod +s /usr/bin/Xorg ตามด้วยคำสั่ง init 3

หากเปิดเวอร์ชวลแมชชีนได้ แต่ไม่สามารถนำแอพลิเคชันไปรันในเวอร์ชวลแมชชีนได้ โดยมีข้อความแจ้งว่า connection refused อาจเกิดจากปัญหาการทำงานของเซอร์วิส sshd บน MeeGo ให้ทดลองแก้ไขตามขั้นตอนนี้

  1. เปิดเทอร์มินัลบน MeeGo
  2. พิมพ์คำสั่ง sudo -i และระบุรหัสผ่านว่า meego
  3. ทดสอบว่าเซอร์วิส sshd ทำงานอยู่หรือไม่ โดยพิมพ์คำสั่ง /etc/init.d/sshd status
  4. หากเซอร์วิสไม่ทำงาน ให้ทดลองเริ่มเซอร์วิส sshd โดยพิมพ์คำสั่ง /etc/init.d/sssd start
  5. หากเริ่มเซอร์วิสไม่ได้ โดยปรากฎข้อผิดพลาดเกี่ยวกับ host key ให้สร้างคีย์ใหม่ โดยพิมพ์คำสั่ง ssh-keygen -b 1024 -f /etc/ssh_host_key -N ''
    จากนั้นเริ่มเซอร์วิสตามข้อ 4 อีกครั้ง

ลิงก์แนะนำ

บทความก่อนหน้า

บทความในชุด Intel AppUp Developer Program เป็นบทความที่ได้รับการสนับสนุนจากบริษัทอินเทล ไมโครอิเล็กทรอนิกส์ (ประเทศไทย) จำกัดเพื่อสนับสนุนให้นักพัฒนาสามารถเข้าร่วมกับ Intel AppUp Center ได้ง่ายยิ่งขึ้น ท่านสามารถเข้าดูข้อมูลเพิ่มเติมของโครงการได้ที่ Intel AppUp Developer Program

Hiring! บริษัทที่น่าสนใจ

Thoughtworks Thailand company cover
Thoughtworks Thailand
Thoughtworks เป็นบริษัทที่ปรึกษาด้านเทคโนโยลีระดับโลกที่คว้า Great Place to Work 3 ปีซ้อน
Gofive company cover
Gofive
“We create world-class software experience”
LINE MAN Wongnai company cover
LINE MAN Wongnai
Join our journey to becoming No.1 food platform in Thailand
Apple
public://topics-images/apple_webp.png
SCB10X
public://topics-images/347823389_774095087711602_515970870797767330_n_webp.png
Windows 11
public://topics-images/hero-bloom-logo.jpg
Doom
public://topics-images/doom_logo.png
Huawei
public://topics-images/huawei_standard_logo.svg_.png
Threads
public://topics-images/threads-app-logo.svg_.png
Google Keep
public://topics-images/google_keep_2020_logo.svg_.png
Fortnite
public://topics-images/fortnitelogo.svg_.png
Instagram
public://topics-images/instagram_logo_2022.svg_.png
SCB
public://topics-images/9crhwyxv_400x400.jpg
Microsoft
public://topics-images/microsoft_logo.svg_.png
Basecamp
public://topics-images/bwpepdi0_400x400.jpg
Tinder
public://topics-images/hwizi8ny_400x400.jpg
FTC
public://topics-images/seal_of_the_united_states_federal_trade_commission.svg_.png
Pinterest
public://topics-images/pinterest.png
Palantir
public://topics-images/-nzsuc6w_400x400.png
Gemini
public://topics-images/google_gemini_logo.svg__0.png
AIS Business
public://topics-images/logo-business-2021-1.png
PostgreSQL
public://topics-images/images.png
JetBrains
public://topics-images/icx8y2ta_400x400.png
Krungthai
public://topics-images/aam1jxs6_400x400.jpg
Palworld
public://topics-images/mccyhcqf_400x400.jpg
Bill Gates
public://topics-images/bill_gates-september_2024.jpg
VMware
public://topics-images/1nj4i1gp_400x400.jpg
Take-Two Interactive
public://topics-images/0khle7nh_400x400.jpg
OpenAI
public://topics-images/ztsar0jw_400x400.jpg
Thailand
public://topics-images/flag_of_thailand.svg_.png
NVIDIA
public://topics-images/srvczsfq_400x400.jpg
ServiceNow
public://topics-images/ytnrfphe_400x400.png
PS5
public://topics-images/playstation_5_logo_and_wordmark.svg_.png
Klarna
public://topics-images/urcllpjp_400x400.png
Google Play
public://topics-images/play.png
Drupal
public://topics-images/drupal.png
Virtua Fighter
public://topics-images/virtua_figther_2024_logo.png
Paradox Interactive
public://topics-images/paradox_interactive_logo.svg_.png
Europa Universalis
public://topics-images/europa-icon.png
Nintendo Switch 2
public://topics-images/mainvisual.png