Git Product home page Git Product logo

viewinspector's Introduction

View Inspector Plugin

Download

View inspection toolbar for android development.

Features

  • Boundary

    • show outlines
    • show margins
    • show paddings
  • Layer

  • Event

    • Probe features
    • Profile View Tree
  • Logging

    • show view life-cycle events in logcat
  • Absolute ZERO effects on non-debug builds

Usage

buildscript {
  repositories {
    jcenter() // or mavenCentral()
  }

  dependencies {
    classpath 'com.github.xfumihiro.view-inspector:view-inspector-plugin:0.2.0'
  }
}

apply plugin: 'com.android.application'
apply plugin: 'view-inspector'

To exclude packages:

viewInspector {
  excludePackages = ['android.widget.Space', 'com.squareup.leakcanary.internal']
}

SNAPSHOTS of the development version. [usage]

Inspirations & Dependencies

Scalpel by Jake Wharton

Probe by Lucas Rocha

this article by Sriram Ramani

Toolbar fashion : Telecine by Jake Wharton

Developed by

Fumihiro Xue

License

Copyright 2015 Fumihiro Xue

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

viewinspector's People

Contributors

shiraji avatar xfumihiro avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

viewinspector's Issues

ProbeProxy$android_widget_import

view_inspector/ProbeProxy$android_widget_import.java:84: 错误: 需要';'
view_inspector/ProbeProxy$android_widget_import.java:87: 错误: 解析时已到达文件结尾

Wrong package of SurfaceView

There's no such class as android.widget.SurfaceView however there's android.view.SurfaceView. ViewInspector tries to import non-existing class using wrong package.
App fails to compile with this error:

/<path>/app/build/generated/source/view-inspector/armv7MultiDex/debug/<my_package>/view_inspector/ProbeProxy$android_widget_SurfaceView.java:8: error: cannot find symbol
import android.widget.SurfaceView;
                     ^
  symbol:   class SurfaceView
  location: package android.widget
/<path>/app/build/generated/source/view-inspector/armv7MultiDex/debug/<my_package>/view_inspector/ProbeProxy$android_widget_SurfaceView.java:9: error: cannot find symbol
public final class ProbeProxy$android_widget_SurfaceView extends SurfaceView
                                                                 ^
  symbol: class SurfaceView
warning: The following options were not recognized by any processor: '[kapt.kotlin.generated]'
2 errors

Overlay Error

E/AndroidRuntime: FATAL EXCEPTION: main
Process: me.zhanghai.android.patternlock.sample, PID: 5194
java.lang.RuntimeException: Unable to start activity ComponentInfo{me.zhanghai.android.patternlock.sample/me.zhanghai.android.patternlock.sample.app.LockScreenConfirm}: android.view.WindowManager$BadTokenException: Unable to add window android.view.ViewRootImpl$W@3124ada -- permission denied for this window type
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2416)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476)
at android.app.ActivityThread.-wrap11(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5417)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
Caused by: android.view.WindowManager$BadTokenException: Unable to add window android.view.ViewRootImpl$W@3124ada -- permission denied for this window type
at android.view.ViewRootImpl.setView(ViewRootImpl.java:591)
at android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:310)
at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:85)
at android.app.Dialog.show(Dialog.java:319)
at me.zhanghai.android.patternlock.sample.util.utils.LockscreenUtils.lock(LockscreenUtils.java:52)
at me.zhanghai.android.patternlock.sample.app.LockScreenConfirm.lockHomeButton(LockScreenConfirm.java:228)
at me.zhanghai.android.patternlock.sample.app.LockScreenConfirm.onCreate(LockScreenConfirm.java:159)
at android.app.Activity.performCreate(Activity.java:6237)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1107)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2369)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476) 
at android.app.ActivityThread.-wrap11(ActivityThread.java) 
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344) 
at android.os.Handler.dispatchMessage(Handler.java:102) 
at android.os.Looper.loop(Looper.java:148) 
at android.app.ActivityThread.main(ActivityThread.java:5417) 
at java.lang.reflect.Method.invoke(Native Method) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 
06-30 17:44:09.788 1661-4267/system_process E/Surface: getSlotFromBufferLocked: unknown buffer: 0x9fe70740
06-30 17:44:12.822 1173-1290/? E/SurfaceFlinger: ro.sf.lcd_density must be defined as a build property

