如何轻松"显示布局界限"用于Android调试?

时间:2014-05-22 06:59:29

标签: android debugging

我想观看App的布局而不用无聊和点击。


我尝试adb shell setprop debug.layout true无法正常工作,除非重启或打开设置 这可能是由于设置没有更新造成的。

我尝试用代码SystemProperties.set("debug.layout", "true")编写一个小应用程序,也没用 也许该应用程序的权威......


抱歉我的英语不好并感谢您的帮助:p

5 个答案:

答案 0 :(得分:9)

您不需要启动设置应用。只需退出您的应用,设置属性,然后启动您的应用。

adb shell am force-stop com.company.appname ; adb shell setprop debug.layout true ; adb shell monkey -p com.company.appname -c android.intent.category.LAUNCHER 1

答案 1 :(得分:8)

这对我有用:

adb shell setprop debug.layout true
adb shell service call activity 1599295570

使用adb shell setprop debug.layout true启用Show layout bounds之后,我们必须查看SystemProperties以查看更改 正如Show layout bounds QS Tiles所做的那样:

@Override
public void onClick() {
    setIsEnabled(getQsTile().getState() == Tile.STATE_INACTIVE);
    new DevelopmentSettings.SystemPropPoker().execute(); // Settings app magic
    refresh();
}

此处the original method from AOSP source

public static class SystemPropPoker extends AsyncTask<Void, Void, Void> {
    @Override
    protected Void doInBackground(Void... params) {
        String[] services = ServiceManager.listServices();
        for (String service : services) {
            IBinder obj = ServiceManager.checkService(service);
            if (obj != null) {
                Parcel data = Parcel.obtain();
                try {
                    obj.transact(IBinder.SYSPROPS_TRANSACTION, data, null, 0);
                } catch (RemoteException e) {
                } catch (Exception e) {
                    Log.i(TAG, "Someone wrote a bad service '" + service
                            + "' that doesn't like to be poked: " + e);
                }
                data.recycle();
            }
        }
        return null;
    }
}

号码1599295570称为SYSPROPS_TRANSACTION

参考:https://github.com/dhelleberg/android-scripts/blob/master/src/devtools.groovy

答案 2 :(得分:5)

我发现一个DevelopQuickSetting工具可以很容易地做到这一点。 https://github.com/kyze8439690/DevelopQuickSetting

并且核心代码转换为adb shel:

adb shell setprop debug.layout true
adb shell service check SurfaceFlinger

答案 3 :(得分:2)

这个工具运行正常。 在启动此程序之前,您需要安装groovy。

https://github.com/dhelleberg/android-scripts

答案 4 :(得分:1)

这是我的fish shell函数,该函数还将帮助您从fzf的多个设备中进行选择。将其保存在〜/ .config / fish.functions /中,并像这样使用它:

enter image description here

如果您拥有一台以上的设备,则会提示您使用fzf选择一个设备

enter image description here