[
https://issues.apache.org/jira/browse/CB-12546?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15927145#comment-15927145
]
ASF GitHub Bot commented on CB-12546:
-------------------------------------
GitHub user filmaj opened a pull request:
https://github.com/apache/cordova-android/pull/369
Updated CLI scripts to support Android SDK Tools 25.3.1
<!--
Please make sure the checklist boxes are all checked before submitting the
PR. The checklist
is intended as a quick reference, for complete details please see our
Contributor Guidelines:
http://cordova.apache.org/contribute/contribute_guidelines.html
Thanks!
-->
### Platforms affected
Android
### What does this PR do?
Adds support for using the Android SDK Tools version 25.3.1.
Relevant issues are
[CB-12546](https://issues.apache.org/jira/browse/CB-12546) and
[CB-12554](https://issues.apache.org/jira/browse/CB-12554).
In general, the CLI scripts will now attempt to use the old tools first
(specifically the `android` command), and if that command fails with a specific
exit code and message (tested on Windows 10 and Mac OS 10.12), it will then try
to use the new tools (specifically the `avdmanager` and `sdkmanager` commands).
I have also renamed a bunch of methods in an attempt to try to make it
clearer what they are doing.
I have added a _bunch_ of jasmine unit tests to all of this as well. Hoping
the coverage report reflects that!
### What testing has been done on this change?
I tested on two OSes: Mac OS 10.12 and Windows 10. For each OS, I tested
four environment setups:
1. Setting `ANDROID_HOME` environment variable to point to a new
installation of the Android SDK.
2. Setting `PATH` environment variable to contain the `tools`, `tools/bin`
and `platform-tools` Android SDK subdirectories.
3. Having neither of the above environment variables set.
4. Having both of the above environment variables set.
For each environment, I then ran the following test scenarios:
1. Running `npm test` from the repo. In all eight environments, this passed.
2. Running `bin/check_reqs` from the repo. If neither environment variables
are set, you would receive an error telling you to set `ANDROID_HOME`. In the
other 6 cases, `check_reqs` tells you you are all good.
3. Running `bin/android_sdk_version` from the repo. In the four
environments I tested where you didn't have the `android` command on your
`PATH`, you would get a "`android` cannot be found" error. In the other four,
it would return the id of the latest android target you have installed on your
system.
4. Running `bin/create` from the repo. This passed in all eight
environments.
5. I checked running the following commands in a generated cordova-android
project:
- `cordova/android_sdk_version`: same behaviour as test scenario 3 above
(as expected).
- `cordova/check_reqs`: same behaviour as test scenario 2 above (as
expected).
- `cordova/build`: it would error out if you didn't have your
`ANDROID_HOME` set and tell you to set it. Otherwise, passed fine.
- `cordova/clean`: same as `build` above ✅
- `cordova/run --emulator`: same as `build` above ✅
**NOTE**: This has not been tested on an Android SDK installation with SDK
Tools older than 25.3.1! I would love for someone with SDK Tools 25.2.x to give
this a go.
### Other Notes
These are extensive changes! I would love a bunch of people to review this,
so pinging @infil00p, @purplecabbage, @shazron, @stevengill, @timkim,
@macdonst, @dpogue. Review party!
### Checklist
- [X] [Reported an
issue](http://cordova.apache.org/contribute/issues.html):
[CB-12546](https://issues.apache.org/jira/browse/CB-12546),
[CB-12554](https://issues.apache.org/jira/browse/CB-12554)
- [X] Commit message follows the format: "CB-3232: (android) Fix bug with
resolving file paths",
- [X] Added automated test coverage as appropriate for this change.
You can merge this pull request into a Git repository by running:
$ git pull https://github.com/filmaj/cordova-android CB-12546
Alternatively you can review and apply these changes as the patch at:
https://github.com/apache/cordova-android/pull/369.patch
To close this pull request, make a commit to your master/trunk branch
with (at least) the following in the commit message:
This closes #369
----
commit 3a1fa5d63a67ad9d32e2147d45b07c86837b36fa
Author: filmaj <[email protected]>
Date: 2017-03-08T01:04:11Z
CB-12546: leverage `avdmanager` if `android` warns it is no longer
useful, which happens in Android SDK Tools 25.3.1.
explicitly set the CWD of the spawned emulator process to workaround a
recent google android sdk bug.
rename android_sdk_version.js to android_sdk.js, to better reflect its
contents.
have create.js copy over the android_sdk_version batch file.
commit 87a293b932846087abc894e6c1f66fbfed39908c
Author: filmaj <[email protected]>
Date: 2017-03-14T06:44:52Z
CB-12546: more robust sdk location detection. ANDROID_HOME now can be set
from location of either of `adb`, `android` or `avdmanager` commands. slightly
rework logic of infering ANDROID_HOME + setting up PATH to hopefully separate
the logic into clearer sections. check_reqs.check_android now validates SDK
Tools 25.3.1 binaries/structure. added specs for check_reqs.check_android. move
android sdk version script. expose some helper functions as module methods to
help with mocking.
commit 661d71be4869f764d83438f2ceea6be2f4ad4a40
Author: filmaj <[email protected]>
Date: 2017-03-14T20:12:57Z
CB-12546: emulator specs.
commit c21ff310342ef9f570949f229a94d0d229935c52
Author: filmaj <[email protected]>
Date: 2017-03-14T21:18:00Z
CB-12546: move check_reqs to templates directory and update module
references.
commit 9190ca9416b1e2b6704f59aece32b3a81a80a5d5
Author: filmaj <[email protected]>
Date: 2017-03-14T22:15:49Z
CB-12546: based on `android` command exit code and stdout, conditionally
try to invoke `avdmanager` to list out AVD images. tweak relevant test to match
behaviour. small tweak to use exposed methods for checking platform (for easier
future stubbing).
commit 6a0f9339690956569cff5a8ff07c1f570b5d5c77
Author: filmaj <[email protected]>
Date: 2017-03-14T23:01:32Z
CB-12546: switch to superspawn for shelling out where possible. rework
android sdk module to work with new sdk.
commit 182cfdebc781b9ac3f6b67c5c6bb429b78573567
Author: filmaj <[email protected]>
Date: 2017-03-14T23:18:37Z
CB-12546: use android_sdk list_targets instead of rewriting the same thing
again.
commit 35ea09d72185b30f17ab4b579bf615517482e883
Author: filmaj <[email protected]>
Date: 2017-03-15T14:47:51Z
CB-12546: more specs for android_sdk and check_reqs. added fixtures for sdk
targets. refactored target listing.
commit a1933955d9ee3d647450cb736faf947bc91679c4
Author: filmaj <[email protected]>
Date: 2017-03-15T18:30:04Z
CB-12546: sort detected targets by numerical suffix when reporting most
recent version of android sdk target installed.
commit 17952029cfcb80fdc24896286a5547f7b96d766c
Author: filmaj <[email protected]>
Date: 2017-03-15T18:58:16Z
CB-12546: on create, update the require path for certain helper modules as
directory structure differs. big ol TODO dropped as it _is_ kinda weird.
commit 389d81b972cc272b4911f0140891a5fb6c740abd
Author: filmaj <[email protected]>
Date: 2017-03-15T22:35:29Z
CB-12546: account for quotes when detecting `android` command error for
Windows.
----
> Latest Android SDK tools introduce bug w/ Android emulator
> ----------------------------------------------------------
>
> Key: CB-12546
> URL: https://issues.apache.org/jira/browse/CB-12546
> Project: Apache Cordova
> Issue Type: Improvement
> Components: Android
> Reporter: Filip Maj
> Assignee: Filip Maj
>
> For details: https://code.google.com/p/android/issues/detail?id=235461
> A workaround is to change the current working directory to the directory
> housing the {{emulator}} binary. E.g.:
> {noformat}
> ~ via ⬢ v6.9.4
> ➔ which emulator
> /Users/maj/sdks/android/tools/emulator
> ~ via ⬢ v6.9.4
> ➔ emulator -avd nexus5-5.1
> [140736778830784]:ERROR:./android/qt/qt_setup.cpp:28:Qt library not found at
> ../emulator/lib64/qt/lib
> Could not launch '../emulator/qemu/darwin-x86_64/qemu-system-x86_64': No such
> file or directory
> ~ via ⬢ v6.9.4
> ➔ cd ~/sdks/android/tools
> sdks/android/tools via ⬢ v6.9.4
> ➔ ./emulator -avd nexus5-5.1
> emulator: WARNING: encryption is off
> Hax is enabled
> Hax ram_size 0x80000000
> HAX is working and emulator runs in fast virt mode.
> {noformat}
> Potential fix: tweak the {{cordova run --emulator}} command to change the
> current working directory to be the location of the emulator binary. That
> might be an easy fix, as cordova uses the {{superspawn}} node module to kick
> off the {{emulator}} process. That module takes an optional {{cwd}} parameter.
> Let's also check for the existence of {{android}} vs. {{sdkmanager}} to fix
> the listing of images based on SDK version.
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]