OS: PRAKTIKUM — Cross-Platform App Build: Difference between revisions

From OnnoCenterWiki
Jump to navigationJump to search
 
(One intermediate revision by the same user not shown)
Line 106: Line 106:


Makefile OpenWRT
Makefile OpenWRT
<pre><nowiki>
include $(TOPDIR)/rules.mk
include $(TOPDIR)/rules.mk


Line 131: Line 132:


$(eval $(call BuildPackage,hello-cross))
$(eval $(call BuildPackage,hello-cross))
</nowiki></pre>


===Build Package===
===Build Package===
Line 143: Line 145:


==Compile Android App (APK)==
==Compile Android App (APK)==
Konsep Build Aplikasi Android
===Konsep Build Aplikasi Android===
Android:
Android:
Tidak menjalankan binary Linux biasa sebagai app
* Tidak menjalankan binary Linux biasa sebagai app
Menggunakan APK
* Menggunakan APK
Runtime: ART
* Runtime: ART
Namun, source tetap open source, dan build dilakukan di Ubuntu.
Namun, source tetap open source, dan build dilakukan di Ubuntu.
Contoh Aplikasi Android Sederhana
 
===Contoh Aplikasi Android Sederhana===
Struktur minimal:
Struktur minimal:
HelloAndroid/
HelloAndroid/
├── AndroidManifest.xml
  ├── AndroidManifest.xml
├── build.gradle
  ├── build.gradle
└── app/
  └── app/
    └── src/main/java/MainActivity.java
      └── src/main/java/MainActivity.java
Contoh MainActivity.java
 
===Contoh MainActivity.java===
<pre><nowiki>
package com.example.helloandroid;
package com.example.helloandroid;


Line 171: Line 176:
     }
     }
}
}
</nowiki></pre>
Build APK di Ubuntu (Gradle)
Build APK di Ubuntu (Gradle)
./gradlew assembleDebug
./gradlew assembleDebug
 
APK akan berada di:
APK akan berada di:
app/build/outputs/apk/debug/
app/build/outputs/apk/debug/
Install ke Android x86


adb install app-debug.apk
===Install ke Android x86===
adb install app-debug.apk
Observasi OS:
Observasi OS:
Aplikasi berjalan sebagai process Android
* Aplikasi berjalan sebagai process Android
Terisolasi UID
* Terisolasi UID
Tidak bisa akses kernel langsung
* Tidak bisa akses kernel langsung
Perbandingan & Analisis Cross-Platform
 
Aspek
Ubuntu
OpenWRT
Android
Output
ELF binary
ELF binary
APK
libc
glibc
musl
bionic
Toolchain
gcc
target-gcc
clang
Runtime
Linux
Linux
ART
Target
Server/Desktop
Embedded
Mobile/VM
 


{| class="wikitable" style="margin:auto"
|+ Perbandingan & Analisis Cross-Platform
|-
! Aspek !! Ubuntu !! OpenWRT !! Android
|-
| Output || ELF binary || ELF binary || APK
|-
| libc || glibc || musl || bionic
|-
| Toolchain || gcc || target-gcc || clang
|-
| Runtime || Linux || Linux || ART
|-
| Target || Server/Desktop || Embedded || Mobile/VM
|}


Insight penting:
Cross-platform bukan berarti satu binary untuk semua, tetapi satu source untuk banyak build.


 
==Mini Challenge (Fun & Menantang)==
 
 
Insight penting:
Cross-platform bukan berarti satu binary untuk semua, tetapi satu source untuk banyak build.
Mini Challenge (Fun & Menantang)
Beberapa tantangan opsional:
Beberapa tantangan opsional:
Ubah teks output → build ulang di 3 OS
* Ubah teks output → build ulang di 3 OS
Bandingkan ukuran binary
* Bandingkan ukuran binary
Jalankan strace di Ubuntu vs Android
* Jalankan strace di Ubuntu vs Android
Amati syscall yang gagal di Android
* Amati syscall yang gagal di Android
Tantangan ini melatih analisis OS behavior, bukan sekadar compile.
Tantangan ini melatih analisis OS behavior, bukan sekadar compile.
Refleksi Akademik (OBE-Oriented)
 
