在Android froyo 上
他也有support meta的tag
在Android external webkit的
找 ANDROID_META_SUPPORT 這個keyword
然後在這可以找到他support 哪些attribute
http://android.git.kernel.org/?p=platform/external/webkit.git;a=blob;f=WebCore/page/Settings.cpp;h=c495a230a9bc4d1c0383e67d293ec22e3c036f3c;hb=HEAD#l443
Tuesday, November 30, 2010
Javascript的 setTimeout
最近發現 Javascript的setTimeout有兩種call 法
1. pass a Function Object
function fired () {
}
setTimeout(fired, 1000);
2. Pass a String Object
function fired () {
而這會用eval()的方法來執行他
特別的是 我剛剛把這兩種用法搞混了
變成
setTimeout(fired(), 1000);
把fired 變成 fired()
也就是變成先call fired() 這function , 才把這function的return值傳給setTimeout
變成 1st argument
難怪我的code一直不對
1. pass a Function Object
function fired () {
}
setTimeout(fired, 1000);
2. Pass a String Object
function fired () {
}
setTimeout("fired();", 1000);而這會用eval()的方法來執行他
特別的是 我剛剛把這兩種用法搞混了
變成
setTimeout(fired(), 1000);
把fired 變成 fired()
也就是變成先call fired() 這function , 才把這function的return值傳給setTimeout
變成 1st argument
難怪我的code一直不對
touchstart event on Android Webkit(froyo)
Android Webkit (Froyo) 目前support 的touch event有
touchstart
touchmove
touchend
touchcancel
touchlongpress
touchdoubletap
這些定義在
http://android.git.kernel.org/?p=platform/external/webkit.git;a=blob;f=WebCore/dom/EventNames.h;h=b20eaa8e1de56b97be408f0a3a27e050921e5573;hb=HEAD#l149
以及在這些被處理的
http://android.git.kernel.org/?p=platform/external/webkit.git;a=blob;f=WebKit/android/jni/WebViewCore.cpp;h=70e96cd8a4dece9312717778b2497ad6ac945170;hb=HEAD#l2041
這裡有個網頁可以來測試
http://kangax.github.com/iseventsupported/
touchstart
touchmove
touchend
touchcancel
touchlongpress
touchdoubletap
這些定義在
http://android.git.kernel.org/?p=platform/external/webkit.git;a=blob;f=WebCore/dom/EventNames.h;h=b20eaa8e1de56b97be408f0a3a27e050921e5573;hb=HEAD#l149
以及在這些被處理的
http://android.git.kernel.org/?p=platform/external/webkit.git;a=blob;f=WebKit/android/jni/WebViewCore.cpp;h=70e96cd8a4dece9312717778b2497ad6ac945170;hb=HEAD#l2041
這裡有個網頁可以來測試
http://kangax.github.com/iseventsupported/
Monday, November 29, 2010
Saturday, November 27, 2010
N82拆機
今天手機的鍵盤又壞掉了
已經用了兩年半了但覺得很好甩 所以沒換新機的打算
於是上網找了N82的拆機教學
雖然沒有Nokia的toolkit 但拿了平時鎖眼鏡用的起子
一樣把keyboard前的面板給拆開了
把位置調一調
再裝回去 果然我的N82又復活了~
已經用了兩年半了但覺得很好甩 所以沒換新機的打算
於是上網找了N82的拆機教學
雖然沒有Nokia的toolkit 但拿了平時鎖眼鏡用的起子
一樣把keyboard前的面板給拆開了
把位置調一調
再裝回去 果然我的N82又復活了~
Friday, November 26, 2010
Thursday, November 25, 2010
Android PREBUILT_PACKAGE
最近發現 Prebuilt java libaray 的style 跟一般的BUILD_PACKAGE大不相同呀
http://groups.google.com/group/android-building/browse_thread/thread/26c5ec332fe924a2
http://groups.google.com/group/android-building/browse_thread/thread/f7f57432a677ca85
http://groups.google.com/group/android-building/browse_thread/thread/26c5ec332fe924a2
http://groups.google.com/group/android-building/browse_thread/thread/f7f57432a677ca85
c 的offsetof
在wiki上看到的offsetof的macro
http://en.wikipedia.org/wiki/Offsetof
http://gcc.gnu.org/onlinedocs/gcc-4.4.2/gcc/Offsetof.html
http://blog.linux.org.tw/~jserv/archives/001399.html
而他有兩個argument
第一個是struct type 第二個是member
http://en.wikipedia.org/wiki/Offsetof
http://gcc.gnu.org/onlinedocs/gcc-4.4.2/gcc/Offsetof.html
http://blog.linux.org.tw/~jserv/archives/001399.html
而他有兩個argument
第一個是struct type 第二個是member
The C++ Programming Language的問題
1.在Chap3 3.11 Advice p.66 裡 第七條
Using string rather than char*
請問即使我對char * 用了簡單的strcat strcpy這些library
會比string 還要來的慢嗎???
或者是可以說明在處理字串時(就ascii就好了)
什麼時候用string,when to use char*呢?
2.在10.2.8 Structurs and Classes的最後 p.235
他講了一句
allowing many access sepcifiers in a class is useful for
machine generated code.
就是他上面有講個例子 public,private可以一直加的
class Data4 {
public :
...
private :
...
public:
...
}
這裡的machine generated code是指什麼?
是某些tool產生出的c++ code還是compile完產生的code
(IR, assembly, or machine code)
為什麼會useful??
3. 在10.4.6.2 Member Constants p249
他說可以initialize a static integral constant member
為什麼只有int 可以 float那些為什麼不行呢???
4.在11.2.3 p265
第一段要結束時他說
it is not possible to define an operator function that
operates exclusively on pointers
5.Sec13.4 Using Template Arguments to Specify Policy
主要在講用Template class來specify operation(less,eq,..)
在p339 倒數第三段最後面 他說了
whereas inlining a call through a pointer to function
requires exceptional attention from a compiler
在這裡指的exceptional attention是指什麼呢?
寫C寫久了會很習慣用pointer to function
但想知道這裡不建議使用pfn的原因
6. Sec14.2 Grouping of Exceptions
第一段的第三行有說
the effect of a throw is to unwind the stack until a
suitable catch is found
他說的unwind是什麼意思呢
是指一般function return時stack會清掉的意思嗎?
(esp回到ebp)
如果是這樣的話
throw 出來的那個object(or pointer,reference)
他是存在哪裡的??
stack被清掉那exception應該也會被清吧???
Using string rather than char*
請問即使我對char * 用了簡單的strcat strcpy這些library
會比string 還要來的慢嗎???
或者是可以說明在處理字串時(就ascii就好了)
什麼時候用string,when to use char*呢?
2.在10.2.8 Structurs and Classes的最後 p.235
他講了一句
allowing many access sepcifiers in a class is useful for
machine generated code.
就是他上面有講個例子 public,private可以一直加的
class Data4 {
public :
...
private :
...
public:
...
}
這裡的machine generated code是指什麼?
是某些tool產生出的c++ code還是compile完產生的code
(IR, assembly, or machine code)
為什麼會useful??
3. 在10.4.6.2 Member Constants p249
他說可以initialize a static integral constant member
為什麼只有int 可以 float那些為什麼不行呢???
4.在11.2.3 p265
第一段要結束時他說
it is not possible to define an operator function that
operates exclusively on pointers
5.Sec13.4 Using Template Arguments to Specify Policy
主要在講用Template class來specify operation(less,eq,..)
在p339 倒數第三段最後面 他說了
whereas inlining a call through a pointer to function
requires exceptional attention from a compiler
在這裡指的exceptional attention是指什麼呢?
寫C寫久了會很習慣用pointer to function
但想知道這裡不建議使用pfn的原因
6. Sec14.2 Grouping of Exceptions
第一段的第三行有說
the effect of a throw is to unwind the stack until a
suitable catch is found
他說的unwind是什麼意思呢
是指一般function return時stack會清掉的意思嗎?
(esp回到ebp)
如果是這樣的話
throw 出來的那個object(or pointer,reference)
他是存在哪裡的??
stack被清掉那exception應該也會被清吧???
Wednesday, November 24, 2010
LOCAL_USER_TAGS on Gingerbrand branch
http://groups.google.com/group/android-building/browse_thread/thread/26c5ec332fe924a2
in this post JBQ mentioned that the build will fail if it uses LOCAL_USER_TAGS := user
and the APK isnt contained in PRODUCT_PACKAGES
about the PRODUCT_PACKAGES
it is located in build/target/product/{generic, sdk}.mk
in this post JBQ mentioned that the build will fail if it uses LOCAL_USER_TAGS := user
and the APK isnt contained in PRODUCT_PACKAGES
about the PRODUCT_PACKAGES
it is located in build/target/product/{generic, sdk}.mk
Tuesday, November 23, 2010
debug.db.uid
今天在這個post裡 看到了debug.db.uid
http://groups.google.com/group/android-ndk/browse_thread/thread/95a5b508973b21c7
裡面講到的32767就是0x7fff
不過其實在android的網頁 就有講到這個了
http://source.android.com/porting/debugging_gdb.html
在debuggerd裡會來讀這個property
http://android.git.kernel.org/?p=platform/system/core.git;a=blob;f=debuggerd/debuggerd.c;h=3b2972acc05c2da5c9f9f28b81364042e2e1e8da;hb=HEAD#l694
http://groups.google.com/group/android-ndk/browse_thread/thread/95a5b508973b21c7
裡面講到的32767就是0x7fff
不過其實在android的網頁 就有講到這個了
http://source.android.com/porting/debugging_gdb.html
在debuggerd裡會來讀這個property
http://android.git.kernel.org/?p=platform/system/core.git;a=blob;f=debuggerd/debuggerd.c;h=3b2972acc05c2da5c9f9f28b81364042e2e1e8da;hb=HEAD#l694
Thursday, November 18, 2010
signature check in Android PluginManager
常常看到有人在問android PluginManager裡面的signature 是幹嘛用的
http://android.git.kernel.org/?p=platform/frameworks/base.git;a=blob;f=core/java/android/webkit/PluginManager.java;h=cdcb662e057c4d41b7e7af235991d53037d1e19d;hb=HEAD#l75
查了一下commit的log
原來是當初要給flash on android
commit 73477e7336cd1bdd67984a0f6374c79108a8f098
Author: Grace Kloba
Date: Wed Sep 30 17:45:46 2009 -0700
Add the signature checking for WebView plugins. The
first one is for SampleBrowserPlugin. The second
one is for Flash.
diff --git a/core/java/android/webkit/PluginManager.java b/core/java/android/webkit/PluginManager.java
index 766bd75..edba446 100644
--- a/core/java/android/webkit/PluginManager.java
+++ b/core/java/android/webkit/PluginManager.java
@@ -65,6 +65,15 @@ public class PluginManager {
private ArrayList mPackageInfoCache;
+ // Only plugin matches one of the signatures in the list can be loaded
+ // inside the WebView process
+ private static final String SIGNATURE_1 = "308204a830820390a003020102020900936eacbe07f201df300d06092a864886f70d0101050500308194310b3009060355040613025553311330110603550408130a43616c69666f726e69613116301
+ private static final String SIGNATURE_2 = "308204c5308203ada003020102020900d7cb412f75f4887e300d06092a864886f70d010105050030819d310b3009060355040613025553311330110603550408130a43616c69666f726e69613111300
+
+ private static final Signature[] SIGNATURES = new Signature[] {
+ new Signature(SIGNATURE_1), new Signature(SIGNATURE_2)
+ };
+
private PluginManager(Context context) {
mContext = context;
mPackageInfoCache = new ArrayList();
@@ -148,9 +157,12 @@ public class PluginManager {
}
boolean signatureMatch = false;
for (Signature signature : signatures) {
- // TODO: check signature against Google provided one
- signatureMatch = true;
- break;
+ for (int i = 0; i < SIGNATURES.length; i++) {
+ if (SIGNATURES[i].equals(signature)) {
+ signatureMatch = true;
+ break;
+ }
+ }
}
if (!signatureMatch) {
continue;
http://android.git.kernel.org/?p=platform/frameworks/base.git;a=blob;f=core/java/android/webkit/PluginManager.java;h=cdcb662e057c4d41b7e7af235991d53037d1e19d;hb=HEAD#l75
查了一下commit的log
原來是當初要給flash on android
commit 73477e7336cd1bdd67984a0f6374c79108a8f098
Author: Grace Kloba
Date: Wed Sep 30 17:45:46 2009 -0700
Add the signature checking for WebView plugins. The
first one is for SampleBrowserPlugin. The second
one is for Flash.
diff --git a/core/java/android/webkit/PluginManager.java b/core/java/android/webkit/PluginManager.java
index 766bd75..edba446 100644
--- a/core/java/android/webkit/PluginManager.java
+++ b/core/java/android/webkit/PluginManager.java
@@ -65,6 +65,15 @@ public class PluginManager {
private ArrayList
+ // Only plugin matches one of the signatures in the list can be loaded
+ // inside the WebView process
+ private static final String SIGNATURE_1 = "308204a830820390a003020102020900936eacbe07f201df300d06092a864886f70d0101050500308194310b3009060355040613025553311330110603550408130a43616c69666f726e69613116301
+ private static final String SIGNATURE_2 = "308204c5308203ada003020102020900d7cb412f75f4887e300d06092a864886f70d010105050030819d310b3009060355040613025553311330110603550408130a43616c69666f726e69613111300
+
+ private static final Signature[] SIGNATURES = new Signature[] {
+ new Signature(SIGNATURE_1), new Signature(SIGNATURE_2)
+ };
+
private PluginManager(Context context) {
mContext = context;
mPackageInfoCache = new ArrayList
@@ -148,9 +157,12 @@ public class PluginManager {
}
boolean signatureMatch = false;
for (Signature signature : signatures) {
- // TODO: check signature against Google provided one
- signatureMatch = true;
- break;
+ for (int i = 0; i < SIGNATURES.length; i++) {
+ if (SIGNATURES[i].equals(signature)) {
+ signatureMatch = true;
+ break;
+ }
+ }
}
if (!signatureMatch) {
continue;
Tuesday, November 16, 2010
龍馬傳 #1 上士と下士
第一集出現了 岩崎弥太郎 這個人
沒聽過所以查了一下他
http://ja.wikipedia.org/wiki/%E5%B2%A9%E5%B4%8E%E5%BC%A5%E5%A4%AA%E9%83%8E
不過發現了一件事
慶応3年(1867年)、後藤象二郎に藩の商務組織・土佐商会主任・長崎留守居役に抜擢され、藩の貿易に従事する。坂本龍馬が脱藩の罪を許されて亀山社中が海援隊として土佐藩の外郭機関となると、藩命を受け隊の経理を担当した。記録上確認出来る弥太郎と龍馬の最初の接点はこの時である。
而在龍馬傳裡
他們在很小就認識了
所以這部分是不合史實的地方
另外還注意到了龍馬的三姐 乙女
http://ja.wikipedia.org/wiki/%E5%9D%82%E6%9C%AC%E4%B9%99%E5%A5%B3
其實是個很大隻的女生!!
身長5尺8寸(約174cm)・体重30貫(約112kg)
沒聽過所以查了一下他
http://ja.wikipedia.org/wiki/%E5%B2%A9%E5%B4%8E%E5%BC%A5%E5%A4%AA%E9%83%8E
不過發現了一件事
慶応3年(1867年)、後藤象二郎に藩の商務組織・土佐商会主任・長崎留守居役に抜擢され、藩の貿易に従事する。坂本龍馬が脱藩の罪を許されて亀山社中が海援隊として土佐藩の外郭機関となると、藩命を受け隊の経理を担当した。記録上確認出来る弥太郎と龍馬の最初の接点はこの時である。
而在龍馬傳裡
他們在很小就認識了
所以這部分是不合史實的地方
另外還注意到了龍馬的三姐 乙女
http://ja.wikipedia.org/wiki/%E5%9D%82%E6%9C%AC%E4%B9%99%E5%A5%B3
其實是個很大隻的女生!!
身長5尺8寸(約174cm)・体重30貫(約112kg)
Monday, November 15, 2010
the default Javascript engine on froyo emulator
大家都以為到了froyo, Webkit就default 使用 V8 來作javascript engine了
但其實在emulator裡 還是使用 JavascriptCore來作JavaScript engine
先看
http://android.git.kernel.org/?p=platform/external/webkit.git;a=blob;f=Android.mk;h=4390cf32121dc7de380b8d1fc655c48228e4e502;hb=HEAD#l48
要在 ARCH_ARM_HAVE_VFP 有被defined時 default js engine才是v8
emulator default是用armv5-te的cpu
http://android.git.kernel.org/?p=platform/build.git;a=blob;f=core/combo/TARGET_linux-arm.mk;h=f998cf44b7f7e6eebafefa97500cae12c0bf57d2;hb=HEAD#l34
而armv5-te的makefile裡 並沒有enable ARCH_ARM_HAVE_VFP
http://android.git.kernel.org/?p=platform/build.git;a=blob;f=core/combo/arch/arm/armv5te.mk;h=29aada6d9c52d08a3d8b7c4fac46d78f5b99f694;hb=HEAD
在這個post裡說明了為什麼emulator 還是用armv5而不是用armv7
http://groups.google.com/group/android-ndk/browse_thread/thread/a19fc6df3d661d79/b063b388744fa0ee?hl=en&lnk=gst&q=armv7#b063b388744fa0ee
但其實在emulator裡 還是使用 JavascriptCore來作JavaScript engine
先看
http://android.git.kernel.org/?p=platform/external/webkit.git;a=blob;f=Android.mk;h=4390cf32121dc7de380b8d1fc655c48228e4e502;hb=HEAD#l48
要在 ARCH_ARM_HAVE_VFP 有被defined時 default js engine才是v8
emulator default是用armv5-te的cpu
http://android.git.kernel.org/?p=platform/build.git;a=blob;f=core/combo/TARGET_linux-arm.mk;h=f998cf44b7f7e6eebafefa97500cae12c0bf57d2;hb=HEAD#l34
而armv5-te的makefile裡 並沒有enable ARCH_ARM_HAVE_VFP
http://android.git.kernel.org/?p=platform/build.git;a=blob;f=core/combo/arch/arm/armv5te.mk;h=29aada6d9c52d08a3d8b7c4fac46d78f5b99f694;hb=HEAD
在這個post裡說明了為什麼emulator 還是用armv5而不是用armv7
http://groups.google.com/group/android-ndk/browse_thread/thread/a19fc6df3d661d79/b063b388744fa0ee?hl=en&lnk=gst&q=armv7#b063b388744fa0ee
Friday, November 12, 2010
有關 Dalvik JIT的 post
http://groups.google.com/group/android-platform/browse_thread/thread/ee532fa70e65bb11/e68c15b638bafa60#e68c15b638bafa60
http://groups.google.com/group/android-platform/browse_thread/thread/991f18e14f8ad27e
http://groups.google.com/group/android-platform/browse_thread/thread/63e67d06f05773ac
http://groups.google.com/group/android-platform/browse_thread/thread/56e7d2002d5f3129
http://groups.google.com/group/android-platform/browse_thread/thread/fc0c9d2fa7ff28fb
tune dalvik start-up time
http://groups.google.com/group/android-platform/browse_thread/thread/784ae6f7b2410ccb
gingerbread
http://groups.google.com/group/android-platform/browse_thread/thread/3c22f5c9d5fd718
http://groups.google.com/group/android-platform/browse_thread/thread/991f18e14f8ad27e
http://groups.google.com/group/android-platform/browse_thread/thread/63e67d06f05773ac
http://groups.google.com/group/android-platform/browse_thread/thread/56e7d2002d5f3129
http://groups.google.com/group/android-platform/browse_thread/thread/fc0c9d2fa7ff28fb
tune dalvik start-up time
http://groups.google.com/group/android-platform/browse_thread/thread/784ae6f7b2410ccb
gingerbread
http://groups.google.com/group/android-platform/browse_thread/thread/3c22f5c9d5fd718
Thursday, November 11, 2010
拿到一隻hbbot是0.35的nexus one
昨天拿到一隻nexus one
想燒自己的image進去
結果在fastboot flashall的時候發現
這隻hboot是0.35的
他一直說要0.33才能燒
在xda找了看能不能回復到0.33好像也沒什麼用
那個link的mtb0.img已經不見了
最後只有慢慢的fastboot flash system system.img 這樣一個一個的燒進去
不過也只有三四個image喔
system, boot, recovery,
頂多一個userdata
想燒自己的image進去
結果在fastboot flashall的時候發現
這隻hboot是0.35的
他一直說要0.33才能燒
在xda找了看能不能回復到0.33好像也沒什麼用
那個link的mtb0.img已經不見了
最後只有慢慢的fastboot flash system system.img 這樣一個一個的燒進去
不過也只有三四個image喔
system, boot, recovery,
頂多一個userdata
Wednesday, November 10, 2010
Android的Google Group
一開始覺得那些Android的Engineer會跟我一樣每天讀那些post
像Dianne Hackborn, David Turner,JBQ, fadden, Xavi.....
但是現在覺得Android的Google Group是有人來專門每天讀那些post
然後過濾過後再把真正有問題的post轉到相關的人員身上
像Dianne Hackborn, David Turner,JBQ, fadden, Xavi.....
但是現在覺得Android的Google Group是有人來專門每天讀那些post
然後過濾過後再把真正有問題的post轉到相關的人員身上
Monday, November 1, 2010
android 的FileObserver
之前很好奇 為什麼
adb push test.apk /system/app
就可以把test.apk裝起來
然後把adb shell rm /system/app/test.apk
就可以把他刪除
原來是PackageManagerService裡有個AppDirObserver
其實就是extend android.os.FileObserver
然後再看FileObserver
原來他是用了linux裡的inotify這個feature
http://en.wikipedia.org/wiki/Inotify
adb push test.apk /system/app
就可以把test.apk裝起來
然後把adb shell rm /system/app/test.apk
就可以把他刪除
原來是PackageManagerService裡有個AppDirObserver
其實就是extend android.os.FileObserver
然後再看FileObserver
原來他是用了linux裡的inotify這個feature
http://en.wikipedia.org/wiki/Inotify
kawakami-san離職了
上星期五請病假
不過今天打開email收信時
卻發現 kawakami-san上星期五寄給我的信
說 今天已經是他最後一天在這了 接下來他就離職了
kawakami是之前在英國認識的同事
我們是一起要到London出差的
雖然只有一星期 雖然我們只能用破破的英文聊天
從一開始他只是笑笑的回答我
到最後也會跟我聊很多事 (當然是灌他幾杯米露之後)
而且到最後一天我才發現 他的職位是
Division Supervisor
囧了...........我一直開部門主管的玩笑...................
雖然在這裡這種事我也常作...................................
Good Luck , Kawakami-san
wish I can see you again
不過今天打開email收信時
卻發現 kawakami-san上星期五寄給我的信
說 今天已經是他最後一天在這了 接下來他就離職了
kawakami是之前在英國認識的同事
我們是一起要到London出差的
雖然只有一星期 雖然我們只能用破破的英文聊天
從一開始他只是笑笑的回答我
到最後也會跟我聊很多事 (當然是灌他幾杯米露之後)
而且到最後一天我才發現 他的職位是
Division Supervisor
囧了...........我一直開部門主管的玩笑...................
雖然在這裡這種事我也常作...................................
Good Luck , Kawakami-san
wish I can see you again
kawakami-san在新的UK office被我偷拍到
Subscribe to:
Posts (Atom)