android的 init是 google自己寫的, 它會讀取 /etc/init.rc 作一些動作
我不喜歡它原本 sh , 因為不方便使用沒有 history的功能,
我修改如下
console {
exec /system/bin/busybox
args {
0 sh
}
console yes
}
這樣 run emulator的時候加上 -console 就會直接執行 busybox sh
但是 adb shell 則是直接 run /system/bin/sh 這要怎麼辦呢
先把原本的sh改名, 然後 ln -s busybox sh.
對了 android的 sh可不是由 toolbox link過來的喔 是一隻獨立的程式.
2008年5月27日 星期二
Busybox testing on android emulator
busybox 是一套 balabala 不多說了 有些功能可以動作 有些會造成 segmentation fault 以下是我測試目前ok的功能
補充一下 ln -s busybox cat 會產生 symbol file cat 這樣就可以執行cat的功能
cat , cmp ,chmod ,date , dd ,df , dmesg, mkdir, netstat, ps , printenv, rm, rmdir, route, sleep, sync, umount, mount, kill, ls
目前已知會造成 segmentation fault的功能, vi, lsmod, insmod, rmmmod
ifdown , ifup, ifconfig 會說需要 /etc/network/interfaces 這個檔案 我在模擬器上面就沒有多加測試了.
補充一下 ln -s busybox cat 會產生 symbol file cat 這樣就可以執行cat的功能
cat , cmp ,chmod ,date , dd ,df , dmesg, mkdir, netstat, ps , printenv, rm, rmdir, route, sleep, sync, umount, mount, kill, ls
目前已知會造成 segmentation fault的功能, vi, lsmod, insmod, rmmmod
ifdown , ifup, ifconfig 會說需要 /etc/network/interfaces 這個檔案 我在模擬器上面就沒有多加測試了.
Android 的 一些小心得
目前因為版子還不能 run android 的關係 (只有 shell 出現 沒有 gui ),
所以我就只能模擬器上面作一些工作, 這邊是我的一些小心得.
ramdisk.img 是一個 gzip + cpio 的檔案
先用 gunzip 解壓縮後 得到一個 cpio file ramdisk
我們可以用這一行命令解開它
cpio -iv < ../ramdisk
這一行命令會把 ramdisk 的內容解開到當前的目錄當中.
修改完後要壓回去, 可以執行下面的命令
find | cpio -H newc -o | gzip -9 > ../ramdisk.img
這樣就會還原成原來的 gzip + cpio 的 ramdisk.img
當然這些動作只有在 emulator 上面執行才需要
如果要在 target board 上面執行時 只要像一般的處理 rootfs 那樣即可
不過我只會 NFS mount 的方式.
所以我就只能模擬器上面作一些工作, 這邊是我的一些小心得.
ramdisk.img 是一個 gzip + cpio 的檔案
先用 gunzip 解壓縮後 得到一個 cpio file ramdisk
我們可以用這一行命令解開它
cpio -iv < ../ramdisk
這一行命令會把 ramdisk 的內容解開到當前的目錄當中.
修改完後要壓回去, 可以執行下面的命令
find | cpio -H newc -o | gzip -9 > ../ramdisk.img
這樣就會還原成原來的 gzip + cpio 的 ramdisk.img
當然這些動作只有在 emulator 上面執行才需要
如果要在 target board 上面執行時 只要像一般的處理 rootfs 那樣即可
不過我只會 NFS mount 的方式.
android JNI debug method
這是一篇小小的心得, 當時我正在寫 android的 jni 準備放在 /system/lib 裡面讓 java的 application 呼叫.
但是苦於沒有辦法知道 android's java application 是否呼叫到了 jni 所以一直很苦惱,
後來靈機一動, 直覺的認為可能是 權限的問題所以想到的解法. 請各位不要笑我 因為我剛開始接觸 linux也不超過一年.
in c code write below this to generate debug message
所以這個 debug 方法只是用在 emulator 上面.
另外前面可以加上 access("/dev/pts/0", R_OK | W_OK | X_OK ) 作判斷看看檔案是否存在
但是苦於沒有辦法知道 android's java application 是否呼叫到了 jni 所以一直很苦惱,
後來靈機一動, 直覺的認為可能是 權限的問題所以想到的解法. 請各位不要笑我 因為我剛開始接觸 linux也不超過一年.
- adb shell
- chmod 777 /dev/pts/0
in c code write below this to generate debug message
- char message[] = "hello android jni interface.";
- int tty = open ("/dev/pts/0", O_RDWR);
- write ( tty, message, sizeof(message) );
所以這個 debug 方法只是用在 emulator 上面.
另外前面可以加上 access("/dev/pts/0", R_OK | W_OK | X_OK ) 作判斷看看檔案是否存在
chm2pdf on linux(在 fedora上面 )
這個是今天在網路上看到的轉檔方法 (在 fedora7 上面 )
首先下載 http://code.google.com/p/chm2pdf/
上面是網頁上說所需要的檔案.
我自己在 fedora 7裡面安裝的經驗是
使用更新搜尋尋找 libchm 全選, python-chm , htmldoc 全選
最後解開 chm2pdf-x.tar
進入解壓縮後的chm2pdf目錄
執行
python setup.py install
產生
/usr/bin/chm2pdf
接下來就可以直接在 shell底下使用
轉檔的方式很簡單 我自己喜歡的閱讀方式是
上下個留 1 inch 的空白 左右 1.2
執行下面的命令即可
chm2pdf --book --left 1.2in --right 1.2in --top 1in --down 1in --size a4 --textfont helvetica --no-overflow --jpeg 100 "filename.chm"
有時後轉檔會失敗 這個時候請把 --book 替換成 --webpage 即可
首先下載 http://code.google.com/p/chm2pdf/
上面是網頁上說所需要的檔案.
我自己在 fedora 7裡面安裝的經驗是
使用更新搜尋尋找 libchm 全選, python-chm , htmldoc 全選
最後解開 chm2pdf-x.tar
進入解壓縮後的chm2pdf目錄
執行
python setup.py install
產生
/usr/bin/chm2pdf
接下來就可以直接在 shell底下使用
轉檔的方式很簡單 我自己喜歡的閱讀方式是
上下個留 1 inch 的空白 左右 1.2
執行下面的命令即可
chm2pdf --book --left 1.2in --right 1.2in --top 1in --down 1in --size a4 --textfont helvetica --no-overflow --jpeg 100 "filename.chm"
有時後轉檔會失敗 這個時候請把 --book 替換成 --webpage 即可
訂閱:
文章 (Atom)