【问题标题】:productFlavors application IdproductFlavors 应用程序 ID
【发布时间】:2018-03-31 13:20:01
【问题描述】:

我正在尝试在 Android Studio 中使用 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 应用 > 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>

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

有人对这个问题有什么想法吗?

谢谢!

【问题讨论】:

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


    【解决方案1】:

    这里有一些步骤来解决它。

    1. 转到您的 Firebase 控制台

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

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

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

    就是这样

    【讨论】:

      猜你喜欢
      • 2018-11-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-25
      • 2016-01-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多