The best way to distribute custom lint rules is to include them in an AAR file.
When your project depends on a library AAR, lint will look inside that AAR to see if it contains custom lint rules (named lint.jar) and if so will load them and apply them.
That means that if you for example have a custom logging library, you can also supply lint rules to enforce correct usage of your library, and anyone depending on your library will also get those lint checks applied automatically.
(The ~/.android/lint mechanism is older, and is obsolete now.)
AAR files are created automatically when you apply the com.android.library Gradle plugin and run the assemble target. Unfortunately, that doesn't package the lint rules into it - because right now there isn't any packaging support for lint rules. That's planned, but not done yet (it's pending the lint APIs becoming stable), so right now you'll need to do manual surgery on the aar file during/after the build (e.g. build your lint.jar then insert it into the AAR).
-- Tor