Red de conocimiento informático - Material del sitio web - Cómo localizar fallas en la capa del marco de trabajo de Android

Cómo localizar fallas en la capa del marco de trabajo de Android

Encuentre la implementación del SDK y descompílela.

Este paso requiere el dispositivo correspondiente, porque hay una implementación del SDK en el dispositivo, que puede ser un paquete jar o un odex. Generalmente se encuentra en /system/framework. en En el ejemplo anterior, /system/framework/framework.jar es el paquete jar que se encontrará.

Dependiendo de si se encuentra el paquete jar u odex, elija diferentes herramientas para descompilarlo.

El código pequeño descompilado conserva la siguiente línea de información:

código

1 . Línea 134

2 nueva instancia v0, Landroid/graphics/PointF;

3

4 invoke-direct {v0}, Landroid/graphics/PointF; ->()V

5

6 iput-object v0, p0, Landroid/view/ViewGroup;->mLocalPoint:Landroid/graphics/PointF;

p>

7

8 . Línea 147

9 const/4 v0, -0x1

10

11 entrada. v0, p0, Landroid/view/ ViewGroup;->mLastTouchDownIndex:I

12

13 . Línea 178

14 iput v1, p0, Landroid/view. /ViewGroup;->mLayoutMode:I

15

Lea el código pequeño y compare el código fuente

Encuentre el código pequeño líneas de código, lea el código fuente cercano y compárelo con una versión similar del código fuente del SDK, incluso si se trata de una Rom personalizada, el código fuente no se modificará demasiado. En base a esto, es posible identificar la causa específica del accidente.

Utilice el método anterior para encontrar el código correspondiente al bloqueo:

Código

1 for (int i = 0; i < ChildrenCount; i++ ) {

2 int childIndex = customOrder ?getChildDrawingOrder(childrenCount, i): i;

3 final View child = (preorderedList == null)

4 ? niños[childIndex] : preorderedList.get(childIndex);

5 if ((child.mViewFlags & VISIBILITY_MASK) == VISIBLE || child.getAnimation () != null) {

6 más |= drawChild(canvas, child, drawTime);

7 }

8 }

9

Es mucho más fácil encontrar el problema en este punto.