==Refleksi Akademik (OBE-Oriented)==
Setelah praktikum ini, mahasiswa mampu:
Setelah praktikum ini, mahasiswa mampu:
✅ Meng-compile aplikasi lintas OS
* ✅ Meng-compile aplikasi lintas OS
✅ Memahami toolchain dan ABI
* ✅ Memahami toolchain dan ABI
✅ Mengaitkan user space dengan kernel
* ✅ Mengaitkan user space dengan kernel
✅ Berpikir sebagai cross-platform system engineer
* ✅ Berpikir sebagai cross-platform system engineer
Penutup
 
==Penutup==
Praktikum ini menegaskan satu hal penting:
Praktikum ini menegaskan satu hal penting:
Sistem operasi adalah fondasi eksekusi, bukan sekadar lingkungan belajar.
Sistem operasi adalah fondasi eksekusi, bukan sekadar lingkungan belajar.
 
Mahasiswa kini:
Mahasiswa kini:
Tidak hanya membangun OS
* Tidak hanya membangun OS
Tidak hanya membangun aplikasi
* Tidak hanya membangun aplikasi
Tetapi menghubungkan keduanya secara lintas platform
* Tetapi menghubungkan keduanya secara lintas platform
 
Selamat — Anda telah menembus batas antar sistem operasi.
Selamat — Anda telah menembus batas antar sistem operasi.



Latest revision as of 04:33, 15 February 2026

Tujuan Praktikum

Praktikum ini bertujuan membuktikan secara nyata bahwa:

Perbedaan sistem operasi bukan pada kernel semata,
tetapi pada user space, toolchain, dan runtime.

Setelah praktikum ini, mahasiswa diharapkan mampu:

  • Meng-compile CLI tool native di Ubuntu 24.04
  • Meng-compile package OpenWRT menggunakan cross-toolchain
  • Meng-compile aplikasi Android (APK) dari source
  • Memahami konsep cross-platform dan cross-compilation secara praktis

Konteks Akademik & Konsep Inti

Posisi Praktikum dalam Alur Sistem Operasi

Mengacu pada outline Sistem Operasi, 2026, praktikum ini berada setelah:

  • Build kernel Linux
  • Build OpenWRT x86
  • Build Android x86
  • Build aplikasi open source (BAB 15)

Artinya, mahasiswa kini:

  • Tidak hanya membangun OS
  • Tetapi memanfaatkan OS sebagai platform eksekusi aplikasi lintas sistem

Mindset kunci:

Mahasiswa berpindah dari OS builder menjadi system integrator.

Konsep Dasar Cross-Platform App Build

Satu source code dapat menghasilkan binary berbeda, tergantung:

  • Arsitektur CPU
  • libc yang digunakan
  • ABI (Application Binary Interface)
  • Toolchain
Platform Compiler libc
Ubuntu 24.04 gcc glibc
OpenWRT target-gcc musl
Android clang (NDK) bionic

Kesimpulan akademik:

Kernel Linux sama, user space menentukan kompatibilitas aplikasi.

Compile CLI Tool di Ubuntu 24.04

Tujuan

Membangun CLI tool native Linux sebagai baseline sebelum masuk ke cross-compile.

Source Code CLI Tool (C)

// hello-cli.c
#include <stdio.h>

int main() {
    printf("Hello from Ubuntu CLI tool!\n");
    return 0;
}

Langkah Compile di Ubuntu

sudo apt update
sudo apt install -y build-essential
gcc hello-cli.c -o hello-cli

Jalankan:

./hello-cli

Observasi OS:

  • Binary ELF dieksekusi oleh kernel Linux
  • printf() → system call → kernel

Ini adalah user space murni

Analisis Akademik Singkat

Gunakan:

ldd hello-cli
file hello-cli

Mahasiswa dapat melihat:

  • Dependency glibc
  • Arsitektur binary
  • Loader ELF

Compile OpenWRT Package (Cross-Compile)

Konsep Build di OpenWRT

