I want to write a lint check which can detect issues in resource file on the fly. For example, I want my Android Studio to highlight my <TextView> and give warning when it does not have android:padding.
I read this and found that we can write custom lint but only can we use it through command line but not on the fly. I also found that there is plugin like SonarLint which provides on-the-fly custom lint check.
So my question is:
Is it true that creating an Android Studio plugin is the only way to make custom lint check work on the fly?
I do not accurately answer your question because I don't have own custom lint checks. However, I'm using rxLint library which is not part of Android build tools and Android Studio highlights issues in code that are reported.
So if you will make your custom lint checks as a separate module and put your main project depend on it then Android Studio will highlight it.
Related
IntelliJ IDEA and Android Studio have a Lint tool which is very useful. You can even call it from a CI pipeline to check your project's code.
Given that, I have two questions about this Lint and SolarLint:
Does SolarLint plug-in complement or add something new to the code analysis made by the built-in Lint tool in both IDEs when you want to inspect Kotlin code?
Does it worth to install the SolarLint plug-in if you don't use SonarQube? Does SolarLint impacts in the IDEs performance?
Thanks in advance.
In my Android Studio app project, I've integrated ktlint gradle.
Is it possible to configure the ktlint gradle plugin, so that it runs continuously on the fly (while coding on the keyboard)?? Like ESlint is used for JS, it warns me immediately if any lint warnings occur..
It is not possible to do that. klint is not a static analysis tool.
Alternatively, you can write custom lint rules for the same. Here are some resources for doing so:
Android Dev summit 2018 talk
Android Dev summit 2019 talk
Android source code for standard lint rules
Repos
https://github.com/googlesamples/android-custom-lint-rules
https://github.com/tikurahul/lint-experiments
https://github.com/vanniktech/lint-rules
This is possible in Intellij / Android Studio if you install the ktlint IDEA plugin.
It's also configurable so you can represent findings as warnings or errors.
I'm using Android Studio, and I'm trying to add the slf4j library using
Build/Edit Libraries and Dependencies.
I clicked on the +, selected Library Dependency, and picked slf4j from the list. Studio added the library to my build.gradle file like this:
dependencies {
compile 'com.android.support:support-v4:24.1.1'
compile 'org.slf4j:slf4j-android:1.7.7'
...
But when I try to run sync, I get this error:
Error:(75, 10) Failed to resolve: org.slf4j:slf4j-android:1.7.7
Is there something else I need to do to my project to be able to use this library??
Turns out what was causing this issue for me (and likely for you, given the build file above) was the Scala plugin. There was a bug with the Scala plugin preventing Android Studio from importing Gradle projects. The fix for this has already been pushed live, so to get Android Studio working again you can either disable the Scala plugin or update it.
Open Settings/Preferences
Open the Plugins section on the left
Find the Scala plugin
Right click on the plugin and click Reload List of Plugins
Right click on the plugin again and click Update Plugin
This allowed me to do a Gradle sync and build from Android Studio again, I hope it helps for you!
It looks like this is a bug with Android Studio. Hopefully it'll be fixed soon.
In the meantime, you can debug your application without launching it from Android Studio by attaching the debugger to a running process of the application. You can do this two ways.
Via the menus: Run -> Attach Debugger to Android Process
Pressing the button that is two to the right of the play/build button. It looks like a grey phone/rectangle with a little green bug in the bottom right
After you do this, a dialog will show up listing available applications to debug. Select your application and press OK. Your breakpoints should now work.
If you need to debug something that happens on app startup, you can tell Android to wait for a debugger when launching certain applications with the following steps:
On the phone open the Android Settings
Open the Developer Options
Make sure Wait for debugger is checked
Press Select debug app and choose your application
Then when you start your application, it'll wait for you to attach a debugger via one of the two methods mentioned above.
Hope this helps!
In order to get the maven repository working with my Android Studio project (which I didn't know is what I was trying to do), I needed to add the following to build.gradle:
allprojects {
repositories {
mavenCentral()
}
}
Apparently, that allows the software to work out the compile commands.
I have several modules in Android Studio project, and I would like to change inspections settings for one of these modules. More precise, I want to turn off all Android-related inspections in one module, but leave all general Java inspections in place.
I need this because I have a not Android-specific Java library module, and that module uses java.util.Properties, and it's load method was implemented in Android API level 9. Since that library is not Andoid stuff, I have not specified Android API level at all, and Studio warns me about that.
It offers adding Android annotation to ignore that inspection, but adding Android dependency to turn off Android warning seems bad.
I can edit the settings to shitch that warning off, but I don't want to turn API level warnings in the whole project.
As I found, in settings you can specify inspection setting either globally or for whole project, not for specific module.
Is there a way to change inspections settings for one module, or do some hack around?
I am using Android Studio 1.3.2.
The Studio should automatically understand that the Java module has nothing with Android, and stopped Android inspections (but they were not disabled, though): I went fix something in the code, rebuilt it several times, and when I returned to warning line, it was clean.
So, I don't actually know what's going on,
but I got some recomendations, that should help:
Sync your Gradle project, it will try to rebuild the project. Some dependencies and settings will only resolve after Gradle will do something internal.
If Gradle will fail, there might be errors in code that ruins interspections. Try to solve them.
If your project history is stored in VCS, try checkout the latest clear version and sync project again.
Check changes in .iml files manually. For some reason, Studio sometimes does weirds edits there, and if I rollback some of them, Studio works better.
Actually you can disable particular inspections being made by Android Studio. However this needs to be on all projects you have in Android Studio, and cannot be done in all modules you are currently developing.
To disable android inspections on your projects follow these steps:
Click on the File menu and Select Settings
Expand the Editor root node select Inspections
There you will have all the inspections which Android Studio checks when building a project (image below). You can expand the Android node and check what you wish to remove from your inspections.
Hope this helps :)
I'm trying to migrate to Android Studio from Eclipse.
In reading a simple example of using a library within another app:
https://developer.android.com/sdk/installing/studio-build.html
In eclipse to achieve this all I would go to the properties of the project and add a reference to the project. Simple, through the IDE and easy to check the build settings at a later date.
In Android Studio I've got to add an entry to my referenced library using ALT-ENTER after getting autocomplete to find the library, which seems to add an entry to the file 'app.iml':
<orderEntry type="module" module-name="app2" />
Then I've got to edit the gradle file:
dependencies {
compile project(":lib")
}
Is there not a better way, i.e. using the IDE. I don't particularly want to have to remember about this xml iml file or have to manually edit build files every time I want to do something.
?
Sorry,
After browsing for a while with no answer I found it just after posting:
How to create a library project in Android Studio and an application project that uses the library project
Why can't Google update their documentation to use the more normal way (presuming this dialog is a new addition)....