我正在尝试为Android配置构建.该项目具有多种风格,在一种风格中,我想替换main中的某些类.结构是这样的:
主要-MyClass.java
flavourA,flavourB …… flavourF使用main的MyClass.java,没有覆盖
flavourG需要自己的MyClass.java
我不想将MyClass.java复制到每种口味的目录中.完全将其删除,这是无法维护的.有没有一种方法可以使用exclude命令完成此任务?就像是…
+ src + main + java MyClass.java other common files AndroIDManifest.xml + flavorA + java other flavor-specific files AndroIDManifest.xml + flavorG + java MyClass.java other flavor-specific files AndroIDManifest.xml
使用这样的gradle设置…
productFlavors { flavora { } ... flavorg { }}sourceSources { flavora { } flavorb { } ... flavorg { main.java { exclude 'com/myapp/mypackage/MyClass.java' } }}
上面的方法不起作用,我做错了吗?还有其他选择吗?
解决方法:
您可以使用以下表示法来控制JAR清单(尤其是“ Main-Class”属性)
jar { manifest { attributes 'Main-Class': 'com.example.MyMain' }}
就像Gradle中的所有内容一样,它是一个时髦的脚本,因此您可以使用条件包装它的某些部分,以根据需要分叉行为.
假设您将风味作为-P标志传递(请参见Gradle properties and system properties),例如gradle build -Pflavor = flavorg以下应该工作:
jar { manifest { if (flavor == "flavorg") { attributes 'Main-Class': 'com.example.FlavoredMain' } else { attributes 'Main-Class': 'com.example.GenericMain' } }}
P.S,请记住,如上所述的Jar闭包是在配置时间评估的,而不是在执行时间l评估的,这意味着在评估任务之前已确定主类条件(请参见Build lifecycle).
安卓系统
每个@Opals评论(对不起,没有注意到).要解决AndroID中的同一问题,最快的选择是每个flavourg有一个AndroIDManifest.xml,其余的
androID { sourceSets { main { manifest.srcfile 'main/AndroIDManifest.xml' } flavorg { manifest.srcfile 'main/other/AndroIDManifest.xml' } }}
在AndroIDManifest.xml中,您定义了主要活动.
更好的选择是确保您遵循正确的文件夹结构
+ src + main + java + res + AndroIDManifest.xml + flavorg + java + res + AndroIDManifest.xml
flavourg中的AndroIDManifest.xml应该只包含与主要AndroIDManifest.xml的区别(即主要活动更改),并且它们将根据选定的味道进行合并
我建议您查看以下Merge multiple manifest files和Gradle flavors for android with custom source sets – what should the gradle files look like?
AndroID-修改后的问题
我将改用工厂模式,根据激活的风味返回“ MyClass”的正确实例:
productFlavors { main { buildConfigFIEld "string", "APP_FLAVOR", "main" } flavorg { buildConfigFIEld "string", "APP_FLAVOR", "flavorg" }}
然后,在工厂中您可以使用:
if (BuildConfig.APP_FLAVOR.Equals("flavorg") { return new FlavorgMyClass();} return new MyClass();
请参阅Gradle Tips,特别是“与应用程序的代码共享自定义字段和资源值”部分
总结以上是内存溢出为你收集整理的android-仅用一种产品替换主Java文件全部内容,希望文章能够帮你解决android-仅用一种产品替换主Java文件所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)