OpenWRT tidak membangun aplikasi langsung di target, melainkan:

  • Build di Ubuntu (host)
  • Jalan di OpenWRT (target)

Inilah cross-compilation yang sesungguhnya.

Struktur Package OpenWRT

package/hello-cross/
 ├── Makefile
 └── src/
     └── hello-openwrt.c

Source Code (Sama Secara Logika)

#include <stdio.h>

int main() {
    printf("Hello from OpenWRT!\n");
    return 0;
}

Makefile OpenWRT

include $(TOPDIR)/rules.mk

PKG_NAME:=hello-cross
PKG_VERSION:=1.0

include $(INCLUDE_DIR)/package.mk

define Package/hello-cross
  SECTION:=utils
  CATEGORY:=Utilities
  TITLE:=Hello Cross Platform
endef

define Build/Compile
	$(TARGET_CC) $(TARGET_CFLAGS) \
		-o $(PKG_BUILD_DIR)/hello \
		$(PKG_BUILD_DIR)/hello-openwrt.c
endef

define Package/hello-cross/install
	$(INSTALL_DIR) $(1)/usr/bin
	$(INSTALL_BIN) $(PKG_BUILD_DIR)/hello $(1)/usr/bin/
endef

$(eval $(call BuildPackage,hello-cross))

Build Package

make package/hello-cross/compile V=s

Hasil .ipk dapat di-install di OpenWRT:

opkg install hello-cross.ipk
hello

Insight OS:

Binary OpenWRT tidak bisa dijalankan di Ubuntu, walau kernel sama.

Compile Android App (APK)

Konsep Build Aplikasi Android

Android:

  • Tidak menjalankan binary Linux biasa sebagai app
  • Menggunakan APK
  • Runtime: ART

Namun, source tetap open source, dan build dilakukan di Ubuntu.

Contoh Aplikasi Android Sederhana

Struktur minimal:

HelloAndroid/
 ├── AndroidManifest.xml
 ├── build.gradle
 └── app/
     └── src/main/java/MainActivity.java

Contoh MainActivity.java

package com.example.helloandroid;

import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;

public class MainActivity extends Activity {
    protected void onCreate(Bundle b) {
        super.onCreate(b);
        TextView tv = new TextView(this);
        tv.setText("Hello from Android APK!");
        setContentView(tv);
    }
}

Build APK di Ubuntu (Gradle)

./gradlew assembleDebug

APK akan berada di:

app/build/outputs/apk/debug/

Install ke Android x86

adb install app-debug.apk

Observasi OS:

  • Aplikasi berjalan sebagai process Android
  • Terisolasi UID
  • Tidak bisa akses kernel langsung
Perbandingan & Analisis Cross-Platform
Aspek Ubuntu OpenWRT Android
Output ELF binary ELF binary APK
libc glibc musl bionic
Toolchain gcc target-gcc clang
Runtime Linux Linux ART
Target Server/Desktop Embedded Mobile/VM

Insight penting:

Cross-platform bukan berarti satu binary untuk semua, tetapi satu source untuk banyak build.

Mini Challenge (Fun & Menantang)

Beberapa tantangan opsional:

  • Ubah teks output → build ulang di 3 OS
  • Bandingkan ukuran binary
  • Jalankan strace di Ubuntu vs Android
  • Amati syscall yang gagal di Android

Tantangan ini melatih analisis OS behavior, bukan sekadar compile.

Refleksi Akademik (OBE-Oriented)

Setelah praktikum ini, mahasiswa mampu:

  • ✅ Meng-compile aplikasi lintas OS
  • ✅ Memahami toolchain dan ABI
  • ✅ Mengaitkan user space dengan kernel
  • ✅ Berpikir sebagai cross-platform system engineer

Penutup

Praktikum ini menegaskan satu hal penting:

Sistem operasi adalah fondasi eksekusi, bukan sekadar lingkungan belajar.

Mahasiswa kini:

  • Tidak hanya membangun OS
  • Tidak hanya membangun aplikasi
  • Tetapi menghubungkan keduanya secara lintas platform

Selamat — Anda telah menembus batas antar sistem operasi.

Pranala Menarik