1. 將grep出來的文字replace
grep -rl matchstring somedir | xargs sed -i 's/string1/string2/g'
ex: grep -rl 'ABCD' * |xargs sed -i 's/ABCD/HEF/g'
2.將^M的換行符號拿掉
(1) sed "s/\r//" dos_file > dos_file_linux
(2) sed -i 's/\x0D$//' filename.txt
3. mount iso
sudo mount -t auto -o loop xxx.iso /mnt/iso
4. 安裝deb
dpkg -i abc.deb
5. 轉換PNG到PPM
(1) apt-get install netpnm
(2) pngtopnm sample.png > linuxlogo.pnm
(3) pnmquant 224 linuxlogo.pnm > linuxlogo224.pnm
(4) pnmtoplainpnm linuxlogo224.pnm > linuxlogo_clut224.ppm
PS. 如果要取代原linux logo, replace driver/vide/logo下的原圖檔.
5. copy folder to server
scp -r folder_name user@10.109.109.109:/home/user_name/folder_name
ex: scp -r TVBox favoritepili@10.109.109.109:/home/favoritepili/
6. Download file from server
scp -r user@10.109.109.109:/home/user/folder /home/user
ex: scp -r favoritepili@10.109.109.109:/home/favoritepili/TVBox /home/favoritepili
7. unload driver
sduo modprobe -r vboxpci
8. list module
(1) lsmod | grep vbox
(2) modprobe -l | grep vbox
9. load module
modprobe vboxdrv
2012年7月6日 星期五
2011年11月7日 星期一
Edit default android property value
更改預設property value.
方法一:
在makefile中加入"ADDITIONAL_BUILD_PROPERTIES"
ex:
in product_name.mk (device/product_name/product_name.mk)
...
ADDITIONAL_BUILD_PROPERTIES += \
ro.debuggable=1
...
---------------------------------------------------------------
in my_product_name.mk (不同的product)
...
ADDITIONAL_DEFAULT_PROPERTIES := \
ro.debuggable=1
...
side effect:
因為我在進行建立不同的product tree,可以有不同的product在同一份code base裡,
但我在實驗中發現,利用ADDITIONAL_BUILD_PROPERTIES, ADDITIONAL_DEFAULT_PROPERTIES,
會影響到全部的product.
所以加個判斷:
ifeq ($(TARGET_PRODUCT),my_produce_name)
ADDITIONAL_DEFAULT_PROPERTIES += \
ro.allow.mock.location=1
endif
PS. ADDITIONAL_BUILD_PROPERTIES是指增加property到out/target/product/product_name/system/build.prop,
ADDITIONAL_DEFAULT_PROPERTIES是增加property到out/target/product/product_name/root/default.prop.
方法二
修改 build/core/Makefile
TARGET_PRODUCT_DIR=device/$(TARGET_PRODUCT)
$(INSTALLED_BUILD_PROP_TARGET): $(BUILDINFO_SH) $(INTERNAL_BUILD_ID_MAKEFILE) $(BUILD_SYSTEM)/version_defaults.mk $(wildcard $(TARGET_DEVICE_DIR)/system.prop)
...
if [ -f $(TARGET_PRODUCT_DIR)/system.prop ]; then \
cat $(TARGET_PRODUCT_DIR)/system.prop >> $@; \
else \
cat $(TARGET_DEVICE_DIR)/system.prop >> $@; \
fi
...
原本的寫法,build.prop是去cat device/product_name/system.prop,還有一些default值.
我是把它改成先以current product path下判斷是否有system.prop,如果沒有就抓device path下的 system.prop
PS. $(INSTALLED_BUILD_PROP_TARGET): 就是out/target/product/product_name/system/build.prop
方法三:
在makefile 裡加:
PRODUCT_PROPERTY_OVERRIDES += \
persist.service.adb.enable=1
ifeq ($(TARGET_PRODUCT),my_product_name)
ADDITIONAL_DEFAULT_PROPERTIES += \
ro.allow.mock.location=1
endif
這樣就只會生效current product.
方法一:
在makefile中加入"ADDITIONAL_BUILD_PROPERTIES"
ex:
in product_name.mk (device/product_name/product_name.mk)
...
ADDITIONAL_BUILD_PROPERTIES += \
ro.debuggable=1
...
---------------------------------------------------------------
in my_product_name.mk (不同的product)
...
ADDITIONAL_DEFAULT_PROPERTIES := \
ro.debuggable=1
...
side effect:
因為我在進行建立不同的product tree,可以有不同的product在同一份code base裡,
但我在實驗中發現,利用ADDITIONAL_BUILD_PROPERTIES, ADDITIONAL_DEFAULT_PROPERTIES,
會影響到全部的product.
所以加個判斷:
ifeq ($(TARGET_PRODUCT),my_produce_name)
ADDITIONAL_DEFAULT_PROPERTIES += \
ro.allow.mock.location=1
endif
PS. ADDITIONAL_BUILD_PROPERTIES是指增加property到out/target/product/product_name/system/build.prop,
ADDITIONAL_DEFAULT_PROPERTIES是增加property到out/target/product/product_name/root/default.prop.
方法二
修改 build/core/Makefile
TARGET_PRODUCT_DIR=device/$(TARGET_PRODUCT)
$(INSTALLED_BUILD_PROP_TARGET): $(BUILDINFO_SH) $(INTERNAL_BUILD_ID_MAKEFILE) $(BUILD_SYSTEM)/version_defaults.mk $(wildcard $(TARGET_DEVICE_DIR)/system.prop)
...
if [ -f $(TARGET_PRODUCT_DIR)/system.prop ]; then \
cat $(TARGET_PRODUCT_DIR)/system.prop >> $@; \
else \
cat $(TARGET_DEVICE_DIR)/system.prop >> $@; \
fi
...
原本的寫法,build.prop是去cat device/product_name/system.prop,還有一些default值.
我是把它改成先以current product path下判斷是否有system.prop,如果沒有就抓device path下的 system.prop
PS. $(INSTALLED_BUILD_PROP_TARGET): 就是out/target/product/product_name/system/build.prop
方法三:
在makefile 裡加:
PRODUCT_PROPERTY_OVERRIDES += \
persist.service.adb.enable=1
ifeq ($(TARGET_PRODUCT),my_product_name)
ADDITIONAL_DEFAULT_PROPERTIES += \
ro.allow.mock.location=1
endif
這樣就只會生效current product.
2011年10月3日 星期一
Busybox
1. Download busybox
1) adb push busybox /mnt/sdcard/busybox
2) adb install Busybox.apk
2. change system to read, write
1) adb shell
2) # mount
rootfs / rootfs ro,relatime 0 0
tmpfs /dev tmpfs rw,nosuid,relatime,mode=755 0 0
devpts /dev/pts devpts rw,relatime,mode=600 0 0
proc /proc proc rw,relatime 0 0
sysfs /sys sysfs rw,relatime 0 0
debugfs /sys/kernel/debug debugfs rw,relatime 0 0
none /acct cgroup rw,relatime,cpuacct 0 0
tmpfs /mnt/asec tmpfs rw,relatime,mode=755,gid=1000 0 0
tmpfs /mnt/obb tmpfs rw,relatime,mode=755,gid=1000 0 0
none /dev/cpuctl cgroup rw,relatime,cpu 0 0
/dev/block/mmcblk0p3 /system ext4 ro,relatime,barrier=1,data=ordered 0 0
/dev/block/mmcblk0p7 /data ext4 rw,nosuid,nodev,noatime,barrier=1,data=ordered 0 0
/dev/block/mmcblk0p4 /cache ext4 rw,nosuid,nodev,noatime,barrier=1,data=ordered 0 0
/dev/fuse /mnt/sdcard fuse rw,nosuid,nodev,relatime,user_id=1023,group_id=1023,default_permissions,allow_other 0 0
找出 system所在位置
3) mount -o rw,remount /dev/block/mmcblk0p3 /system
4) cat /mnt/sdcard/busybox > /system/bin/busybox
5) cd /system/bin
6) chmod 777 busybox
7) mount -o ro,remount /dev/block/mmcblk0p3 /system
3. install Busybox.apk
1) execute Busybox.apk
2) press button Install, it will show "done".
4. use busybox
1) busybox find . -name com.android.settings
1) adb push busybox /mnt/sdcard/busybox
2) adb install Busybox.apk
2. change system to read, write
1) adb shell
2) # mount
rootfs / rootfs ro,relatime 0 0
tmpfs /dev tmpfs rw,nosuid,relatime,mode=755 0 0
devpts /dev/pts devpts rw,relatime,mode=600 0 0
proc /proc proc rw,relatime 0 0
sysfs /sys sysfs rw,relatime 0 0
debugfs /sys/kernel/debug debugfs rw,relatime 0 0
none /acct cgroup rw,relatime,cpuacct 0 0
tmpfs /mnt/asec tmpfs rw,relatime,mode=755,gid=1000 0 0
tmpfs /mnt/obb tmpfs rw,relatime,mode=755,gid=1000 0 0
none /dev/cpuctl cgroup rw,relatime,cpu 0 0
/dev/block/mmcblk0p3 /system ext4 ro,relatime,barrier=1,data=ordered 0 0
/dev/block/mmcblk0p7 /data ext4 rw,nosuid,nodev,noatime,barrier=1,data=ordered 0 0
/dev/block/mmcblk0p4 /cache ext4 rw,nosuid,nodev,noatime,barrier=1,data=ordered 0 0
/dev/fuse /mnt/sdcard fuse rw,nosuid,nodev,relatime,user_id=1023,group_id=1023,default_permissions,allow_other 0 0
找出 system所在位置
3) mount -o rw,remount /dev/block/mmcblk0p3 /system
4) cat /mnt/sdcard/busybox > /system/bin/busybox
5) cd /system/bin
6) chmod 777 busybox
7) mount -o ro,remount /dev/block/mmcblk0p3 /system
3. install Busybox.apk
1) execute Busybox.apk
2) press button Install, it will show "done".
4. use busybox
1) busybox find . -name com.android.settings
2011年9月28日 星期三
在adb中使用sqlite
Step:
1. adb shell
2. sqlite3 data/data/com.android.providers.settings/databases/settings.db
3. select * from system; //show all value in this talbe.
4. update system set value="0" where name ="accelerometer_rotation";
5. .database //show database
6. .table //show table
7. .quit //exit
8. delete from system where id=0; //delete
9. create table test(one varchar(10), two smallint);
10. insert into test values('goodbye', 20);
11. .help
1. adb shell
2. sqlite3 data/data/com.android.providers.settings/databases/settings.db
3. select * from system; //show all value in this talbe.
4. update system set value="0" where name ="accelerometer_rotation";
5. .database //show database
6. .table //show table
7. .quit //exit
8. delete from system where id=0; //delete
9. create table test(one varchar(10), two smallint);
10. insert into test values('goodbye', 20);
11. .help
2011年9月21日 星期三
將APK加到system.img
添加 HelloAndroid.apk
首先在 Android 源始碼建立一個目錄:
建立一個 Android.mk
首先在 Android 源始碼建立一個目錄:
mkdir -p prebuilt/android-arm/HelloAndroid建立一個 Android.mk
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
# Module name should match apk name to be installed.
LOCAL_MODULE := HelloAndroid
LOCAL_SRC_FILES := $(LOCAL_MODULE).apk
LOCAL_MODULE_CLASS := APPS
LOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX)LOCAL_CERTIFICATE := platform
LOCAL_MODULE_TAGS := debug
include $(BUILD_PREBUILT)
$(call add-prebuilt-files, APPS, $(prebuilt_files)) 詳細參考android open source websitehttp://www.kandroid.org/online-pdk/guide/build_cookbook.html
修改android settings default value
settings default value
android settings的default value大多可以在/frameworks/base/packages/SettingsProvider/res/values/default.xml 中找到.
overwirte settings value
在device下,所屬的產品目錄下利用overlay,新增相同的路徑及需要overwrite的檔案(default.xml). 將所需要修改的設定值寫入default.xml中.
ex: /device/nvidia/ventana_cts/overlay/frameworks/base/packages/SettingsProvider/res/values/default.xml
default.xml 撰寫規則
<?xml version="1.0" encoding="utf-8"?>
<resources>
<add-resource type="bool" name="def_adb_enabled"/>
<bool name="def_adb_enabled">true</bool>
<integer name="def_screen_off_timeout">1800000</integer>
</resources>
若是原先在default.xml中沒有的項目,利用tag "add-resource ", 若是已經存在,就直接寫入新的預設值.
其它失敗情形
少數項目還是無法修改,則直接修改/frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java
及 /frameworks/base/packages/SettingsProvider/res/values/default.xml
加入下列子串
DatabaseHelper.java :
loadBooleanSetting(stmt, Settings.Secure.ACCESSIBILITY_ENABLED,
R.bool.def_accessibility_enabled);
default.xml :
<bool name="def_accessibility_enabled">true</bool>
android settings的default value大多可以在/frameworks/base/packages/SettingsProvider/res/values/default.xml 中找到.
overwirte settings value
在device下,所屬的產品目錄下利用overlay,新增相同的路徑及需要overwrite的檔案(default.xml). 將所需要修改的設定值寫入default.xml中.
ex: /device/nvidia/ventana_cts/overlay/frameworks/base/packages/SettingsProvider/res/values/default.xml
default.xml 撰寫規則
<?xml version="1.0" encoding="utf-8"?>
<resources>
<add-resource type="bool" name="def_adb_enabled"/>
<bool name="def_adb_enabled">true</bool>
<integer name="def_screen_off_timeout">1800000</integer>
</resources>
若是原先在default.xml中沒有的項目,利用tag "add-resource ", 若是已經存在,就直接寫入新的預設值.
其它失敗情形
少數項目還是無法修改,則直接修改/frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java
及 /frameworks/base/packages/SettingsProvider/res/values/default.xml
加入下列子串
DatabaseHelper.java :
loadBooleanSetting(stmt, Settings.Secure.ACCESSIBILITY_ENABLED,
R.bool.def_accessibility_enabled);
default.xml :
<bool name="def_accessibility_enabled">true</bool>
2011年9月14日 星期三
在Ubuntu上使用adb
在任何路徑下皆可執行adb
修改bashrc
favoritepili@favoritepili-AS5551:~$sudo gedit /.bashrc
加入下面文字.
sudo ln -s /home/kelsey_lai/Android/android-sdk-linux/platform-tools/adb /bin/adb
adb shell無法執行
執行adb shell 顯示 "error: insufficient permissions for device"
favoritepili@favoritepili-AS5551:~$ adb devices
List of devices attached ???????????? no permissions
1. 使用root權限
favoritepili@favoritepili-AS5551:~$sudo -s
[sudo] password for favoritepili:
root@favoritepili-AS5551:~# adb kill-server ; adb start-server
* daemon not running. starting it now *
* daemon started successfully *
root@favoritepili-AS5551:~# exit
exit
favoritepili@favoritepili-AS5551:~$
再次執行adb shell就可以了。
2.
轉到adb目錄
favoritepili@favoritepili-AS5551:~$cd ~/Android/android-sdk-linux_x86/platform-tools
favoritepili@favoritepili-AS5551:~/Android/android-sdk-linux_x86/platform-tools$ ls -l adb
-rwxr-xr-x 1 favoritepili favoritepili 341694 2010-05-11 05:46 adb
favoritepili@favoritepili-AS5551:~/Android/android-sdk-linux_x86/platform-tools$ sudo chown root:root adb
[sudo] password for favoritepili:
favoritepili@favoritepili-AS5551:~/Android/android-sdk-linux_x86/platform-tools$ ls -l adb
-rwxr-xr-x 1 root root 341694 2010-05-11 05:46 adb
favoritepili@favoritepili-AS5551:~/Android/android-sdk-linux_x86/platform-tools$ sudo chmod u+s adb
favoritepili@favoritepili-AS5551:~/Android/android-sdk-linux_x86/platform-tools$ ls -l adb
-rwsr-xr-x 1 root root 341694 2010-05-11 05:46 adb
favoritepili@favoritepili-AS5551:~/Android/android-sdk-linux_x86/platform-tools$
這樣無論那個用戶啟動adb皆是root權限.
PS.
adb pull下來的文件主權限為root:root,所以修改起来不方便.
修改bashrc
favoritepili@favoritepili-AS5551:~$sudo gedit /.bashrc
加入下面文字.
#Android adb
export PATH=${HOME}/Android/android-sdk-linux_x86/platform-tools/:$PATH
orsudo ln -s /home/kelsey_lai/Android/android-sdk-linux/platform-tools/adb /bin/adb
adb shell無法執行
執行adb shell 顯示 "error: insufficient permissions for device"
favoritepili@favoritepili-AS5551:~$ adb devices
List of devices attached ???????????? no permissions
1. 使用root權限
favoritepili@favoritepili-AS5551:~$sudo -s
[sudo] password for favoritepili:
root@favoritepili-AS5551:~# adb kill-server ; adb start-server
* daemon not running. starting it now *
* daemon started successfully *
root@favoritepili-AS5551:~# exit
exit
favoritepili@favoritepili-AS5551:~$
再次執行adb shell就可以了。
2.
轉到adb目錄
favoritepili@favoritepili-AS5551:~$cd ~/Android/android-sdk-linux_x86/platform-tools
favoritepili@favoritepili-AS5551:~/Android/android-sdk-linux_x86/platform-tools$ ls -l adb
-rwxr-xr-x 1 favoritepili favoritepili 341694 2010-05-11 05:46 adb
favoritepili@favoritepili-AS5551:~/Android/android-sdk-linux_x86/platform-tools$ sudo chown root:root adb
[sudo] password for favoritepili:
favoritepili@favoritepili-AS5551:~/Android/android-sdk-linux_x86/platform-tools$ ls -l adb
-rwxr-xr-x 1 root root 341694 2010-05-11 05:46 adb
favoritepili@favoritepili-AS5551:~/Android/android-sdk-linux_x86/platform-tools$ sudo chmod u+s adb
favoritepili@favoritepili-AS5551:~/Android/android-sdk-linux_x86/platform-tools$ ls -l adb
-rwsr-xr-x 1 root root 341694 2010-05-11 05:46 adb
favoritepili@favoritepili-AS5551:~/Android/android-sdk-linux_x86/platform-tools$
這樣無論那個用戶啟動adb皆是root權限.
PS.
adb pull下來的文件主權限為root:root,所以修改起来不方便.
訂閱:
文章 (Atom)