skip to Main Content

When I run my flutter project, I get the following error:

C:UsersSourav Kannantha BDocumentsAndroidProjectsecommercestorebuildappgeneratedsourcebuildConfigdebugcomskbsmkecommercestoreBuildConfig.java:14: error: illegal escape character
  public static final String fluttersdk = "C:UsersSourav Kannantha BDocumentsFlutter";
                                              ^
.
.
.

I can see why that is error, because BuildConfig.java contains this line:

public static final String fluttersdk = "C:UsersSourav Kannantha BDocumentsFlutter";

But my local.properties file contains the path in correct format:

flutter.sdk=C:\Users\Sourav Kannantha B\Documents\Flutter

I don’t know why, while building it is skipping one backslash. I even tried to edit local.properties to this:

flutter.sdk=C:\\Users\\Sourav Kannantha B\\Documents\\Flutter

and this:

flutter.sdk=C:/Users/Sourav Kannantha B/Documents/Flutter

But as soon as I run the project, android studio is automatically changing these to as it was before.

EDIT: Project was running properly before. This all started when I added com.google.android.libraries.mapsplatform.secrets-gradle-plugin to my android gradle file. But I’m not sure if this has to do anything with this error.

EDIT: My bad, error was indeed related to com.google.android.libraries.mapsplatform.secrets-gradle-plugin. After removing that, error got resolved. Can someone explain this behaviour.

3

Answers


  1. Chosen as BEST ANSWER

    Currently now, I'm hiding my Maps API key as below:

    Storing the api key in local.properties

    MAPS_API_KEY=<MY_API_KEY>
    

    Declaring the api key placeholder in AndroidManifest.xml

    <meta-data
        android:name="com.google.android.geo.API_KEY"
        android:value="${MAPS_API_KEY}" />
    

    Replacing the api key placeholder in module level build.gradle

    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]
        }
    }
    

  2. I stumbled upon the same issue on Windows since I added the secrets plugin. I found in the documentation that you can move your secrets into a specific properties file which the plugin can use. That way, you can leave the local.properties file unmodified.

    See point 8 in the documentation. In a nutshell, you need to add the following code in your app’s build.gradle :

    secrets {
        propertiesFileName = "secrets.properties"
    }
    

    And in secrets.properties, put your secrets.

    Login or Signup to reply.
  3. I had more or less same issue. The autogenerated buildConfig file was not correct in where it added some other declaration.

    /**
    * 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 " ";
    }
    

    Removing com.google.android.libraries.mapsplatform.secrets-gradle-plugin fixed the issue

    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search