当我运行flutter项目时,我得到以下错误:
C:UsersSourav Kannantha BDocumentsAndroidProjectsecommercestorebuildappgeneratedsourcebuildConfigdebugcomskbsmkecommercestoreBuildConfig.java:14: error: illegal escape character
public static final String fluttersdk = "C:UsersSourav Kannantha BDocumentsFlutter";
^
.
.
.
我可以理解为什么这是错误的,因为BuildConfig.java
包含以下行:
public static final String fluttersdk = "C:UsersSourav Kannantha BDocumentsFlutter";
但是我的local.properties
文件包含正确格式的路径:
flutter.sdk=C:\Users\Sourav Kannantha B\Documents\Flutter
我不知道为什么,在构建时跳过了一个反斜杠。我甚至试图将local.properties
编辑为:
flutter.sdk=C:\\Users\\Sourav Kannantha B\\Documents\\Flutter
这个:
flutter.sdk=C:/Users/Sourav Kannantha B/Documents/Flutter
但一旦我运行了这个项目,android工作室就会自动将这些更改为以前的样子。
编辑:项目以前运行正常。这一切都始于我将com.google.android.libraries.mapsplatform.secrets-gradle-plugin
添加到我的android gradle文件中。但我不确定这是否与这个错误有关。
编辑:我的错误确实与com.google.android.libraries.mapsplatform.secrets-gradle-plugin
有关。删除后,错误得到了解决。有人能解释这种行为吗。
自从我添加了secrets插件后,我在Windows上偶然发现了同样的问题。我在文档中发现,你可以将你的秘密移动到插件可以使用的特定属性文件中。这样,您就可以不修改local.properties文件。
请参阅文档中的第8点。简而言之,您需要在应用程序的build.gradle中添加以下代码:
secrets {
propertiesFileName = "secrets.properties"
}
在secrets.properties中,放上你的秘密。
目前,我正在隐藏Maps API密钥,如下所示:
在local.properties
中存储api密钥
MAPS_API_KEY=<MY_API_KEY>
在AndroidManifest.xml
中声明api密钥占位符
<meta-data
android:name="com.google.android.geo.API_KEY"
android:value="${MAPS_API_KEY}" />
更换模块级build.gradle
中的api密钥占位符
def localProperties = new Properties()
def localPropertiesFile = rootProject.file('local.properties')
localPropertiesFile.withReader('UTF-8') { reader ->
localProperties.load(reader)
}
def mapsApiKey = localProperties.getProperty('MAPS_API_KEY')
android {
defaultConfig {
manifestPlaceholders += [MAPS_API_KEY: mapsApiKey]
}
}
我或多或少也遇到了同样的问题。自动生成的buildConfig
文件在添加其他声明的位置不正确。
/**
* Automatically generated file. DO NOT MODIFY
*/
public final class BuildConfig {
public static final boolean DEBUG = false;
public static final String APPLICATION_ID = "com.package";
public static final String BUILD_TYPE = "release";
public static final String FLAVOR = "staging";
public static final int VERSION_CODE = 1;
public static final String VERSION_NAME = "1.0.0";
// Added this weird declaration
public static final String = ;
public static final String sdkdir = " C : U s e r s A d m i n i s t r a t o r A p p D a t a L o c a l A n d r o i d S d k " ";
}
删除com.google.android.libraries.mapsplatform.secrets-gradle-plugin
修复了问题