I would go for Gradle Flavours:
    buildTypes {
    release {
        minifyEnabled true
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
}
or you can make it more separated, by using build variants. I think this is what you are really looking for in your case:
 productFlavors {
    pro {
        applicationId = "com.example.my.pkg.pro"
    }
    free {
        applicationId = "com.example.my.pkg.free"
    }
}
buildTypes {
    debug {
        applicationIdSuffix ".debug"
    }
}
a very good tutorial:
http://www.techotopia.com/index.php/An_Android_Studio_Gradle_Build_Variants_Example
article:
http://developer.android.com/tools/building/configuring-gradle.html
Let's consider the following example from the techotopia.com
productFlavors {
    phone {
        applicationId
        "com.ebookfrenzy.buildexample.app.phone"
        versionName "1.0-phone"
    }
    tablet {
        applicationId
        "com.ebookfrenzy.buildexample.app.tablet"
        versionName "1.0-tablet"
    }
}
if you need to separate the falvours on code level, than please see Xavier Ducrohet stackoverflow link below:
Using Build Flavors - Structuring source folders and build.gradle correctly