Project doesn't compile if you have requestFocus in the layout

Any element representing a View object can include this empty element, which gives its parent initial focus on the screen. You can have only one of these elements per file. See: http://developer.android.com/guide/topics/resources/layout-resource.html

Attempting to assign weaker access privileges

Some view classes have public access privileges on event methods. (#1)
Quick & easy way to fix this is to assign public privileges to every proxy methods. A more decent solution requires mapping with actual view class's privileges.

ProbeProxy$kankan_wheel_widget_WheelView

import android.content.Context;
import android.graphics.Canvas;
import android.util.AttributeSet;
import view_inspector.probe.Interceptor;
import view_inspector.probe.ViewProxy;
import kankan.wheel.widget.WheelView;
public final class ProbeProxy$kankan_wheel_widget_WheelView extends WheelView
implements ViewProxy {

Error:(8, 27) 错误: 程序包kankan.wheel.widget inexistence
Error:(9, 69) 错误: 找不到符号
符号: 类 WheelView

java.lang.NoSuchFieldError

java.lang.NoSuchFieldError: No static field toggle_menu of type I in class Lview_inspector/R$id; or its superclasses (declaration of 'view_inspector.R$id' appears in /data/app/com.unicorn.csp.xcdemo-1/base.apk)
at view_inspector.ui.ViewInspectorToolbar.onAttachedToWindow(ViewInspectorToolbar.java:90)
at android.view.View.dispatchAttachedToWindow(View.java:13543)
at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:2690)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1322)
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1084)
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:5990)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:767)
at android.view.Choreographer.doCallbacks(Choreographer.java:580)
at android.view.Choreographer.doFrame(Choreographer.java:550)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:753)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5343)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:905)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:700)

Support startup configurations

It would be cool if we could specify on build.gradle file to disable "Log view events" for example. The motivation for this issue rise from the following situation: on more complex apps as the hierarchy view might be big the time that app consumes just logging data is bigger than time drawing/measuring views.

Support for ignoring certain package namespaces?

I get the following error due to a conflict with an external library:

Error:(51, 18) error: onDraw(Canvas) in ProbeProxy$com_afollestad_materialdialogs_internal_MDRootLayout cannot override onDraw(Canvas) in MDRootLayout
attempting to assign weaker access privileges; was public

Obviously it would be nice to just have a fix if it's a bug, but would be nice to be able to skip namespaces in the meantime

貌似不能与LeakCanary兼容

引入了LeakCanay后,再引入ViewInspector,会在build阶段报一个:
Error:(9, 97) 错误: 无法从最终DisplayLeakConnectorView进行继承

i have a ClassCastException, do you know how to solve it ?

10-30 14:16:39.231 32462-32462/? E/AndroidRuntime﹕ FATAL EXCEPTION: main
Process: com.sun.mylab, PID: 32462
java.lang.ClassCastException: android.widget.FrameLayout$LayoutParams cannot be cast to com.android.internal.widget.ActionBarOverlayLayout$LayoutParams
at com.android.internal.widget.ActionBarOverlayLayout.onMeasure(ActionBarOverlayLayout.java:448)
at android.view.View.measure(View.java:17676)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5539)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:436)
at com.android.internal.policy.impl.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2676)
at android.view.View.measure(View.java:17676)
at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:2046)
at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1192)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1402)
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1080)
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:5952)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:767)
at android.view.Choreographer.doCallbacks(Choreographer.java:580)
at android.view.Choreographer.doFrame(Choreographer.java:550)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:753)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5384)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:931)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:726)

0.1.4 compile failed

