如何拆分AndroidManifest Android

时间:2016-02-10 15:23:01

标签: android gradle split android-manifest

我需要拆分平板电脑和手机的清单。

 productFlavors {
        phone {
            applicationId "packageName.app.phone"
            buildConfigField 'boolean', 'IsPhone', 'true'
            versionName "1.0-phone"
        }
        tablet {
            applicationId "packageName.app.tablet"
            buildConfigField 'boolean', 'IsPhone', 'false'
            versionName "1.0-tablet"
        }
    }

使用gradle我分割布局和src文件夹但我需要拆分AndroidManifest xml文件。任何人都可以提出一些想法我该怎么做。谢谢

编辑:

android {
    compileSdkVersion 23
    buildToolsVersion "22.0.1"

defaultConfig {
    applicationId "packagename"
    minSdkVersion 14
    targetSdkVersion 23
    versionCode 1
    versionName "1.0"
    multiDexEnabled true
}
buildTypes {
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
}
productFlavors {
    phone {
        applicationId "packagename.app.phone"
        buildConfigField 'boolean', 'IsPhone', 'true'
        versionName "1.0-phone"
    }
    tablet {
        applicationId "packagename.app.tablet"
        buildConfigField 'boolean', 'IsPhone', 'false'
        versionName "1.0-tablet"
    }
}
}

这是我的全力以赴。

编辑2 因此,经过许多研究:)我找到了答案。我写信给包名,如$ {applicationId}。工作得很好。但我真的很感兴趣如何分割清单文件。任何人都可以分享关于这个主题的链接或其他内容。谢谢。

<receiver
            android:name="com.parse.GcmBroadcastReceiver"
            android:permission="com.google.android.c2dm.permission.SEND">
            <intent-filter>
                <action android:name="com.google.android.c2dm.intent.RECEIVE" />
                <action android:name="com.google.android.c2dm.intent.REGISTRATION" />

                <category android:name="${applicationId}" />
            </intent-filter>
</receiver>

2 个答案:

答案 0 :(得分:1)

考虑到您正在为项目使用默认布局,您将拥有一个结构为

的文件夹
app/src/main/AndroidManifest.xml
app/src/phone/AndroidManifest.xml
app/src/tablet/AndroidManifest.xml

此处main/AndroidManifest.xml是您的默认清单,而您在flavor目录中放置的那些是您具有特殊配置的那些。然后在构建风味时将其与默认清单合并。

答案 1 :(得分:0)

使用属性manifest.srcFile:

android {
    sourceSets {
        phone {
            manifest.srcFile 'AndroidManifest_phone.xml'
            ...
        }
        tablet {
            manifest.srcFile 'AndroidManifest_tablet.xml'
            ...
        }
    }
}