Android – 从Flavor中删除活动

前端之家收集整理的这篇文章主要介绍了Android – 从Flavor中删除活动前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
如何从app风格中删除活动?这是一个简化的例子,我有一个应用程序,它有以下两种口味(付费和免费).该应用程序很小,只有3个活动(MainActivity,ActivityOne和ActivityTwo).付费应用程序不需要任何限制,因为它将使用完整的代码库.然而,免费应用程序要求用户可以访问MainActivity和ActivityTwo,而不是ActivityOne.如何在编译代码时执行“Manifest Merge”,以便免费版本中不存在ActivityOne?换句话说,应该如何创建src / free / AndroidManifest.xml以使免费应用程序没有ActivityOne?

下面是app的build.gradle文件

apply plugin: 'com.android.application'

android {
    compileSdkVersion 21
    buildToolsVersion "21.1.2"

    defaultConfig {
        applicationId "com.example.calculator"
        minSdkVersion 21
        targetSdkVersion 21
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'),'proguard-rules.pro'
        }
    }
    productFlavors {
        paid {
            applicationId "com.example.paid"
            resValue "string","app_name","Paid Calculator"
            versionName "1.0-full"
        }
        free {
            applicationId "com.example.free"
            resValue "string","Free Calculator"
            versionName "1.0-free"
        }
    }
    sourceSets {
        paid {
            manifest.srcFile 'src/paid/AndroidManifest.xml'
        }
        free {
            manifest.srcFile 'src/free/AndroidManifest.xml'
        }
    }
}

dependencies {
    compile fileTree(dir: 'libs',include: ['*.jar'])
    compile 'com.android.support:cardview-v7:21.0.0'
    compile 'com.android.support:recyclerview-v7:21.0.0'
    compile 'com.android.support:design:22.2.0'
    compile 'com.android.support:appcompat-v7:22.2.0'
}

下面是应用程序的清单文件它位于src / main / AndroidManifest.xml:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.calculator">

    <application
        android:name="com.example.calculator.ui.activities.AppController"
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:theme="@style/AppTheme">
        <activity
            android:name=".ui.activities.MainActivity"
            android:label="@string/app_name">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity
            android:name=".ui.activities.ActivityOne"
            android:label="@string/title_activity_one"
            android:parentActivityName=".ui.activities.MainActivity">
            <Meta-data
                android:name="android.support.PARENT_ACTIVITY"
                android:value=".ui.activities.MainActivity" />
        </activity>
        <activity
            android:name=".ui.activities.ActivityTwo"
            android:label="@string/title_activity_two"
            android:parentActivityName=".ui.activities.MainActivity">
            <Meta-data
                android:name="android.support.PARENT_ACTIVITY"
                android:value=".ui.activities.MainActivity" />
        </activity>
    </application>
</manifest>

解决方法

在您的免费风味中,您可以在AndroidManifest中指定:
<activity android:name=".ui.activities.ActivityOne" tools:node="remove"/>

标记工具:node =“remove”将使合并删除任何与android:name =“.ui.activities.ActivityOne”的活动

猜你在找的Android相关文章