D:\workspace\leying\build\generated\source\view-inspector\debug\com\levp\leying\view_inspector\ProbeProxy$android_widget_requestFocus.java
Error:(8, 22) 错误: 找不到符号
符号: 类 requestFocus
位置: 程序包 android.widget
Error:(9, 67) 错误: 找不到符号
符号: 类 requestFocus
Error:(20, 30) 错误: 不兼容的类型: ProbeProxy$android_widget_requestFocus无法转换为View
Error:(23, 7) 错误: 找不到符号
符号: 变量 super
位置: 类 ProbeProxy$android_widget_requestFocus
Error:(27, 5) 错误: 找不到符号
符号: 变量 super
位置: 类 ProbeProxy$android_widget_requestFocus
Error:(31, 29) 错误: 不兼容的类型: ProbeProxy$android_widget_requestFocus无法转换为View
Error:(34, 7) 错误: 找不到符号
符号: 变量 super
位置: 类 ProbeProxy$android_widget_requestFocus
Error:(38, 5) 错误: 找不到符号
符号: 变量 super
位置: 类 ProbeProxy$android_widget_requestFocus
Error:(42, 25) 错误: 不兼容的类型: ProbeProxy$android_widget_requestFocus无法转换为View
Error:(45, 7) 错误: 找不到符号
符号: 变量 super
位置: 类 ProbeProxy$android_widget_requestFocus
Error:(49, 5) 错误: 找不到符号
符号: 变量 super
位置: 类 ProbeProxy$android_widget_requestFocus
Error:(53, 27) 错误: 不兼容的类型: ProbeProxy$android_widget_requestFocus无法转换为View
Error:(56, 7) 错误: 找不到符号
符号: 变量 super
位置: 类 ProbeProxy$android_widget_requestFocus
Error:(60, 5) 错误: 找不到符号
符号: 变量 super
位置: 类 ProbeProxy$android_widget_requestFocus
Error:(64, 34) 错误: 不兼容的类型: ProbeProxy$android_widget_requestFocus无法转换为View
Error:(67, 7) 错误: 找不到符号
符号: 变量 super
位置: 类 ProbeProxy$android_widget_requestFocus
Error:(71, 5) 错误: 找不到符号
符号: 变量 super
位置: 类 ProbeProxy$android_widget_requestFocus
Error:(75, 32) 错误: 不兼容的类型: ProbeProxy$android_widget_requestFocus无法转换为View
Error:(78, 7) 错误: 找不到符号
符号: 变量 super
位置: 类 ProbeProxy$android_widget_requestFocus
Error:(82, 5) 错误: 找不到符号
符号: 变量 super
位置: 类 ProbeProxy$android_widget_requestFocus
Error:(85, 5) 错误: 找不到符号
符号: 变量 super
位置: 类 ProbeProxy$android_widget_requestFocus

can‘t compile

Cannot change dependencies of configuration ':sample:debugCompile' after it has been included in dependency resolution.

android.view.WindowManager$BadTokenException: Permission denied for this window type

I'm using a 0.1.2-SNAPSHOT version of library and my app crashes at startup. Can't use 0.1.1 because of bug with WebViews.
I do have a permission android.permission.SYSTEM_ALERT_WINDOW in my AndroidManifest.xml

 java.lang.RuntimeException: Unable to start activity ComponentInfo{com.armaxis.mobile/com.armaxis.mobile.StartupActivity}: android.view.WindowManager$BadTokenException: Unable to add window android.view.ViewRootImpl$W@3fb6060 -- permission denied for this window type
     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2416)
     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476)
     at android.app.ActivityThread.-wrap11(ActivityThread.java)
     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344)
     at android.os.Handler.dispatchMessage(Handler.java:102)
     at android.os.Looper.loop(Looper.java:148)
     at android.app.ActivityThread.main(ActivityThread.java:5417)
     at java.lang.reflect.Method.invoke(Native Method)
     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
