我正在尝试在 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 app > src > city > AndroidManifest.xml。在这个文件中我使用
package="ru.Public.lib.city"
我没有创建新的清单。而不是它,我使用了一个占位符作为包名,如下所示:
package="${applicationId}"
我结合了这两种方法:“在应用程序> 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>
所以。看起来我需要根据我需要的每个包名称在新目录中重新创建我的所有活动。但是方法太复杂了。我确信谷歌解决了这个问题。
有人对这个问题有一些想法吗?
谢谢!