Android Studio在尝试生成发布签名的APK时出错,但允许您构建调试APK

Android Studio在尝试生成发布签名的APK时出错,但允许您构建调试APK,android,android-studio,Android,Android Studio,当我在Android Studio 2.3.3中使用“Build APK”选项时,它会生成一个没有问题的调试APK,但当我尝试生成一个签名APK时,会出现一个错误: 生成已签名的APK:生成APK时出错。你可以找到 “消息”视图中出现错误 在“消息”视图中: 错误:应为字符串[ResourceType]类型的资源 这似乎不是密钥库或签名的问题,因为它会引导我找到一行代码,即: String color = getResources().getString(VarGlobales.color4).

当我在Android Studio 2.3.3中使用“Build APK”选项时,它会生成一个没有问题的调试APK,但当我尝试生成一个签名APK时,会出现一个错误:

生成已签名的APK:生成APK时出错。你可以找到 “消息”视图中出现错误

在“消息”视图中:

错误:应为字符串[ResourceType]类型的资源

这似乎不是密钥库或签名的问题,因为它会引导我找到一行代码,即:

String color = getResources().getString(VarGlobales.color4).substring(3);
VarGlobales只是我创建用来定义全局变量的类,当然它是正确导入的。
VarGlobales.color4
带下划线,当我悬停时,它会显示:

此检查需要字符串[less…](Ctrl+F1)类型的资源 查看使用各种注释的Android API调用 支持注释(如RequiresPermission或UiThread)和标志 未按照指定正确使用API的任何调用 注释。本次检查标记的错误示例:通过 将错误类型的资源整数(如R.string)添加到 需要不同的类型(例如R.dimen)。忘记调用 在需要调用 方法,该方法需要权限,但未声明该权限 清单中的权限将资源颜色引用传递给 方法,该方法需要一个RGB整数值…以及更多。有关更多信息,请参阅 有关详细信息,请参阅位于的文档

VarGlobales.color4
是一个整数,所以据我所知,它不应该给出任何错误,因为
getString()
需要一个整数ID作为参数。定义中没有我期望的值吗?它是这样的:

// In VarGlobales class
public static int color4 = R.color.teal4;
R.color.teal4
colors.xml
中定义如下:

// In colors.xml
<color name="teal4">#00796B</color>
//In colors.xml
#00796B

奇怪的是,它在构建调试APK时没有给出任何错误,所以一开始它不应该是代码问题。

它必须是
getResources().getColor(VarGlobales.color4)
。但是这是不推荐的。所以你需要使用
ContextCompact.getColor(this,VarGlobales.color4)
应用程序使用API级别14(而且它必须能够在Android 4中运行),所以我不能使用ContextCompat。这也会起作用
getResources().getColor(VarGlobales.color4)
。它不被禁止。如果直接使用R.id,它能起作用吗?它必须是
getResources().getColor(VarGlobales.color4)
。但这是不推荐使用的。因此您需要使用
ContextCompact.getColor(这个,VarGlobales.color4)
该应用程序使用API级别14(并且它必须能够在Android 4中运行),因此我不能使用contextcompat。这也可以使用
getResources().getColor(VarGlobales.color4)
。不推荐使用。如果直接使用R.id,是否有效?