Search in sources :

Example 6 with AndroidException

use of android.util.AndroidException in project android_frameworks_base by AOSPA.

the class Am method runInstrument.

private void runInstrument() throws Exception {
    String profileFile = null;
    boolean wait = false;
    boolean rawMode = false;
    boolean no_window_animation = false;
    int userId = UserHandle.USER_CURRENT;
    Bundle args = new Bundle();
    String argKey = null, argValue = null;
    IWindowManager wm = IWindowManager.Stub.asInterface(ServiceManager.getService("window"));
    String abi = null;
    String opt;
    while ((opt = nextOption()) != null) {
        if (opt.equals("-p")) {
            profileFile = nextArgRequired();
        } else if (opt.equals("-w")) {
            wait = true;
        } else if (opt.equals("-r")) {
            rawMode = true;
        } else if (opt.equals("-e")) {
            argKey = nextArgRequired();
            argValue = nextArgRequired();
            args.putString(argKey, argValue);
        } else if (opt.equals("--no_window_animation") || opt.equals("--no-window-animation")) {
            no_window_animation = true;
        } else if (opt.equals("--user")) {
            userId = parseUserArg(nextArgRequired());
        } else if (opt.equals("--abi")) {
            abi = nextArgRequired();
        } else {
            System.err.println("Error: Unknown option: " + opt);
            return;
        }
    }
    if (userId == UserHandle.USER_ALL) {
        System.err.println("Error: Can't start instrumentation with user 'all'");
        return;
    }
    String cnArg = nextArgRequired();
    ComponentName cn;
    if (cnArg.contains("/")) {
        cn = ComponentName.unflattenFromString(cnArg);
        if (cn == null)
            throw new IllegalArgumentException("Bad component name: " + cnArg);
    } else {
        List<InstrumentationInfo> infos = mPm.queryInstrumentation(null, 0).getList();
        final int numInfos = infos == null ? 0 : infos.size();
        List<ComponentName> cns = new ArrayList<>();
        for (int i = 0; i < numInfos; i++) {
            InstrumentationInfo info = infos.get(i);
            ComponentName c = new ComponentName(info.packageName, info.name);
            if (cnArg.equals(info.packageName)) {
                cns.add(c);
            }
        }
        if (cns.size() == 0) {
            throw new IllegalArgumentException("No instrumentation found for: " + cnArg);
        } else if (cns.size() == 1) {
            cn = cns.get(0);
        } else {
            StringBuilder cnsStr = new StringBuilder();
            final int numCns = cns.size();
            for (int i = 0; i < numCns; i++) {
                cnsStr.append(cns.get(i).flattenToString());
                cnsStr.append(", ");
            }
            // Remove last ", "
            cnsStr.setLength(cnsStr.length() - 2);
            throw new IllegalArgumentException("Found multiple instrumentations: " + cnsStr.toString());
        }
    }
    InstrumentationWatcher watcher = null;
    UiAutomationConnection connection = null;
    if (wait) {
        watcher = new InstrumentationWatcher();
        watcher.setRawOutput(rawMode);
        connection = new UiAutomationConnection();
    }
    float[] oldAnims = null;
    if (no_window_animation) {
        oldAnims = wm.getAnimationScales();
        wm.setAnimationScale(0, 0.0f);
        wm.setAnimationScale(1, 0.0f);
    }
    if (abi != null) {
        final String[] supportedAbis = Build.SUPPORTED_ABIS;
        boolean matched = false;
        for (String supportedAbi : supportedAbis) {
            if (supportedAbi.equals(abi)) {
                matched = true;
                break;
            }
        }
        if (!matched) {
            throw new AndroidException("INSTRUMENTATION_FAILED: Unsupported instruction set " + abi);
        }
    }
    if (!mAm.startInstrumentation(cn, profileFile, 0, args, watcher, connection, userId, abi)) {
        throw new AndroidException("INSTRUMENTATION_FAILED: " + cn.flattenToString());
    }
    if (watcher != null) {
        if (!watcher.waitForFinish()) {
            System.out.println("INSTRUMENTATION_ABORTED: System has crashed.");
        }
    }
    if (oldAnims != null) {
        wm.setAnimationScales(oldAnims);
    }
}
Also used : IWindowManager(android.view.IWindowManager) Bundle(android.os.Bundle) ArrayList(java.util.ArrayList) IInstrumentationWatcher(android.app.IInstrumentationWatcher) UiAutomationConnection(android.app.UiAutomationConnection) AndroidException(android.util.AndroidException) InstrumentationInfo(android.content.pm.InstrumentationInfo) ComponentName(android.content.ComponentName)

