Tag Archives

4 Articles
Kompilasi Rockbox ke Android SK-17i
Rockbox on Android

Kompilasi Rockbox ke Android SK-17i

Rockbox on Android

Rockbox on Android

Saya menggunakan cara seperti yang pernah saya tulis dahulu. Diasumsikan sudah terpasang Android SDK dan NDK. Kali ini saya menggunakan Sony Ericsson Xperia Mini Pro (SK-17i). Berhubung ini adalah catatan dan saya pikir tulisan ini hanya bagi heker sejati, maka saya tidak berusaha untuk membuat tulisan ini layak masuk jurnal.

Rockbox menggunakan tanda tangan yang sudah kadaluarsa. Untuk itu, Java yang digunakan harus Java 6 atau lebih lawas. Java 7 (IcedTea 7.2.3.3) menolak untuk menandatangani JAR yang dibuat dengan tanda tangan tersebut.

Rockbox telah memindahkan kode sumber GIT-nya ke GitHub. Untuk itu, mari ambil dari yang baru:

$ git clone git://github.com/Rockbox/rockbox.git
$ mkdir rockbox/bangun && cd rockbox/bangun

Konfigurasikan seperti biasa:

$ ./configure --ccache --no-sdl-threads --lcdwidth=320 --lcdheight=480 --target=android --ram=358

Kendati menurut spesifikasi SK-17i memiliki memori 512MB, menurut “Setelan –> Tentang ponsel –> Memory” tertulis 358. Dewasa ini untuk mengompilasi lebih cepat digunakan ccache.

Setelah dikonfigurasi, langsung dikerjakan:

$ make apk

Setelah beberapa saat, bila tak ada kerusuhan, maka rockbox.apk akan tercipta di direktori “bangun”.

Tamat.

Berikutnya hanya bagi yang merasa tertantang.

Bermain Prosesor

Menurut sebuah artikel, prosesor MSM8255 yang dimiliki oleh SK-17i memiliki tambahan GCC sebagai berikut:

-march=armv7-a -mfloat-abi=softfp -mfpu=neon

Untuk itu, dapat diubah di berkas Makefile, konfigurasi GCCOPTS dimodifikasi dengan membuang “-mcpu” dan “-march”. Keduanya diganti menjadi:

export GCCOPTS=-W -Wall  -O   -Wstrict-prototypes -pipe -std=gnu99 -march=armv7-a -mfloat-abi=softfp -mfpu=neon -fomit-frame-pointer --sysroot=/opt/android-ndk/platforms/android-5/arch-arm  -Wno-pointer-sign -Wno-override-init

Setelah itu, kompilasi lebih lanjut.

Bermain Scrobbler

Secara baku, Rockbox tidak begitu mendukung Last.FM. Untungnya, Matt Muscari telah menyediakan tambalan sederhana. Intinya, ada dua tempat dalam satu berkas  “android/src/org/rockbox/Helper/RunForegroundManager.java” yang harus ditambahkan.

Pada fungsi updateNotification, tambahkan beberapa baris ini pada akhir:

/* adding scrobble */
Intent scrobbleUpdate = new Intent("net.jjc1138.android.scrobbler.action.MUSIC_STATUS");
scrobbleUpdate.putExtra("playing", true);
scrobbleUpdate.putExtra("artist", artist);
scrobbleUpdate.putExtra("track", title);
scrobbleUpdate.putExtra("album", album);
mCurrentService.sendBroadcast(scrobbleUpdate);

Kemudian, pada fungsi finishNotification, tambahkan beberapa baris berikut untuk mengirim data ke Last.FM:

/* adding scrobble: track finish */
Intent scrobbleUpdate = new Intent("net.jjc1138.android.scrobbler.action.MUSIC_STATUS");
scrobbleUpdate.putExtra("playing", false);
mCurrentService.sendBroadcast(scrobbleUpdate);

Buat APK seperti biasa.

Kompilasi RockBox ke Android
Rockbox on Android

Kompilasi RockBox ke Android

Rockbox on Android

Rockbox on Android

Persiapan

Perlu ada dua paket:

  • Android SDK: Untuk mengembangkan aplikasi Java biasa.
  • Android NDK: Untuk mengembangkan aplikasi yang membutuhkan pustaka Linux/alami (.so).

Android SDK

Android SDK, paket standar bagi para pengembang untuk mengembangkan Android. Untuk Ubuntu lihat ini.

Untuk Gentoo, silakan

# emerge -av dev-util/android-sdk-update-manager

Cara generik adalah mengunduhnya dan mengekstrak ke “/opt”:

$ wget http://dl.google.com/android/android-sdk_r10-linux_x86.tgz
$ sudo tar android-sdk_r10-linux_x86.tgz -C /opt

Dengan perintah di atas,  SDK diekstraksi ke /opt/android-sdk_r10. Jalankan perkakas “android” untuk mengunduh SDK Platform yang dibutuhkan. Saya menjalankan ini di terminal GUI:

$ /opt/android-sdk_r10-linux/tools/android

