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
2011年9月28日 星期三
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,所以修改起来不方便.
2010年10月27日 星期三
應用程式如何取得系統權限
在Android上執行不同的apk會跑在不同的sandbox上, 並且以不同的身份(uid)在執行, 但問題是我今天想要用system身份做某些事或是想要在不同的app分享資源時, 就會需要能對apk指定uid, 方法有兩種分別說明如下:
方法一
1.修改AndroidManifest.xml, 新增android:sharedUserId="android.uid.system"屬性(使用system身份)
2.修改Android.mk文件,加入LOCAL_CERTIFICATE := platform這一行
3.重新編譯apk
PS. LOCAL_CERTIFICATE := platform, 由於試驗的這份source code 是由客戶提供,所以"platform"這個關鍵字已經被定義好了.
方法二
1.如方法一修改AndroidManifest.xml, 新增 android:sharedUserId="android.uid.system" 屬性(使用system身份)
2.使用Eclipse編譯出apk
3.刪除該apk中META-INF目錄下的CERT.SF和CERT.RSA兩個檔案
4.以系統的public/private key重新簽署打包apk, signapk的用法為
Usage: signapk [-w] publickey.x509[.pem] privatekey.pk8 input.jar output.jar
5.實際執行命令如下.
$java -jar signapk.jar -w ./platform.x509.pem ./platform.pk8 ./input.apk ./output.apk(此為將所有檔案放於同一路徑下)
PS. signapk.jar , platform.x509.pem, platform.pk8可於source code中取得
如果想要不同的apk以相同的uid身份在執行, 則在這些不同的APK中AndroidManifest.xml的語法為
manifest xmlns:android="http://schemas.android.com/apk/res/android" android:sharedUserId="{MY.URI.FORMAT}"
方法一
1.修改AndroidManifest.xml, 新增android:sharedUserId="android.uid.system"屬性(使用system身份)
2.修改Android.mk文件,加入LOCAL_CERTIFICATE := platform這一行
3.重新編譯apk
PS. LOCAL_CERTIFICATE := platform, 由於試驗的這份source code 是由客戶提供,所以"platform"這個關鍵字已經被定義好了.
方法二
1.如方法一修改AndroidManifest.xml, 新增 android:sharedUserId="android.uid.system" 屬性(使用system身份)
2.使用Eclipse編譯出apk
3.刪除該apk中META-INF目錄下的CERT.SF和CERT.RSA兩個檔案
4.以系統的public/private key重新簽署打包apk, signapk的用法為
Usage: signapk [-w] publickey.x509[.pem] privatekey.pk8 input.jar output.jar
5.實際執行命令如下.
$java -jar signapk.jar -w ./platform.x509.pem ./platform.pk8 ./input.apk ./output.apk(此為將所有檔案放於同一路徑下)
PS. signapk.jar , platform.x509.pem, platform.pk8可於source code中取得
如果想要不同的apk以相同的uid身份在執行, 則在這些不同的APK中AndroidManifest.xml的語法為
manifest xmlns:android="http://schemas.android.com/apk/res/android" android:sharedUserId="{MY.URI.FORMAT}"
在Ubuntu上安裝及設定NDK
1. 下載NDK for Ubuntu,位置可任意決定.
2. 編輯 bashrc
1) 於終端機下command "sudo gedit ~/.bashrc", 添加下面文字.
2) NDK_ROOT=android_ndk_path, 後面的目徑是NDK的目錄,前面的名稱可任取.
ex: NDK_ROOT=/home/favoritepili/Android/android-ndk-r4b/
3) export NDK_ROOT
4)儲存,離開.
PS. 由於是下載r4版,所以從此版開始不需要修改host-setup.sh
3. 測試
1) 進入目標compile目錄. ex: "/home/favoritepili/Android/android-ndk-r4b/samples/hello-jni"
2) type "$NDK_ROOT/ndk-build
3) 如果成功會產生obj及libs兩個目錄
4. error
1) 如果有錯誤訊息"Your APP_BUILD_SCRIPT points to an unknown file".
確認你的路徑有沒有設錯, APP_BUILD_SCRIPT設定在project的.mk檔中.
2)可以type command "$NDK_ROOT/ndk-build NDK_LOG=1", 來查看有何問題.
2. 編輯 bashrc
1) 於終端機下command "sudo gedit ~/.bashrc", 添加下面文字.
2) NDK_ROOT=android_ndk_path, 後面的目徑是NDK的目錄,前面的名稱可任取.
ex: NDK_ROOT=/home/favoritepili/Android/android-ndk-r4b/
3) export NDK_ROOT
4)儲存,離開.
PS. 由於是下載r4版,所以從此版開始不需要修改host-setup.sh
3. 測試
1) 進入目標compile目錄. ex: "/home/favoritepili/Android/android-ndk-r4b/samples/hello-jni"
2) type "$NDK_ROOT/ndk-build
3) 如果成功會產生obj及libs兩個目錄
4. error
1) 如果有錯誤訊息"Your APP_BUILD_SCRIPT points to an unknown file".
確認你的路徑有沒有設錯, APP_BUILD_SCRIPT設定在project的.mk檔中.
2)可以type command "$NDK_ROOT/ndk-build NDK_LOG=1", 來查看有何問題.
建立Windows cmd.exe 的shortcut
建立Windows cmd.exe shortcut
1. 在檔案總管任意路徑下按右鍵選"新增","捷徑".
2. 在輸入項目的位置中打"%COMSPEC%",然後按下一步.
3. 捷徑的名稱可任意取,然後按完成.
4. 點選此捷徑按右鍵.
5. 於"捷徑"此分頁中的"開始位置"輸入你想要執行cmd.exe時的預設位置. ex:"F:\Tools\AndroidNeedTools\android-sdk-windows\tools"
6. 完成.
1. 在檔案總管任意路徑下按右鍵選"新增","捷徑".
2. 在輸入項目的位置中打"%COMSPEC%",然後按下一步.
3. 捷徑的名稱可任意取,然後按完成.
4. 點選此捷徑按右鍵.
5. 於"捷徑"此分頁中的"開始位置"輸入你想要執行cmd.exe時的預設位置. ex:"F:\Tools\AndroidNeedTools\android-sdk-windows\tools"
6. 完成.
訂閱:
文章 (Atom)