目前,我正在开发具有5种口味的应用程序,这是重要的build.gradle文件的一部分:
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:0.14.0'
}
}
apply plugin: 'com.android.application'
repositories {
mavenCentral()
}
android {
compileSdkVersion 20
buildToolsVersion '20.0.0'
signingConfigs {
release {
storeFile file("")
storePassword "password"
keyAlias "alias"
keyPassword "password"
}
}
lintOptions {
abortOnError false
}
defaultConfig {
minSdkVersion 14
targetSdkVersion 20
applicationId 'application.package'
signingConfig signingConfigs.release
}
buildTypes {
release {
signingConfig signingConfigs.release
}
}
productFlavors {
flavor1{
applicationId 'com.flavor1.package'
}
flavor2{
applicationId 'com.flavor2.package'
}
flavor3{
applicationId 'com.flavor3.package'
}
flavor4{
applicationId 'com.flavor4.package'
}
flavor5{
applicationId 'com.flavor5.package'
}
}
}
dependencies {
compile project(':SDK')
}
我必须在文件中进行一些更改,但是基本上就是这样。
问题:
我要求在资产文件夹中为每种口味提供不同的资产文件集,这将创建一个不同的apk文件,但具有相同的包名称。这些APK文件将以相同的应用程序上传到Google
Play,但用于不同的地区。
因此,程序包名称必须保持不变。因此,基本上,我需要创建一种机制,当它们中的每两个具有相同的程序包名称但具有不同的资产文件夹时,将创建10个风味。如何使用gradle完成此操作?
我试过使用BuildTypes来实现它,如下所示:
buildTypes {
release {
signingConfig signingConfigs.release
sourceSets.main.assets.srcDirs = ['assets']
}
releaseAlt {
signingConfig signingConfigs.release
sourceSets.main.assets.srcDirs = ['assetsalt']
}
}
但是由于某种原因,releaseAlt还会获取位于资产目录中的文件,而不是位于资产目录中的文件。
您可以为此使用buildTypes。
buildTypes {
release {
// ... the usual stuff here
}
releaseAlt {
// .. the usual stuff here too like signing config etc...
}
}
现在文件层次结构:
你应该有
project/
- app/
- src/
- main/
- assets/
- logo.png // Generic assets go here
- java/
- res/
- ...
- flavor1/
- assets/
- logo.png // Specific assets for all the flavor1 Variants
- releaseAlt/
- asset/
- logo.png // Specific assets for all the releaseAlt Variants.
- flavor1ReleaseAlt/
- assets/
- logo.png // very specific assets for the flavor1ReleaseAlt Variant
- SDK/
使用此文件层次结构,构建flavor1Release
变体时,将具有来自的logo.png文件flavor1/assets/
,但是构建flavor1ReleaseAlt
变体时,此png将被on
from flavor1ReleaseAlt/assets/
文件夹替换。
说明:
Gradle在配置上使用约定(默认情况下)。特别是在项目结构方面。当构建flavour1ReleaseAlt
Variant时,Gradle(实际上是Android插件;))正在寻找一个名为flavour1ReleaseAlt
/的文件夹,其中包含一些资产,资源,java等。这些是Gradle为此版本可以找到的最具体的应用程序资源。然后Gradle将寻找一个文件夹,简称为flavour1
/,以获取一些不太具体的应用程序资源。然后到一个更小的特定文件夹(称为releaseAlt /),最后到通用文件夹(main /)。
为了匹配Variant查找,不同的文件夹必须具有非常严格的名称:
希望这可以帮助。
通过使用android 11(SDK API 30)设备下面的一些方法 但在Android11中运行良好。无法使用如下所示的方法使其im 函数调用 uri是我从拾取器的响应中获得的视频路径。 copyFile的函数调用 错误:new ;path:/storage/emulated/0/download/stop/mp4_20210128225711.mp4 system.err:java.io.f
在下面的代码中,我想实现“对于”和“对于”,这将在“C:\对于每一个循环的示例文件”目录中创建文件夹,并在每个目录中创建示例文本文件 运行代码后,会弹出一条错误消息,声明:*在C:\用户\尼克\对于每个脚本Construct.ps1:14字符: 10 for($Directs中的$文件夹){表达式或语句中的意外令牌'in'。 分类信息:ParserError: (:) [], 父母容器错误记录异常
我想在Java项目中包含V8(“J2V8”)的Java绑定。原因是:(i)V8 JavaScript引擎比JRE附带的JavaScript引擎快得多;(ii)我使用的库仅在JavaScript中可用,并且要花费大量的精力到Java端口。 null 我目前正在创建脂肪罐子使用阴影插件。 注意,该项目不是Android项目。在那里,有了Android插件,这似乎是直截了当的。 第一个想法是引入配置和特
为了说明这一点,我正在创建一个treeview,它将在用户创建一个文件夹后实例化自己,并且所述文件夹将被添加为TreeItem。 我现在有这个: 多谢了。
在Eclipse(最新的Oxygen 3,JavaEE版本)中,我有一个“动态Web项目”(选择的项目方面有:动态Web模块、Java、附加JavaScript的运行时:Tomcat 7.0)。 问题1):在项目资源管理器中,我看到两个文件夹:Java资源/库/引用库和参考库(在项目根,在Java资源文件夹层次结构之外)。 这两者的主要区别是什么?为什么我们有两个相同的(?)文件夹?在我的例子中,
我是java新手,我在VSCODE上编码。我创建2.java文件,如下图所示: 这些是每个文件: Main.java: