关于使用Gradle的productFlavors

4

我在使用productFlavors时遇到了一些问题。例如在AndroidManifest.xml中:

<meta-data android:name="UMENG_APPKEY" android:value="51a5692756240bfa33032a55" />
<meta-data android:name="UMENG_CHANNEL" android:value="Authority" />

我想通过productFlavors更改Authority值,有人可以帮帮我吗?
我尝试像这样设置但是没有效果。

    productFlavors {
    playstore {
        packageName='com.android.newsp.playstore'
        versionCode 15
        UMENG_CHANNEL="Authority"
    }
    hiapk {
        packageName='com.android.newsp.hiapk'
        versionCode 100
        UMENG_CHANNEL="ChannelA"
    }
}

我尝试过这个方法,但是发现合并的主程序并不符合我的期望。我复制了两个 AndroidManifest.xml 文件并改变了 UMENG_CHANNEL 的值,然后将它们放在同一个文件夹下:

    productFlavors {
    playstore {
        packageName='com.android.newsp.playstore'
        versionCode 15
    }
    hiapk {
        packageName='com.android.newsp.hiapk'
        versionCode 100
    }
}

sourceSets {
    hiapk {
        manifest.srcFile 'hiapk/AndroidManifest.xml'
    }
    playstore {
        manifest.srcFile 'playstore/AndroidManifest.xml'
    }
    instrumentTest.setRoot('tests')
}
1个回答

1
清单文件被合并,因此您可以在不同风格的清单文件中放置您要的差异。
src/playstore/AndroidManifest.xml 包含:
 <meta-data android:name="UMENG_CHANNEL" android:value="Authority" />

和 src/hiapk/AndroidManifest.xml

 <meta-data android:name="UMENG_CHANNEL" android:value="ChannelA" />

我尝试了一下,发现主清单文件并没有像我希望的那样合并。我复制了两个 AndroidManifest.xml 文件并更改了 UMENG_CHANNEL 值,然后放入文件夹中。看看这个: - Jack Wang
productFlavors { playstore { packageName='com.android.newsp.playstore' versionCode 15 } hiapk { packageName='com.android.newsp.hiapk' versionCode 100 } } sourceSets { hiapk { manifest.srcFile 'hiapk/AndroidManifest.xml' } playstore { manifest.srcFile 'playstore/AndroidManifest.xml' } instrumentTest.setRoot('tests') } - Jack Wang
抱歉,我不擅长使用 Stack Overflow。无论如何,非常感谢你。 - Jack Wang

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接