Caused by: android.view.WindowManager$BadTokenException: Unable to add window android.view.ViewRootImpl$W@3fb6060 -- permission denied for this window type
     at android.view.ViewRootImpl.setView(ViewRootImpl.java:591)
     at android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:310)
     at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:85)
     at view_inspector.weaving.ViewInspectorAspect.injectViewInspector(ViewInspectorAspect.java:82)
     at com.armaxis.mobile.StartupActivity.onCreate(StartupActivity.java:36)
     at android.app.Activity.performCreate(Activity.java:6237)
     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1107)
     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2369)
     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476) 
     at android.app.ActivityThread.-wrap11(ActivityThread.java) 
     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344) 
     at android.os.Handler.dispatchMessage(Handler.java:102) 
     at android.os.Looper.loop(Looper.java:148) 
     at android.app.ActivityThread.main(ActivityThread.java:5417) 
     at java.lang.reflect.Method.invoke(Native Method) 
     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 
     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 

Crash on Probe Measures when layout contains FitWindowsLinearLayout

10-28 22:02:32.659 11057-11057/com.skype.android.app E/AndroidRuntime: java.lang.ClassCastException: android.support.v7.internal.widget.FitWindowsLinearLayout cannot be cast to view_inspector.probe.ViewProxy
10-28 22:02:32.659 11057-11057/com.skype.android.app E/AndroidRuntime: at view_inspector.probe.Interceptor.invokeForceLayout(Interceptor.java:139)
10-28 22:02:32.659 11057-11057/com.skype.android.app E/AndroidRuntime: at view_inspector.probe.ViewInspectorInterceptor.forceLayoutRecursive(ViewInspectorInterceptor.java:242)
10-28 22:02:32.659 11057-11057/com.skype.android.app E/AndroidRuntime: at view_inspector.probe.ViewInspectorInterceptor.forceLayoutRecursive(ViewInspectorInterceptor.java:249)
10-28 22:02:32.659 11057-11057/com.skype.android.app E/AndroidRuntime: at view_inspector.probe.ViewInspectorInterceptor.requestLayout(ViewInspectorInterceptor.java:226)
10-28 22:02:32.659 11057-11057/com.skype.android.app E/AndroidRuntime: at com.skype.android.app.view_inspector.ProbeProxy$android_widget_FrameLayout.requestLayout(ProbeProxy$android_widget_FrameLayout.java:64)
10-28 22:02:32.659 11057-11057/com.skype.android.app E/AndroidRuntime: at android.view.View.requestLayout(View.java:18530)
10-28 22:02:32.659 11057-11057/com.skype.android.app E/AndroidRuntime: at android.view.View.requestLayout(View.java:18530)
10-28 22:02:32.659 11057-11057/com.skype.android.app E/AndroidRuntime: at android.view.View.requestLayout(View.java:18530)

VectorDrawable causes the crash on pre-Lollipop

It can only run in android 5.0?

