Because of this bug in java:
http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4215269
hierarchyviewer doesn't work with the android-x86. The windows's and
views's hashcode could be negative integers, and Integer.parseInt can
not cope with it.
Two git repo need patch, the first is sdk:
diff --git a/hierarchyviewer/src/com/android/hierarchyviewer/device/Window.java
b/hierarchyviewer/src/com/android/hierarchyviewer/device/Window.java
index 0417df6..6645d01 100644
--- a/hierarchyviewer/src/com/android/hierarchyviewer/device/Window.java
+++ b/hierarchyviewer/src/com/android/hierarchyviewer/device/Window.java
@@ -20,9 +20,9 @@ public class Window {
public static final Window FOCUSED_WINDOW = new Window("<Focused Window>",
-1);
private String title;
- private int hashCode;
+ private long hashCode;
- public Window(String title, int hashCode) {
+ public Window(String title, long hashCode) {
this.title = title;
this.hashCode = hashCode;
}
@@ -31,12 +31,12 @@ public class Window {
return title;
}
- public int getHashCode() {
+ public long getHashCode() {
return hashCode;
}
public String encode() {
- return Integer.toHexString(hashCode);
+ return Long.toHexString(hashCode);
}
public String toString() {
diff --git
a/hierarchyviewer/src/com/android/hierarchyviewer/scene/WindowsLoader.java
b/hierarchyviewer/src/com/android/hierarchyviewer/scene/WindowsLoader.java
index ef93707..758061a 100644
--- a/hierarchyviewer/src/com/android/hierarchyviewer/scene/WindowsLoader.java
+++ b/hierarchyviewer/src/com/android/hierarchyviewer/scene/WindowsLoader.java
@@ -58,7 +58,7 @@ public class WindowsLoader {
int index = line.indexOf(' ');
if (index != -1) {
Window w = new Window(line.substring(index + 1),
- Integer.parseInt(line.substring(0, index), 16));
+ Long.parseLong(line.substring(0, index), 16));
windows.add(w);
}
}
The second is frameworks/base:
diff --git a/core/java/android/view/ViewDebug.java
b/core/java/android/view/ViewDebug.java
index 4baf612..efb1558 100644
--- a/core/java/android/view/ViewDebug.java
+++ b/core/java/android/view/ViewDebug.java
@@ -702,7 +702,7 @@ public class ViewDebug {
if (parameter.indexOf('@') != -1) {
final String[] ids = parameter.split("@");
final String className = ids[0];
- final int hashCode = Integer.parseInt(ids[1], 16);
+ final long hashCode = Long.parseLong(ids[1], 16);
View view = root.getRootView();
if (view instanceof ViewGroup) {
@@ -927,7 +927,8 @@ public class ViewDebug {
}
}
- private static View findView(ViewGroup group, String className, int
hashCode) {
+ private static View findView(ViewGroup group, String className, long
hc_long) {
+ int hashCode = (int) hc_long;
if (isRequestedView(group, className, hashCode)) {
return group;
}
diff --git a/services/java/com/android/server/WindowManagerService.java
b/services/java/com/android/server/WindowManagerService.java
index 8709f54..25c16b8 100644
--- a/services/java/com/android/server/WindowManagerService.java
+++ b/services/java/com/android/server/WindowManagerService.java
@@ -4667,7 +4667,7 @@ public class WindowManagerService extends
IWindowManager.Stub
index = parameters.length();
}
final String code = parameters.substring(0, index);
- int hashCode = "ffffffff".equals(code) ? -1 :
Integer.parseInt(code, 16);
+ long hashCode = "ffffffff".equals(code) ? -1 :
Long.parseLong(code, 16);
// Extract the command's parameter after the window description
if (index < parameters.length()) {
@@ -4711,7 +4711,8 @@ public class WindowManagerService extends
IWindowManager.Stub
return success;
}
- private WindowState findWindow(int hashCode) {
+ private WindowState findWindow(long hc_long) {
+ int hashCode = (int)hc_long;
if (hashCode == -1) {
return getFocusedWindow();
}
--
unsubscribe: [email protected]
website: http://groups.google.com/group/android-porting