问题标签 [build-variant]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
android-studio - Android Studio 构建变体问题
我很难让 Android Studio 构建正确的构建变体——有时甚至让我根本无法选择构建变体。
基本上,我的项目有两个不同版本,一个是免费版本,一个是“完整”版本。包 ID 是“com.mycompany.myproj”和“com.mycompany.myprojfree”。
一旦我指定了“myproj”和“myprojfree”风格以及“release”和“debug”构建类型,Android Studio 会在列表中生成四个变体:myprojDebug、myprojfreeDebug、myprojfreeRelease 和 myprojRelease。
问题是,选择其中之一并不能可靠地选择用于构建、调试等的变体。例如,我将选择 myprojDebug,点击 Debug,然后 myprojfreeDebug 将构建(可以在控制台中看到),而免费的版本将在连接的设备上打开。
此外,有时我什至无法在构建变体窗格中选择一个或多个构建变体。我可以点击它,但它不会改变。但有时如果我先将其更改为其他内容,它会让我返回并更改未更改的内容。
我看到帖子提到了类似的问题,并遵循了所有建议——清理、重建、删除 .idea、删除构建文件夹、使缓存/重新启动无效、删除 app.iml 等——都无济于事。
值得注意的是,直到昨天我从 Android Studio 3.1 更新到 3.4.1 之前,所有这些都运行良好。
这是我的应用程序 build.gradle 的简化版本:
java - 如何构建两个构建 android 变体以使用 Retrofit 获取两个不同的 URL?
我正在开发一个 android 应用程序,用于为共享相同数据源的两个不同 Build Variant 获取两个不同的 Rest API。我正在将产品风味用于构建变体。但我不知道如何配置改造部分来为不同的构建变体选择不同的 API。
预先感谢
android - 构建变体风味维度未覆盖的矢量可绘制对象
我有一个带有基本品牌和多个白标品牌以及多个服务器目标的应用程序。在我的应用程序的 build.gradle 中,风味定义为:
flavorDimensions("server", "whitelabel")
在我src/main/res/drawable
的基础品牌中,我有一个 logo.xml VectorDrawable,它被覆盖在src/whitelabel1/res/drawable
.
当我的应用程序的 build.config 包含vectorDrawables.useSupportLibrary = true
正确的 logo.xml 时,将在我的 ImageView 中使用。如果我从 Whitelabel1的 apk 中删除useSupportLibrary
ImageView 呈现logo.xmlmain
android-studio - Android Studio gradle 发布构建需要无限时间
我最近将我的代码库更新为 Androidx,现在尝试使用命令构建生产变体
它继续在过程 transformClassesAndResourcesWithProguardForProductionRelease 构建
这是输出
我的 gradle.properties 看起来像这样
我正在使用 proguard 并发布 buildType 有以下
我尝试使用和不使用 androidx proguard 但结果相同
你能帮我解决这个问题,这样我就可以生成一个签名的apk
android - 如何在 Android Studio 运行时以编程方式设置构建变体?
是否可以在 Android Studio 中以编程方式更改构建变体运行时间?
我有不同的服务器环境(Release、Debug、Production、Dev、Dev1、Dev2、QA 等)。代码本身依赖于我选择构建变体时设置的一些字符串、SDK 的初始化和服务器地址。因此,当我为实例选择调试时,字符串会使用调试服务器地址和 SDK。发布也是一样。但是,如果我希望能够在运行时选择环境怎么办?
android - 确定 Android 中其他模块的 buildType
我的模块有 2 个buildType
,app
名为release
and debug
。
该模块依赖于其他一些模块,例如lib1
.
当我想组装一个 apk 时,我应该运行:
在 和 中的两个build.gradle
文件中app
,lib1
我定义了buildTyle{ ... }
section 和 set minifyEnabled true
。
但是当我分析签名 apk 的release
类型时,似乎 gradle 并没有缩小和缩小未使用的资源。
如何确定应该为我为app
模块选择的 buildType 使用哪个 buildType?(当我运行上面的命令时)
android - 如何使用 maven 在 android 中选择的当前构建变体的基础上发布库 aar 文件
我有三个构建变体 - android 库中的暂存、调试和生产。我需要在 maven 上发布 aar 文件,但限制是,如果当前选择的构建变体是调试或暂存,那么只有 debugAar 应该发布,如果选择了发布,那么 releaseAar 应该发布。默认情况下,gradle 只发布 releaseAar。
目前,每次我想要调试变体时,我都需要将“artifact(bundleReleaseAar)”更改为“artifact(bundleDebugAar)”
android - 出现错误说 - “条目名称 'res/layout/test_toolbar.xml' 碰撞”,同时创建签名的 apk
我今天已将我的 android studio 从3.5.x更新到3.6,并在为构建变体生成签名 apk 时出现错误,显示以下消息 - Entry name 'res/layout/test_toolbar.xml'
碰撞我在整个项目中根本没有任何像这样命名的布局。我有一个名为“ stage ”的自定义构建变体,每当我尝试构建签名的 apk 时,它总是失败。我算找到任何解决方案了。请帮我解决这个问题。谢谢
更新: 以下消息也可能出现同样的问题(正如我在AS - 3.6.1 -有时继续 4.xx中发现的那样)。所以不要担心这些未知且不可解析的消息。到目前为止,我在生成签名 apk 时发现了两种新类型的消息:
Entry name 'kotlin/collections/MapWithDefault.kotlin_metadata' collided
Access Denied
结果是一样的。有时你可能需要Invalidate Cache and Restart
你的 AS 来做这件事。让我知道你的发现。谢谢
快速的解决方案是:(作为最受欢迎的答案,我同意)
- 删除 projectFolder\build 删除 projectFolder\debug
- 删除项目文件夹\发布
- 删除 projectFolder\app\build
- 删除 projectFolder\app\build\debug
- 删除 projectFolder\app\build\release
所以你需要删除所有的构建、调试和发布目录。
请注意,您可能无法删除整个调试和发布目录,但可以删除其所有内容。