2

我正在尝试在 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 中的包名称:

  1. 在项目结构中,我创建了新的 Manifest app > src > city > AndroidManifest.xml。在这个文件中我使用package="ru.Public.lib.city"

  2. 我没有创建新的清单。而不是它,我使用了一个占位符作为包名,如下所示:package="${applicationId}"

  3. 我结合了这两种方法:“在应用程序> src>城市>中的新清单中使用占位符”

所有显示的方式在 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>

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

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

谢谢!

4

1 回答 1

1

这是解决它的一些步骤。

  1. 转到您的 Firebase 控制台

  2. 选择您以前的项目并添加另一个应用程序

  3. 注册另一个applicationId(把你所有的applicationID一个一个注册)

  4. 然后下载新的google-services.json
  5. google-services.json并在您的项目中放置新的

而已

于 2018-07-31T04:54:30.777 回答