productFlavors应用程序ID

时间:2017-10-19 13:25:28

标签: android-gradle android-productflavors android-build-type android-build-flavors android-buildconfig

我正在尝试在Android Studio usung productFlavors中制作两种类型的版本。 我需要为每个buld类型提供唯一的applicationId。 这是一个问题:

首先,我将此代码添加到我的gradle文件

productFlavors {
    base {
        applicationId "ru.Public.lib"
    }

    city {
        applicationId "ru.Public.lib.city"
    }

然后,当我尝试使用城市类型构建应用时,Android Studio会显示错误:

"Error:Execution failed for task ':app:processBaseDebugGoogleServices'.
No matching client found for package name 'ru.Public.lib.debug'"

在此之后,我决定需要在Manifest文件中更改包名。 我尝试通过三种方式更改Manifest中的包名称:

  1. 在项目结构中,我创建了新的Manifest应用程序> src>城市> AndroidManifest.xml中。在此文件中,我使用package="ru.Public.lib.city"

  2. 我没有创建新的Manifest。而不是我使用placehilder作为包名称:package="${applicationId}"

  3. 我将这两种方法结合起来:“在app中使用新版本的占位符> src> city>”

  4. 所有显示的方式都会在Manifest中显示错误:Android Studio将活动名称标记为红色并显示unsolved class 'Activity Name'

    这是我的清单的一部分

    <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
        package="ru.Public.lib">
    
        <uses-permission android:name="android.permission.INTERNET" />
        <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
        <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
        <uses-permission android:name="android.permission.WAKE_LOCK" />
    
        <application
            android:name="ru.Public.lib.app.Application"
            android:hardwareAccelerated="true"
            android:icon="@mipmap/icon"
            android:label="@string/app_name"
            android:largeHeap="true"
            android:resizeableActivity="false"
            android:supportsRtl="true"
            android:theme="@style/AppTheme.NoActionBarDefault">
    
            <activity
                android:name=".activities.ActivityMain"
                android:configChanges="orientation|keyboardHidden">
    
            </activity>
    
            <activity
                android:name=".activities.ActivityEdition"
                android:configChanges="orientation|screenSize|keyboardHidden">
    
            </activity>
    .....................................................................etc.
    </manifest>
    

    因此。看起来我需要根据我需要的每个包装名称在新目录中重新创建我的所有活动。但这太复杂了。我确信谷歌解决了这个问题。

    有人对这个问题有一些想法吗?

    谢谢!

1 个答案:

答案 0 :(得分:0)

有一些步骤可以解决它。

  
      
  1. 转到您的Firebase控制台

  2.   
  3. 选择上一个项目并添加另一个应用程序

  4.   
  5. 注册另一个applicationId(一个一个地注册您的所有applicationID)

  6.   
  7. 然后下载新的google-services.json
  8.   
  9. 然后在您的项目中放置新的google-services.json
  10.   

就这样