Uploaded image for project: 'Jenkins'
  1. Jenkins
  2. JENKINS-20819

Be able to set emulator ports statically not randomly

    XMLWordPrintable

    Details

    • Similar Issues:

      Description

      Right now, emulators are started like this:

      android-sdk/tools/emulator -no-boot-anim -ports 39935,58840 // and some other props
      

      This is not always what you want since while testing, there can be other tooling which connects to this device externally and when using ddmlib, it does not find that emulator since it scans 5554-5585 only but emulator is started outside this range.

      In android jenkins plugin, there is a "trick" how to avoid this, adb binary executes

      adb connect localhost:generated_avd_port
      

      but ddmlib is not able to mimic this behaviour so tooling which depends on it are lost in finding emulators.

      In order to use external tooling, user should be able to use ports which he specifies explicity via configuration of the plugin so random port generation will not be taken into accout. Random port generation should be uses by default when user do not specify them explicity.

      From implementation point of view, random port generation is done here

      https://github.com/jenkinsci/android-emulator-plugin/blob/master/src/main/java/hudson/plugins/android_emulator/AndroidEmulatorContext.java#L51-L52

        Attachments

          Activity

          Hide
          oldelvet Richard Mortimer added a comment -

          You may find that the fix for JENKINS-12821 will help you. That moves the adb port to be a 4 digit number (outside of the 5554-5585 range) and that means that the devices attach themselves and are addressed as emulator-xxxx. I believe that ddmlib uses environment variable ANDROID_ADB_SERVER_PORT and indeed with that fix builds using maven find the emulator without any additional assistance.

          The fix has not been merged yet but is in pull request https://github.com/jenkinsci/android-emulator-plugin/pull/27

          Show
          oldelvet Richard Mortimer added a comment - You may find that the fix for JENKINS-12821 will help you. That moves the adb port to be a 4 digit number (outside of the 5554-5585 range) and that means that the devices attach themselves and are addressed as emulator-xxxx. I believe that ddmlib uses environment variable ANDROID_ADB_SERVER_PORT and indeed with that fix builds using maven find the emulator without any additional assistance. The fix has not been merged yet but is in pull request https://github.com/jenkinsci/android-emulator-plugin/pull/27
          Hide
          smikloso Stefan Miklosovic added a comment -

          Thank your for your response, you did great job in that bug report for Android. I can not wait until it will be in upstream.

          Show
          smikloso Stefan Miklosovic added a comment - Thank your for your response, you did great job in that bug report for Android. I can not wait until it will be in upstream.
          Hide
          orrc Christopher Orr added a comment -

          Marking this as fixed, as version 2.11 of the plugin has been released which includes the port number fixes Richard mentioned above.

          This includes using the "emulator" rather than "localhost" connection method, and so everything should work the same as ddmlib now.

          Show
          orrc Christopher Orr added a comment - Marking this as fixed, as version 2.11 of the plugin has been released which includes the port number fixes Richard mentioned above. This includes using the "emulator" rather than "localhost" connection method, and so everything should work the same as ddmlib now.

            People

            • Assignee:
              orrc Christopher Orr
              Reporter:
              smikloso Stefan Miklosovic
            • Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: