Visit GitHub RepoTools


npm Build Status

Generates public.xml for Android libraries, which allows resources to be hidden from clients. More info


Install with npm install -g pubxml

For now, this assumes that public and private resources are in separate directories, such as res and res-public.

To add res-public, make a folder with that name in the same directory as res, probably [library-module]/src/main. Add the following to the module's build.gradle:

android {
    sourceSets {
        main.res.srcDirs += 'src/main/res-public'

Once the public resources are in a separate directory, open a terminal and navigate to that dir. Generate public.xml by running pubxml.

You can also run pubxml automatically before each build in Android Studio. To get it working on Mac OS and linux, you can add the following to the library module gradle file:

task generatePublicXml(type: Exec) {
    workingDir 'src/main/res-public'
    commandLine 'bash', '-c', 'export PATH="$PATH:/usr/local/bin"; pubxml'
    ignoreExitValue true

//Don't run pubxml task on Windows
if (! System.getProperty('').toLowerCase().contains('windows')) {
    preBuild.dependsOn generatePublicXml

Change workingDir if you used a different folder name. I don't have a Windows computer to test it on, so it is disabled on Windows to prevent the build from failing.


Released under the MIT License.

Become a better Android Developer
Millions of developers are learning at MindOrks

Online Training Program

Featured Blogs

Our Team

MindOrks is Certainly one of the best online blog to stay on top of all the Android development news, coding and design patterns. Finally a blog I can count on to keep myself updated with latest and greatest things happening in Android world.

Vipul Shah
Android Developer

Become Pro in Android by watching videos