问题标签 [android-build-type]
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 - Gradle:Android Studio BuildType 资源继承
默认情况下,所有项目都有一个 debug 和 release buildType。然而,人们通常会希望从这些基本构建类型继承,以使其他构建类型具有微小的差异。正如我们所知,“initWith”函数允许我们这样做,这会导致所有 Gradle 配置被继承。问题是它似乎不适用于 Android 资源。
这种情况的用例是,如果您有各种工具的调试与发布密钥(即需要定义为字符串),并且您不想在多个不同的资源目录中复制/粘贴 strings.xml 文件。
例如,假设我有以下 buildTypes:
- 发布
- 调试
- qa - 使用 initWith 调试
如果我再创建资源目录:
- 调试/res/values/strings.xml
- 发布/res/values/strings.xml
qa buildType 将无法访问调试 strings.xml。我需要复制粘贴strings.xml:
- qa/res/values/strings.xml
当然,复制粘贴是一个非常糟糕的主意,因为每个副本都需要进行任何更改,迟早会出错。我尝试将“qa”更改为“qaDebug”和“debugQa”,但没有成功。我可以使用 productFlavors,但最终我会得到比我需要的更多不同的变体,其中许多没有任何意义。例如,要拥有一个仅共享两个基本调试和发布资源目录的 dev、qa 和生产构建,我需要定义如下内容:
- 开发调试
- 去释放
- qa调试
- qa发布
- 产品调试
- 产品释放
不仅命名是多余的,而且这些构建配置中有一半是未使用的。乘以我有几个其他继承的 buildTypes,而不是我在这个简化示例中提到的事实,你可以看到它很快就失控了。
另一种选择是将 API 密钥定义为 gradle 变量(我目前有),但使用标准方法总是更好,因为它最终会更整洁,团队的新开发人员可以更容易地找到东西。除了字符串之外,还有其他资源,例如 google-services.json 甚至 XML 文件,它们只能通过资源目录进行处理。
感谢大家的投入。
android - 为什么自定义构建类型需要签名配置,而不是“发布”?
我有一个beta
这样定义的自定义构建类型:
鉴于beta
使用的是initWith release
,人们会期望 beta 具有 的所有属性release
。但是,在尝试运行时beta
,Android Studio 会显示以下错误
“您当前选择的变体的 APK 未签名...”
在项目设置中创建签名配置,选择它,然后点击“应用”似乎不起作用。相反,必须手动编写签名配置:
问题:
- 为什么必须在构建脚本中手动编写签名配置?
- 为什么
release
构建类型不需要显式签名配置,直到您实际生成签名的 APK? - 鉴于这
beta
应该与release
via完全一样initWith release
,为什么行为会如上所示不同?
android - 对于 Android 库,有没有办法检测主机 Android 应用程序是 beta 测试版本还是生产版本
我正在构建一个 android SDK/库。
在图书馆我想知道 app 是否是
- 在模拟器上运行
- 物理设备
- 是否在 google play 的 beta 测试中
- 或者它的产品构建
根据我的知识,我只能根据对类值的一些检查来检测simulator
vs。除非使用应用程序的开发人员通过physical
Build
beta testing
production
library
public API
如果有办法做到这一点,有人可以确认这个限制或提供一些见解吗?
原因是将 API 调用和数据路由到特定端点,这样各种数据就不会最终导致生产数据出现偏差。
对于所有情况,我可以通过不同的 API 密钥来做到这一点,但现在已经超出了限制。
android - 如何在android构建期间生成classes.dex文件后添加自定义gradle任务
我正在尝试在 android build 中生成 classes.dex 后添加一个 gradle 任务。
我尝试dexRelease/dexDebug
了从下面的线程中获得的任务
用于 classes.dex CRC 计算的 Gradle 任务
但在配置阶段,我可以看到任务但它没有执行。
我在其中添加了一些日志,doLast
但没有打印。这就是我确认它没有执行的方式。
是dexRelease/dexDebug
检测 classes.dex 生成的正确任务吗?或者我需要使用其他任务来检查 dex 生成
我在这里问了另一个与此相关的问题。
android dexDebug 或 dexRelease 任务后如何执行 gradle 任务
但首先我需要知道为什么 dexRelease 没有执行/检查 dex 生成是否正确
在构建过程中检查以下位置的 dex 文件。
android - android应用程序中多构建类型的不同启动器应用程序图标
我想要不同的应用程序启动器图标来暂存 apk。因此,我将启动器图标文件放在...下的单独文件夹中
src/staging/res/mipmap-mdpi
src/staging/res/mipmap-hdpi
ETC...
所以,现在我有两组启动器图标,一组在 src/main/res.. 和另一组在 src/staging/res 但是暂存 apk 仍然从 src/main/res 中选择启动器图标
我可以知道,为什么会这样?
android - 无法使用自定义 buildType - 活动构建变体“调试”没有测试工件
我环顾四周,看到一些与我的问题非常相似的问题,但它似乎确实有与我相同的解决方案,但无法解决问题。
当我尝试运行方法测试时,我在 android studio 的页脚中收到一条错误消息,指出“活动构建变体“调试”没有测试工件”
我想使用不同的 buildType 进行仪器测试,以便我可以更改 API 路径。它似乎不会构建和运行,除非我设置testBuildType "debug"
这是我的 gradle 的样子
android - 从构建类型创建 android beta apk
我无法构建我的 android 应用程序的测试版 APK。我试过下面的代码
当我尝试从 Genrate Signed APK 按钮生成 APK 时,它显示错误 -
com.packagename.free 未找到
在我的应用程序中,我使用的是 payu SDK。请帮忙。提前致谢
android - 根据构建类型混淆配置文件中的字符串值 - Android
如何使用 buildConfigField 混淆字符串值
目前我们使用buildConfigField按照构建类型来声明我们的变量(keys),但是在对APK进行逆向工程时,我们可以清楚地看到用buildConfigField声明的值,如下图所示。
PS:即使minifyEnabled
与proguard一起使用,我们也有提到的问题
这篇文章涵盖了同样的讨论 ->反对 Android APK 的逆向工程,但没有解决方案
android - 使用不同本地化资产时的android包命名
假设我有一个 android 应用程序,说com.acme.game
这个应用程序使用不同的资产来实现本地化。
构建此应用程序(apk)的最佳策略是什么?
我应该为每个“语言环境”创建单独的项目并命名它com.acme.game.en
,com.acme.game.rus
...相应地,还是有更好的方法没有任何重复?