如何为android gradle项目设置风味?神秘的重复类错误

如何为android gradle项目设置风味?神秘的重复类错误,第1张

概述我创建了一个简单的测试项目:目标是通过按下屏幕上的按钮来显示消息“hello”.第一个flavor构建应该将消息写入系统日志.第二个风味构建应该显示带有消息的祝酒词.请问如何使用gradle实现这一目标? 我的build.gradle: apply plugin: 'android'android {compileSdkVersion 19buildToolsVersion "19.0.1 我创建了一个简单的测试项目:目标是通过按下屏幕上的按钮来显示消息“hello”.第一个flavor构建应该将消息写入系统日志.第二个风味构建应该显示带有消息的祝酒词.请问如何使用gradle实现这一目标?

我的build.gradle:

apply plugin: 'androID'androID {compileSdkVersion 19buildToolsversion "19.0.1"defaultConfig {    minSdkVersion 14    targetSdkVersion 19    versionCode 1    versionname "1.0"}compileOptions {    sourceCompatibility JavaVersion.VERSION_1_7    targetCompatibility JavaVersion.VERSION_1_7}productFlavors {    toast {    }    log {    }}sourceSets {    main {        java.srcDirs = ['src/main/java','src/log/java']    }    toast {        java.srcDirs = ['src/main/java','src/toast/java']    }}buildTypes {    release {        runProguard false        proguardfiles getDefaultProguardfile('proguard-androID.txt'),'proguard-rules.txt'        }    }}dependencIEs {compile filetree(dir: 'libs',include: ['*.jar','*.aar'])}

文件结构:

Flavor日志包含带有方法showMessage(Context context,CharSequence text)的单类Messenger,并使用Log.i(tag,msg)打印文本

Flavor toast包含带有方法showMessage(Context context,并显示带有一些文本的toast.

主要来源不包含此类.

为什么错误重复类:com.test.flavortest.Messenger出现?每种口味都有一套不同的非交叉源路径?

Full sample project,zipped

解决方法 在源集定义中,您似乎将日志源添加到main:
sourceSets {    main {        java.srcDirs = ['src/main/java','src/toast/java']    }}

main是包含在所有flavor中的默认sourceset.这会导致在构建Toast风格时加载重复的类(Messenger).

尝试仅指定日志和Toast源集:

sourceSets {    log {        java.srcDirs = ['src/main/java','src/toast/java']    }}

您的文件结构似乎与默认值匹配,因此更好的解决方案是完全删除源集块.默认情况下包含src / main / java,然后自动添加src / flavor / java.

总结

以上是内存溢出为你收集整理的如何为android gradle项目设置风味?神秘的重复类错误全部内容,希望文章能够帮你解决如何为android gradle项目设置风味?神秘的重复类错误所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1141135.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-31
下一篇 2022-05-31

发表评论

登录后才能评论

评论列表(0条)

保存