Example 7 with AndroidException

use of android.util.AndroidException in project android_frameworks_base by ResurrectionRemix.

the class Am method runTraceIpcStop.

private void runTraceIpcStop() throws Exception {
    String opt;
    String filename = null;
    while ((opt = nextOption()) != null) {
        if (opt.equals("--dump-file")) {
            filename = nextArgRequired();
        } else {
            System.err.println("Error: Unknown option: " + opt);
            return;
        }
    }
    if (filename == null) {
        System.err.println("Error: Specify filename to dump logs to.");
        return;
    }
    ParcelFileDescriptor fd = null;
    try {
        File file = new File(filename);
        file.delete();
        fd = openForSystemServer(file, ParcelFileDescriptor.MODE_CREATE | ParcelFileDescriptor.MODE_TRUNCATE | ParcelFileDescriptor.MODE_WRITE_ONLY);
    } catch (FileNotFoundException e) {
        System.err.println("Error: Unable to open file: " + filename);
        System.err.println("Consider using a file under /data/local/tmp/");
        return;
    }
    ;
    if (!mAm.stopBinderTrackingAndDump(fd)) {
        throw new AndroidException("STOP TRACE FAILED.");
    }
    System.out.println("Stopped IPC tracing. Dumping logs to: " + filename);
}
Also used : AndroidException(android.util.AndroidException) ParcelFileDescriptor(android.os.ParcelFileDescriptor) FileNotFoundException(java.io.FileNotFoundException) File(java.io.File)

Example 8 with AndroidException

use of android.util.AndroidException in project android_frameworks_base by ResurrectionRemix.

the class Am method runSupportsMultiwindow.

private void runSupportsMultiwindow() throws Exception {
    // system resources does not contain all the device configuration, construct it manually.
    Configuration config = mAm.getConfiguration();
    if (config == null) {
        throw new AndroidException("Activity manager has no configuration");
    }
    final DisplayMetrics metrics = new DisplayMetrics();
    metrics.setToDefaults();
    Resources res = new Resources(AssetManager.getSystem(), metrics, config);
    System.out.println(res.getBoolean(com.android.internal.R.bool.config_supportsMultiWindow));
}
Also used : AndroidException(android.util.AndroidException) Configuration(android.content.res.Configuration) Resources(android.content.res.Resources) DisplayMetrics(android.util.DisplayMetrics)

Example 9 with AndroidException

use of android.util.AndroidException in project android_frameworks_base by crdroidandroid.

the class Am method runSupportsMultiwindow.

private void runSupportsMultiwindow() throws Exception {
    // system resources does not contain all the device configuration, construct it manually.
    Configuration config = mAm.getConfiguration();
    if (config == null) {
        throw new AndroidException("Activity manager has no configuration");
    }
    final DisplayMetrics metrics = new DisplayMetrics();
    metrics.setToDefaults();
    Resources res = new Resources(AssetManager.getSystem(), metrics, config);
    System.out.println(res.getBoolean(com.android.internal.R.bool.config_supportsMultiWindow));
}
Also used : AndroidException(android.util.AndroidException) Configuration(android.content.res.Configuration) Resources(android.content.res.Resources) DisplayMetrics(android.util.DisplayMetrics)

Example 10 with AndroidException

use of android.util.AndroidException in project android_frameworks_base by crdroidandroid.

the class Am method runInstrument.