591-591/com.github.xfumihiro.view_inspector.sample E/AndroidRuntimeFATAL EXCEPTION: main
    Process: com.github.xfumihiro.view_inspector.sample, PID: 591
    java.lang.RuntimeException: Unable to start activity ComponentInfo{com.github.xfumihiro.view_inspector.sample/viewinspector.sample.MainActivity}: android.view.InflateException: Binary XML file line #18: Error inflating class android.widget.ImageButton
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2192)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2241)
            at android.app.ActivityThread.access$800(ActivityThread.java:141)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1204)
            at android.os.Handler.dispatchMessage(Handler.java:102)
            at android.os.Looper.loop(Looper.java:136)
            at android.app.ActivityThread.main(ActivityThread.java:5049)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:515)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:609)
            at dalvik.system.NativeStart.main(Native Method)
     Caused by: android.view.InflateException: Binary XML file line #18: Error inflating class android.widget.ImageButton
            at android.view.LayoutInflater.createView(LayoutInflater.java:623)
            at com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:56)
            at android.view.LayoutInflater.onCreateView(LayoutInflater.java:672)
            at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:697)
            at android.view.LayoutInflater.rInflate(LayoutInflater.java:758)
            at android.view.LayoutInflater.rInflate(LayoutInflater.java:761)
            at android.view.LayoutInflater.inflate(LayoutInflater.java:465)
            at android.view.LayoutInflater.inflate(LayoutInflater.java:400)
            at android.view.LayoutInflater.inflate(LayoutInflater.java:353)
            at android.view.View.inflate(View.java:17500)
            at view_inspector.ui.ViewInspectorToolbar.<init>(ViewInspectorToolbar.java:60)
            at view_inspector.ui.ViewInspectorToolbar_Factory.get(ViewInspectorToolbar_Factory.java:23)
            at view_inspector.ui.ViewInspectorToolbar_Factory.get(ViewInspectorToolbar_Factory.java:9)
            at dagger.internal.ScopedProvider.get(ScopedProvider.java:46)
            at view_inspector.weaving.ViewInspectorAspect_MembersInjector.injectMembers(ViewInspectorAspect_MembersInjector.java:53)
            at view_inspector.weaving.ViewInspectorAspect_MembersInjector.injectMembers(ViewInspectorAspect_MembersInjector.java:11)
            at view_inspector.dagger.DaggerActivityComponent.inject(DaggerActivityComponent.java:261)
            at view_inspector.weaving.ViewInspectorAspect.injectViewInspector(ViewInspectorAspect.java:70)
            at viewinspector.sample.MainActivity.onCreate(MainActivity.java:11)
            at android.app.Activity.performCreate(Activity.java:5249)
            at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2156)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2241)
            at android.app.ActivityThread.access$800(ActivityThread.java:141)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1204)
            at android.os.Handler.dispatchMessage(Handler.java:102)
            at android.os.Looper.loop(Looper.java:136)
            at android.app.ActivityThread.main(ActivityThread.java:5049)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:515)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:609)
            at dalvik.system.NativeStart.main(Native Method)
     Caused by: java.lang.reflect.InvocationTargetException
            at java.lang.reflect.Constructor.constructNative(Native Method)
            at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
            at android.view.LayoutInflater.createView(LayoutInflater.java:597)
            at com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:56)
            at android.view.LayoutInflater.onCreateView(LayoutInflater.java:672)
            at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:697)
            at android.view.LayoutInflater.rInflate(LayoutInflater.java:758)
            at android.view.LayoutInflater.rInflate(LayoutInflater.java:761)
            at android.view.LayoutInflater.inflate(LayoutInflater.java:465)
            at android.view.LayoutInflater.inflate(LayoutInflater.java:400)
            at android.view.LayoutInflater.inflate(LayoutInflater.java:353)
            at android.view.View.inflate(View.java:17500)
            at view_inspector.ui.ViewInspectorToolbar.<init>(ViewInspectorToolbar.java:60)
            at view_inspector.ui.ViewInspectorToolbar_Factory.get(ViewInspectorToolbar_Factory.java:23)
            at view_inspector.ui.ViewInspectorToolbar_Factory.get(ViewInspectorToolbar_Factory.java:9)
            at dagger.internal.ScopedProvider.get(ScopedProvider.java:46)
            at view_inspector.weaving.ViewInspectorAspect_MembersInjector.injectMembers(ViewInspectorAspect_MembersInjector.java:53)
            at view_inspector.weaving.ViewInspectorAspect_MembersInjector.injectMembers(ViewInspectorAspect_MembersInjector.java:11)
            at view_inspector.dagger.DaggerActivityComponent.inject(DaggerActivityComponent.java:261)
            at view_inspector.weaving.ViewInspectorAspect.injectViewInspector(ViewInspectorAspect.java:70)
            at viewinspector.sample.MainActivity.onCreate(MainActivity.java:11)
            at android.app.Activity.performCreate(Activity.java:5249)
            at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2156)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2241)
            at android.app.ActivityThread.access$800(ActivityThread.java:141)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1204)
            at android.os.Handler.dispatchMessage(Handler.java:102)
            at android.os.Looper.loop(Looper.java:136)
            at android.app.ActivityThread.main(ActivityThread.java:5049)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:515)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:609)
            at dalvik.system.NativeStart.main(Native Method)
     Caused by: android.content.res.Resources$NotFoundException: File res/drawable/ic_chevron_left_white_24px.xml from drawable resource ID #0x7f020033
            at android.content.res.Resources.loadDrawable(Resources.java:2149)
            at android.content.res.MiuiResources.loadDrawable(MiuiResources.java:348)
            at android.content.res.Resources.loadDrawable(Resources.java:2072)
            at android.content.res.TypedArray.getDrawable(TypedArray.java:602)
            at android.widget.ImageView.<init>(ImageView.java:129)
            at android.widget.ImageButton.<init>(ImageButton.java:87)
            at android.widget.ImageButton.<init>(ImageButton.java:83)
            at java.lang.reflect.Constructor.constructNative(Native Method)
            at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
            at android.view.LayoutInflater.createView(LayoutInflater.java:597)
            at com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:56)
            at android.view.LayoutInflater.onCreateView(LayoutInflater.java:672)
            at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:697)
            at android.view.LayoutInflater.rInflate(LayoutInflater.java:758)
            at android.view.LayoutInflater.rInflate(LayoutInflater.java:761)
            at android.view.LayoutInflater.inflate(LayoutInflater.java:465)
            at android.view.LayoutInflater.inflate(LayoutInflater.java:400)
            at android.view.LayoutInflater.inflate(LayoutInflater.java:353)
            at android.view.View.inflate(View.java:17500)
            at view_inspector.ui.ViewInspectorToolbar.<init>(ViewInspectorToolbar.java:60)
            at view_inspector.ui.ViewInspectorToolbar_Factory.get(ViewInspectorToolbar_Factory.java:23)
            at view_inspector.ui.ViewInspectorToolbar_Factory.get(ViewInspectorToolbar_Factory.java:9)
            at dagger.internal.ScopedProvider.get(ScopedProvider.java:46)
            at view_inspector.weaving.ViewInspectorAspect_MembersInjector.injectMembers(ViewInspectorAspect_MembersInjector.java:53)
            at view_inspector.weaving.ViewInspectorAspect_MembersInjector.injectMembers(ViewInspectorAspect_MembersInjector.java:11)
            at view_inspector.dagger.DaggerActivityComponent.inject(DaggerActivityComponent.java:261)
            at view_inspector.weaving.ViewInspectorAspect.injectViewInspector(ViewInspectorAspect.java:70)
            at viewinspector.sample.MainActivity.onCreate(MainActivity.java:11)
            at android.app.Activity.performCreate(Activity.java:5249)
            at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2156)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2241)
            at android.app.ActivityThread.access$800(ActivityThread.java:141)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1204)
            at android.os.Handler.dispatchMessage(Handler.java:102)
            at android.os.Looper.loop(Looper.java:136)
            at android.app.ActivityThread.main(ActivityThread.java:5049)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:515)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:609)
            at dalvik.system.NativeStart.main(Native Method)
     Caused by: org.xmlpull.v1.XmlPullParserException: Binary XML file line #2: invalid drawable tag vector
            at android.graphics.drawable.Drawable.createFromXmlInner(Drawable.java:935)
            at android.graphics.drawable.