Pilih versi Platform, Javadoc, dan sampel (kalau-kalau mau belajar) yang mau diunduh. Saya mengunduh semua versi Platform. Tunggu sebentar, ngopi-ngopi dulu, sudahkah Anda menyapa anak/istri/suami/orang tua/tetangga Anda?

Android NDK

Paket Android NDK diperlukan untuk mengompilasi “librockbox.so”. Caranya:

$ wget http://dl.google.com/android/ndk/android-ndk-r5b-linux-x86.tar.bz2
$ tar xvfj android-ndk-r5b-linux-x86.tar.bz2 -C /opt

Nanti NDK terpasang di “/opt/android-ndk-r5b/”.

Pasang ROCKBOX

Rockbox membutuhkan ANDROID_SDK_PATH dan ANDROID_NDK_PATH ke arah kedua perkakas tersebut. Kebetulan saya menggunakan Gentoo, jadi keduanya saya buat seperti berikut:

$ export ANDROID_SDK_PATH=/opt/android-sdk-update-manager
$ export ANDROID_NDK_PATH=/opt/android-ndk-r5b

Rockbox utamanya menggunakan SVN, tetapi saya di belakang PROXY, sehingga saya menggunakan GIT dengan HTTP.

$ git clone http://git.rockbox.org/rockbox
$ cd rockbox

Mengompilasi yang baik adalah dengan membuat direktori sendiri. Hal ini agar tidak mencampur berkas-berkas kompilasi dan berkas kode sumber.

$ mkdir bangun && cd bangun

Konfigurasikan Rockbox yang hendak dibangun:

$ ../tools/configure --eabi --target=android --ram=256
Using temporary directory /tmp
Enter the LCD width (default: 320)

Enter the LCD height (default: 480)

Selected 320 x 480 resolution
Platform set to android
Build (N)ormal, (A)dvanced, (S)imulator, (B)ootloader, (C)heckWPS, (D)atabase tool, (M)anual: (Defaults to N)

Normal build selected
Building Rockbox as an Application
Using source code root directory: /home/jp/Build/GIT/rockbox
Using arm-linux-androideabi-gcc 4.4.3 (404)
Using arm-linux-androideabi-ld 2.19
Found and uses ccache (/usr/bin/ccache)
Created Makefile

Kebetulan Nexian Journey saya menggunakan resolusi 320×480 dan bermemori 256MB. Saya juga menggunakan EABI untuk antarkompilasi. Sebenarnya ada juga fasilitas “–thumb” yang mengaktifkan thumb. Tapi, karena saya sudah menggunakan Python 3, skrip-skrip Python Rockbox tidak jalan. Tetapi, kemungkinan besar sistem Anda masih memiliki Python 2.6 atau 2.7 yang kemungkinan besar bisa menjalankan skrip-skrip tersebut.

Mari kita melakukan kompilasi:

$ make -j4 && make zip && make apk

Berkas “rockbox.apk” akan ada di direktori “bangun”. Silakan ditaruh ke telepon Anda.

Rockbox Revisited

Rockbox Revisited

Saya sudah memasang BeefPlayer dan hasilnya lumayan bagus. Kekurangan dari BeefPlayer pada CM7 Build 32 adalah dia kurang multitasking. Hal ini mengakibatkan suka putus-putus pada saat memainkan musik dan melakukan hal yang lain.

Sumber RockBox yang resmi menyediakan RockBox SVN r28520. RockBox versi ini cukup untuk dimainkan, tetapi sayangnya dia ketika beberapa lama akan kehilangan suara. Telepon harus terpaksa dinyalaulangkan agar suara kembali berfungsi.

Ada dua sumber RockBox yang lebih baru yang saya berhasil temukan:

  • dfkt yang menggunakan revisi terakhir r29342. dfkt menyediakan aplikasi Rockbox pada banyak resolusi.
  • paulheu membangun secara harian untuk resolusi 480×800. Resolusi yang terlalu besar untuk Nexian Journey. Versi terakhir adalah r29655.

Saya terus terang memakai versi yang dibangun oleh paulheu. Tampilannya terlalu besar di telepon, tetapi saya sangat butuh pemutar musik yang bisa Musepack.

Ugh, saya akan coba mencari ruang kosong di komputer saya untuk dapat mengunduh NDK dan mengompilasi sendiri Rockbox.  Untuk sementara, ini sudah cukup.

Rockbox and Musepack

Rockbox and Musepack

Finally I can play all of my Musepack files on my Android phone. Recently I’ve moved my CD collection into Musepack. The annoying part is most player only plays the obsolete SV7 format. I’m using SV8 format.

The andless player is on its way for playing SV8. Until then, Rockbox alpha4 for Android is the best for me.

It has advance features like equalizer, stereo widening, compression, and bunch another missing features that a modern player should have. Despite all of those important, I disable them. This is because I’m using CyannogenMod 7 (CM7) which include them already via DSP Manager. I’m also using a good headset and ripping my own CD. So, the quality is desirable. No need for steroids… 🙂

Mind you that Rockbox quite confusing at the beginning. But, it would perfectly fine. You’ll get it anyway. Still, now what I’m still learning is how to quit the apps. Other than that, I’m OK.