hackedteam/test-av2

View on GitHub
scripts/mobile/hardware/apk/apk.py

Summary

Maintainability
A
45 mins
Test Coverage
import os
import adb

class Apk(object):
    def __init__(self, apk_id, apk_file, package_name, apk_conf_files, apk_conf_gzip, apk_launch_activity):

        #only apk and uninstall_package_name (apk_to_uninstall) are mandatory
        assert apk_file
        assert package_name
        self.apk_id = apk_id
        self.apk_file = apk_file
        self.package_name = package_name
        self.apk_conf_files = apk_conf_files
        self.apk_conf_gzip = apk_conf_gzip
        self.apk_launch_activity = apk_launch_activity

    def clean(self, dev):
        adb.uninstall(self.package_name, dev)
        if self.apk_id == 'agent':
            adb.remove_directory("/sdcard/.lost.found", False, dev)
            adb.remove_directory("/data/data/com.android.dvci", True, dev)

    def install_configuration(self, dev):
        if self.apk_conf_gzip != '':
            local_path, local_filename = os.path.split(self.apk_conf_gzip)
            adb.unpack_local_to_remote(local_path, local_filename, '/', True, dev)
        else:
            for conf_file in self.apk_conf_files:
                adb.copy_file(conf_file[0], conf_file[1], True, dev)

    def install(self, dev):
        print self.apk_file
        adb.install(self.apk_file, dev)

    #installs apk and configuration
    def full_install(self, dev):
        self.install(dev)
        self.install_configuration(dev)

    def start_default_activity(self, dev, params=None):
        if not params:
            return adb.execute("am start -n " + self.apk_launch_activity, dev)
        else:
            return adb.execute("am start -n " + self.apk_launch_activity + " " + params, dev)

    def pack_app_data(self, dev):
        local_path, local_filename = os.path.split(self.apk_conf_gzip)
        adb.pack_remote_to_local('/data/data/' + self.package_name, local_path, local_filename, True, dev)

    def unpack_app_data(self, dev):
        local_path, local_filename = os.path.split(self.apk_conf_gzip)
        adb.unpack_local_to_remote(local_path, local_filename, '/data/data/' + self.package_name, True, dev)

    def retrieve_apk(self, dev):
        apk_path = os.path.dirname(self.apk_file)
        apk_filename = os.path.basename(self.apk_file)
        #print apk_path_clean
        adb.get_remote_file(apk_filename, '/data/app/', apk_path, True, dev)