``` java

Manifest file path should not be hard code

Hi, this project is a good idea! But the hard code File androidManifest = project.file('src/main/AndroidManifest.xml') will cause some problems when my project structure is different from AS project. For example the project migrated from eclipse. Maybe you can choose a more configurable method.

Resources$NotFoundException when logging is enabled

0:09:14.727 17090-17090/com.skype.android.app E/AndroidRuntime: android.content.res.Resources$NotFoundException: Unable to find resource ID #0xc00200
10-28 20:09:14.727 17090-17090/com.skype.android.app E/AndroidRuntime: at android.content.res.Resources.getResourceName(Resources.java:3216)
10-28 20:09:14.727 17090-17090/com.skype.android.app E/AndroidRuntime: at view_inspector.util.ViewUtil.getViewId(ViewUtil.java:12)
10-28 20:09:14.727 17090-17090/com.skype.android.app E/AndroidRuntime: at view_inspector.util.ViewUtil.getSimpleViewId(ViewUtil.java:16)
10-28 20:09:14.727 17090-17090/com.skype.android.app E/AndroidRuntime: at view_inspector.probe.util.LogUtil.logRequestLayout(LogUtil.java:116)
10-28 20:09:14.727 17090-17090/com.skype.android.app E/AndroidRuntime: at view_inspector.probe.ViewInspectorInterceptor.requestLayout(ViewInspectorInterceptor.java:217)
10-28 20:09:14.727 17090-17090/com.skype.android.app E/AndroidRuntime: at com.skype.android.app.view_inspector.ProbeProxy$android_widget_RelativeLayout.requestLayout(ProbeProxy$android_widget_RelativeLayout.java:64)
10-28 20:09:14.727 17090-17090/com.skype.android.app E/AndroidRuntime: at android.view.View.setFlags(View.java:10641)
10-28 20:09:14.727 17090-17090/com.skype.android.app E/AndroidRuntime: at android.view.View.setVisibility(View.java:7136)

should be enough just to wrap in try/catch as it looks like API bug https://code.google.com/p/android/issues/detail?id=55965

Problems with WebView

Hi.

I get the following error when compiling

app/build/generated/source/view-inspector/beta/debug/app/view_inspector/ProbeProxy$android_widget_WebView.java
Error:(8, 22) error: cannot find symbol class WebView
Error:(9, 62) error: cannot find symbol class WebView
Error:(8, 22) error: cannot find symbol class WebView
Error:(9, 62) error: cannot find symbol class WebView
Error:(20, 19) error: method onMeasure in class Interceptor cannot be applied to given types;
required: View,int,int
found: ProbeProxy$android_widget_WebView,int,int
reason: actual argument ProbeProxy$android_widget_WebView cannot be converted to View by method invocation conversion

crash: The specified child already has a parent. You must call removeView() on the child's parent first.

10-26 12:50:45.463 31217-31217/com.ztiany.imageselector E/AndroidRuntime: FATAL EXCEPTION: main
10-26 12:50:45.463 31217-31217/com.ztiany.imageselector E/AndroidRuntime: Process: com.ztiany.imageselector, PID: 31217
10-26 12:50:45.463 31217-31217/com.ztiany.imageselector E/AndroidRuntime: java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first.
10-26 12:50:45.463 31217-31217/com.ztiany.imageselector E/AndroidRuntime: at android.view.ViewGroup.addViewInner(ViewGroup.java:3936)
10-26 12:50:45.463 31217-31217/com.ztiany.imageselector E/AndroidRuntime: at android.view.ViewGroup.addView(ViewGroup.java:3786)
10-26 12:50:45.463 31217-31217/com.ztiany.imageselector E/AndroidRuntime: at android.view.ViewGroup.addView(ViewGroup.java:3758)
10-26 12:50:45.463 31217-31217/com.ztiany.imageselector E/AndroidRuntime: at view_inspector.probe.ViewInspectorInterceptor.insertScalpelLayout(ViewInspectorInterceptor.java:272)
10-26 12:50:45.463 31217-31217/com.ztiany.imageselector E/AndroidRuntime: at view_inspector.probe.ViewInspectorInterceptor.onMeasure(ViewInspectorInterceptor.java:166)
10-26 12:50:45.463 31217-31217/com.ztiany.imageselector E/AndroidRuntime: at com.ztiany.imageselector.view_inspector.ProbeProxy$android_widget_FrameLayout.onMeasure(ProbeProxy$android_widget_FrameLayout.java:20)
10-26 12:50:45.463 31217-31217/com.ztiany.imageselector E/AndroidRuntime: at android.view.View.measure(View.java:17547)
10-26 12:50:45.463 31217-31217/com.ztiany.imageselector E/AndroidRuntime: at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5535)
10-26 12:50:45.463 31217-31217/com.ztiany.imageselector E/AndroidRuntime: at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1436)
10-26 12:50:45.463 31217-31217/com.ztiany.imageselector E/AndroidRuntime: at android.widget.LinearLayout.measureVertical(LinearLayout.java:722)
10-26 12:50:45.463 31217-31217/com.ztiany.imageselector E/AndroidRuntime: at android.widget.LinearLayout.onMeasure(LinearLayout.java:613)
10-26 12:50:45.463 31217-31217/com.ztiany.imageselector E/AndroidRuntime: at com.ztiany.imageselector.view_inspector.ProbeProxy$android_widget_LinearLayout.invokeOnMeasure(ProbeProxy$android_widget_LinearLayout.java:27)
10-26 12:50:45.463 31217-31217/com.ztiany.imageselector E/AndroidRuntime: at view_inspector.probe.Interceptor.invokeOnMeasure(Interceptor.java:59)
10-26 12:50:45.463 31217-31217/com.ztiany.imageselector E/AndroidRuntime: at view_inspector.probe.Interceptor.onMeasure(Interceptor.java:51)
10-26 12:50:45.463 31217-31217/com.ztiany.imageselector E/AndroidRuntime: at view_inspector.probe.ViewInspectorInterceptor.onMeasure(ViewInspectorInterceptor.java:176)
10-26 12:50:45.463 31217-31217/com.ztiany.imageselector E/AndroidRuntime: at com.ztiany.imageselector.view_inspector.ProbeProxy$android_widget_LinearLayout.onMeasure(ProbeProxy$android_widget_LinearLayout.java:20)
10-26 12:50:45.463 31217-31217/com.ztiany.imageselector E/AndroidRuntime: at android.view.View.measure(View.java:17547)
10-26 12:50:45.463 31217-31217/com.ztiany.imageselector E/AndroidRuntime: at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5535)
10-26 12:50:45.463 31217-31217/com.ztiany.imageselector E/AndroidRuntime: at android.widget.FrameLayout.onMeasure(FrameLayout.java:436)
10-26 12:50:45.463 31217-31217/com.ztiany.imageselector E/AndroidRuntime: at com.android.internal.policy.impl.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2615)
10-26 12:50:45.463 31217-31217/com.ztiany.imageselector E/AndroidRuntime: at android.view.View.measure(View.java:17547)
10-26 12:50:45.463 31217-31217/com.ztiany.imageselector E/AndroidRuntime: at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:2015)
10-26 12:50:45.463 31217-31217/com.ztiany.imageselector E/AndroidRuntime: at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1173)
10-26 12:50:45.463 31217-31217/com.ztiany.imageselector E/AndroidRuntime: at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1379)
10-26 12:50:45.463 31217-31217/com.ztiany.imageselector E/AndroidRuntime: at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1061)
10-26 12:50:45.463 31217-31217/com.ztiany.imageselector E/AndroidRuntime: at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:5885)
10-26 12:50:45.463 31217-31217/com.ztiany.imageselector E/AndroidRuntime: at android.view.Choreographer$CallbackRecord.run(Choreographer.java:767)
10-26 12:50:45.463 31217-31217/com.ztiany.imageselector E/AndroidRuntime: at android.view.Choreographer.doCallbacks(Choreographer.java:580)
10-26 12:50:45.463 31217-31217/com.ztiany.imageselector E/AndroidRuntime: at android.view.Choreographer.doFrame(Choreographer.java:550)
10-26 12:50:45.463 31217-31217/com.ztiany.imageselector E/AndroidRuntime: at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:753)
10-26 12:50:45.463 31217-31217/com.ztiany.imageselector E/AndroidRuntime: at android.os.Handler.handleCallback(Handler.java:739)
10-26 12:50:45.463 31217-31217/com.ztiany.imageselector E/AndroidRuntime: at android.os.Handler.dispatchMessage(Handler.java:95)
10-26 12:50:45.463 31217-31217/com.ztiany.imageselector E/AndroidRuntime: at android.os.Looper.loop(Looper.java:135)
10-26 12:50:45.463 31217-31217/com.ztiany.imageselector E/AndroidRuntime: at android.app.ActivityThread.main(ActivityThread.java:5254)
10-26 12:50:45.463 31217-31217/com.ztiany.imageselector E/AndroidRuntime: at java.lang.reflect.Method.invoke(Native Method)
10-26 12:50:45.463 31217-31217/com.ztiany.imageselector E/AndroidRuntime: at java.lang.reflect.Method.invoke(Method.java:372)
10-26 12:50:45.463 31217-31217/com.ztiany.imageselector E/AndroidRuntime: at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
10-26 12:50:45.463 31217-31217/com.ztiany.imageselector E/AndroidRuntime: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.