Android 使用gradle为生成变体创建活动别名

Android 使用gradle为生成变体创建活动别名,android,android-activity,gradle,android-gradle-plugin,Android,Android Activity,Gradle,Android Gradle Plugin,我最近将4个类似但独立的应用程序合并到一个gradle项目中,并设置gradle使用构建变量独立部署每个应用程序。因为我已经合并了这些以前独立的项目,所以我需要重命名一些包,包括launcher活动的包。为了保留当前用户群的启动器链接,我想使用活动别名将旧启动器链接指向新的启动器活动。到目前为止还不错 但是,由于我有多个构建变体,我需要几个不同的别名来链接回新的启动活动。我研究了gradle的新版本,并研究了使用占位符作为别名,但是,当我将占位符放在别名下时,它拒绝确认正确的包。该应用程序将因以

我最近将4个类似但独立的应用程序合并到一个gradle项目中,并设置gradle使用构建变量独立部署每个应用程序。因为我已经合并了这些以前独立的项目,所以我需要重命名一些包,包括launcher活动的包。为了保留当前用户群的启动器链接,我想使用活动别名将旧启动器链接指向新的启动器活动。到目前为止还不错

但是,由于我有多个构建变体,我需要几个不同的别名来链接回新的启动活动。我研究了gradle的新版本,并研究了使用占位符作为别名,但是,当我将占位符放在别名下时,它拒绝确认正确的包。该应用程序将因以下原因崩溃:

Starting: Intent { act=android.intent.action.MAIN 
cat=[android.intent.category.LAUNCHER] 
cmp=com.stuart.android.flavor1/${packageName}.NewLauncherActivity }
Error type 3
Error: Activity class {com.stuart.android.flavor1/${packageName}.NewLauncherActivity} does not exist.
下面是我的清单和gradle生成文件中的活动别名。我需要找到一种方法,将每个构建变量的包名插入到我所做的每个构建的别名中。com.stuart.android.main是所有口味的通用包装,是新发布活动的地点。我正在使用Android Studio 0.6.1和0.11 Gradle插件。感谢您的帮助

清单

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="com.stuart.android.main"
      android:installLocation="auto">
    <application android:icon="@drawable/icon" android:label="@string/app_name" android:allowBackup="true" android:theme="@style/appTheme">

        <activity android:name=".NewLauncherActivity" android:label="@string/app_name_full"/>

        <activity-alias
            android:name="${packageName}.OldLauncherActivity"
            android:targetActivity="com.stuart.android.main.NewLauncherActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity-alias>

    </application>

    <uses-sdk android:minSdkVersion="14" android:targetSdkVersion="19"/>
</manifest> 

当您使用Gradle设置“packageName”(或“applicationId”)时,您可以尝试

android:name="com.stuart.android.main.NewLauncherActivity" 
而不是

android:name=".NewLauncherActivity"

在清单的第7行

中,您是否找到了此问题的解决方案?
android:name=".NewLauncherActivity"