What's new
XML Code Completions
Android Manifest
- Complete android manifest tag attributes and values.
- Long press the manifest tag to automatically add permissions (#151)
Android Layouts
- Completion of attributes based on the current view and its parent. Example if a view has a a parent of
ConstraintLayout
then it the code completions will have attributes forConstraintLayout
aswell. - External libraries defined in a
app/libs
or in theLibrary Manager
is now included in code completion.
Layout Editor
- The layout editor attributes dialog will now have drop down code completions based on the current attribute.
Dynamic Vector Drawable Preview
- Vector drawables found in
res/drawable
will now be visible on the layout editor.
Realtime Error Highlighting for XML
- Writing code in xml will now have real time error highlighting based on the diagnostics given by AAPT2. Although it is limited to the whole line as AAPT2 does not provide information about the column at which the error is located in.
Actions API
- A new API to easily add menus to CodeAssist, see Actions API for more information on how to add custom actions.
FIle Editor API
- An API to easily add a file editor on CodeAssist based on the current file. A documentation is being written for it.
- When there are multiple FileEditors for a specific file, there will be a dialog asking for the user which editor to use.
Select All Semantically (Java)
- Using the java parse tree, CodeAssist now supports selecting the code based on the tree. To invoke it, long press on a java code and press the
Select All
action. (example, pressing the action on a method will select the whole method, pressing it on a class will select the whole class declaration)
Java Completions
- Better completion cancellation. Before, if the user is typing quickly all the completions will stack up and will wait for each other to complete, wasting resources. Now completions will be canceled before each completion request is invoked.
- When typing in a parameterized tree (inside a the
<>
inMap<String, String>
) only class names will be shown as methods are not applicable there. - Better fuzzy search, prefix does not need to exactly match for it to show on the completion list.
- Better error highlighting.
- Improved generic type inference of method return types.
Excluding dependencies
- The common issue most users of CodeAssist face is the duplicate class issue with R8/D8. To help prevent this, a new feature has been added which lets users exclude dependencies from a library. There is no UI for it yet but it can be achieved by editing the
libaries.json
file. Example of using the feature:
{
"groupId": "com.my.dependency",
"artifactId": "dependency",
"versionName": "1.4.0",
"excludes": [
{
"groupId": "com.excluded.dependency",
"artifactId": "excluded"
}
]
}
WIth the above example, the app will ignore all the dependencies of com.my.dependency
that matches the dependencies that are listed in excludes
.
Better Duplicate Class Error Report
- To help with excluding dependencies, the app will now also display from which class/jar/dependency the duplicate files are found.
Adding libraries from build.gradle
- You can now get the libaries defined in the build.gradle file from the library manager.
Misc
- Added highlight support for JSON.
Known Issues
- Building with Android App Bundles (AAB) does not currently work. This is due to the change from using AAPT2 binaries to invoking it through JNI. A fix is in progress.