code: def driver(self, package=None, attach=True, activity=None, process=None):
          
          app = self._d.current_app()
          capabilities = {
              'chromeOptions': {
                  'androidDeviceSerial': self._d.serial,
                  'androidPackage': package or app.package,
                  'androidUseRunningApp': attach,
                  'androidProcess': process or app.package,
                  'androidActivity': activity or app.activity,
              }
          }
  
          try:
              dr = webdriver.Remote('http://localhost:%d' % self._port, capabilities)
          except URLError:
              self._launch_webdriver()
              dr = webdriver.Remote('http://localhost:%d' % self._port, capabilities)
          
          # always quit driver when done
          atexit.register(dr.quit)
          return dr
docs: Args:
              - package(string): default current running app
              - attach(bool): default true, Attach to an already-running app instead of launching the app with a clear data directory
              - activity(string): Name of the Activity hosting the WebView.
              - process(string): Process name of the Activity hosting the WebView (as given by ps). 
                  If not given, the process name is assumed to be the same as androidPackage.
  
          Returns:
              selenium driver