private void runInstrument() throws Exception {
    String profileFile = null;
    boolean wait = false;
    boolean rawMode = false;
    boolean no_window_animation = false;
    int userId = UserHandle.USER_CURRENT;
    Bundle args = new Bundle();
    String argKey = null, argValue = null;
    IWindowManager wm = IWindowManager.Stub.asInterface(ServiceManager.getService("window"));
    String abi = null;
    String opt;
    while ((opt = nextOption()) != null) {
        if (opt.equals("-p")) {
            profileFile = nextArgRequired();
        } else if (opt.equals("-w")) {
            wait = true;
        } else if (opt.equals("-r")) {
            rawMode = true;
        } else if (opt.equals("-e")) {
            argKey = nextArgRequired();
            argValue = nextArgRequired();
            args.putString(argKey, argValue);
        } else if (opt.equals("--no_window_animation") || opt.equals("--no-window-animation")) {
            no_window_animation = true;
        } else if (opt.equals("--user")) {
            userId = parseUserArg(nextArgRequired());
        } else if (opt.equals("--abi")) {
            abi = nextArgRequired();
        } else {
            System.err.println("Error: Unknown option: " + opt);
            return;
        }
    }
    if (userId == UserHandle.USER_ALL) {
        System.err.println("Error: Can't start instrumentation with user 'all'");
        return;
    }
    String cnArg = nextArgRequired();
    ComponentName cn;
    if (cnArg.contains("/")) {
        cn = ComponentName.unflattenFromString(cnArg);
        if (cn == null)
            throw new IllegalArgumentException("Bad component name: " + cnArg);
    } else {
        List<InstrumentationInfo> infos = mPm.queryInstrumentation(null, 0).getList();
        final int numInfos = infos == null ? 0 : infos.size();
        List<ComponentName> cns = new ArrayList<>();
        for (int i = 0; i < numInfos; i++) {
            InstrumentationInfo info = infos.get(i);
            ComponentName c = new ComponentName(info.packageName, info.name);
            if (cnArg.equals(info.packageName)) {
                cns.add(c);
            }
        }
        if (cns.size() == 0) {
            throw new IllegalArgumentException("No instrumentation found for: " + cnArg);
        } else if (cns.size() == 1) {
            cn = cns.get(0);
        } else {
            StringBuilder cnsStr = new StringBuilder();
            final int numCns = cns.size();
            for (int i = 0; i < numCns; i++) {
                cnsStr.append(cns.get(i).flattenToString());
                cnsStr.append(", ");
            }
            // Remove last ", "
            cnsStr.setLength(cnsStr.length() - 2);
            throw new IllegalArgumentException("Found multiple instrumentations: " + cnsStr.toString());
        }
    }
    InstrumentationWatcher watcher = null;
    UiAutomationConnection connection = null;
    if (wait) {
        watcher = new InstrumentationWatcher();
        watcher.setRawOutput(rawMode);
        connection = new UiAutomationConnection();
    }
    float[] oldAnims = null;
    if (no_window_animation) {
        oldAnims = wm.getAnimationScales();
        wm.setAnimationScale(0, 0.0f);
        wm.setAnimationScale(1, 0.0f);
    }
    if (abi != null) {
        final String[] supportedAbis = Build.SUPPORTED_ABIS;
        boolean matched = false;
        for (String supportedAbi : supportedAbis) {
            if (supportedAbi.equals(abi)) {
                matched = true;
                break;
            }
        }
        if (!matched) {
            throw new AndroidException("INSTRUMENTATION_FAILED: Unsupported instruction set " + abi);
        }
    }
    if (!mAm.startInstrumentation(cn, profileFile, 0, args, watcher, connection, userId, abi)) {
        throw new AndroidException("INSTRUMENTATION_FAILED: " + cn.flattenToString());
    }
    if (watcher != null) {
        if (!watcher.waitForFinish()) {
            System.out.println("INSTRUMENTATION_ABORTED: System has crashed.");
        }
    }
    if (oldAnims != null) {
        wm.setAnimationScales(oldAnims);
    }
}
Also used : IWindowManager(android.view.IWindowManager) Bundle(android.os.Bundle) ArrayList(java.util.ArrayList) IInstrumentationWatcher(android.app.IInstrumentationWatcher) UiAutomationConnection(android.app.UiAutomationConnection) AndroidException(android.util.AndroidException) InstrumentationInfo(android.content.pm.InstrumentationInfo) ComponentName(android.content.ComponentName)

Aggregations

AndroidException (android.util.AndroidException)27 ParcelFileDescriptor (android.os.ParcelFileDescriptor)17 File (java.io.File)17 FileNotFoundException (java.io.FileNotFoundException)17 IInstrumentationWatcher (android.app.IInstrumentationWatcher)6 UiAutomationConnection (android.app.UiAutomationConnection)6 ComponentName (android.content.ComponentName)6 Bundle (android.os.Bundle)6 IWindowManager (android.view.IWindowManager)6 ProfilerInfo (android.app.ProfilerInfo)5 InstrumentationInfo (android.content.pm.InstrumentationInfo)5 ArrayList (java.util.ArrayList)5 Configuration (android.content.res.Configuration)4 Resources (android.content.res.Resources)4 DisplayMetrics (android.util.DisplayMetrics)4