+ 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
像这样的分级设置...
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中的所有内容一样,它也是一个groovy脚本,所以您可以根据需要用条件包装它的一部分来分叉行为。
假设您将味道作为A-P标志传递(请参见Gradle属性和系统属性),例如Gradle build-pflavor=flavorg
,下面应该可以工作:
jar {
manifest {
if (flavor == "flavorg") {
attributes 'Main-Class': 'com.example.FlavoredMain'
} else {
attributes 'Main-Class': 'com.example.GenericMain'
}
}
}
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
flavorg中的AndroidMANIFEST.xml应该只包含与主AndroidMANIFEST.xml的差异(即主要活动变化),它们将根据所选风味进行合并
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();
问题内容: 我有一个名为FormatString.java的文本文件。它包含一些单词。在所有这些单词中,我想将单词oldstring替换为newstring,并将最终结果重命名为t.txt。我已经编写了代码。从技术上讲,它应该起作用。问题是我不知道在哪里保存FormatString.java文件。我是否将其保存在保存了ReplacingText程序的同一类文件夹中,还是将其保存在其他地方。我转到命
问题内容: 我有一个文本文件,我只想更改文件的第一行。该文件可能长达数百万行,因此我宁愿不必遍历所有内容,因此我想知道是否还有另一种方法可以做到这一点。 我还想对第一行应用一些规则,以便将某些单词的实例替换为其他单词。 这可能吗? 问题答案: 除非结果行的长度与原始行的长度不同,否则A 将达到目的。 如果事实证明您被迫执行复制(替换第一行,其余数据应原样复制),我建议使用和。首先使用的读取第一行。
问题内容: 如何替换在文本文件中找到的一行文本? 我有一个字符串,例如: 我想用更新它: (反之亦然) 我该如何完成? 顺便说一句,我只想替换已读取的行。不是整个文件。 问题答案: 在底部,我有一个通用的解决方案来替换文件中的行。但是首先,这是眼前特定问题的答案。辅助功能: 然后调用它: 原始文本文件内容: Output: New text file content: And as a note,
问题内容: 我有一个字符串,其结构类似于:。每次来自外部源的字符串都可能有所不同。 我只想替换第一次出现的而不是其他的。可能吗? 问题答案: preg_replace的可选第四个参数是:
在产品页面中,每个产品都有一个图像,并且下面有两个子标题:标题和到产品类别的链接。我想用产品的简短描述替换这个产品类别字段。 我查看了Woocomece文件夹中的每个php文件,但找不到要编辑的行。 谢谢你的帮助。
我在这个项目中使用Android Studio 2.3.1和jdk 1.8。 我导入了一个项目,它使用的是“java”。尼奥。文件文件和java。尼奥。文件“路径”。 Java8中不存在包“java.nio.file”。 此外,Android Studio不允许选择jdk 1.7。 我可以用这个代码做什么? 这个密码呢 **(无法解析文件和路径) 谢谢