来自AndroidManifest的属性提供者FirebaseInitProvider和FacebookInitProvider也出现在AndroidManifest上

时间:2018-02-13 13:44:35

标签: android gradle manifest

我的应用程序只由一个application模块组成。我最近尝试将其拆分为2个模块(一个feature基础和一个application一个),以便稍后添加instant-app模块。

我新创建的feature模块AndroidManifestgradle.build包含以前application模块中的所有内容:

feature AndroidManifest:

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

    <!-- all uses-permissions and permissions -->    

    <application>

        <!-- activities, intent-filters... -->

        <provider android:authorities="com.facebook.app.FacebookContentProvider663###########"
            android:name="com.facebook.FacebookContentProvider"
            android:exported="true"/>

        <provider
            android:name="android.support.v4.content.FileProvider"
            android:authorities="${applicationId}.provider"
            android:exported="false"
            android:grantUriPermissions="true">
            <meta-data
                android:name="android.support.FILE_PROVIDER_PATHS"
                android:resource="@xml/provider_paths"/>
        </provider>

        <!-- etc -->

    </application>

</manifest>

application AndroidManifest:

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

feature build.gradle:

apply plugin: 'com.android.feature'

android {
    buildTypes {
        debug {
             // debug values
        }
        release {
             // release values
        }
    }
    lintOptions {
        checkReleaseBuilds false
    }
    compileSdkVersion rootProject.compileSdk
    defaultConfig {
        minSdkVersion rootProject.minSdk
        targetSdkVersion rootProject.compileSdk
        versionCode rootProject.versionCode
        versionName rootProject.versionName
    }

    baseFeature true
}

dependencies {
    api "com.android.support:appcompat-v7:$rootProject.supportLib"
    application project(':apk')
    compile "com.google.firebase:firebase-core:$rootProject.gmsLib"
    compile 'com.facebook.android:facebook-android-sdk:4.27.0'
    // other dependencies
}

application build.gradle:

apply plugin: 'com.android.application'

android {
    compileSdkVersion rootProject.compileSdk

    defaultConfig {
        applicationId "app.package"
        minSdkVersion rootProject.minSdk
        targetSdkVersion rootProject.compileSdk
        versionCode rootProject.versionCode
        versionName rootProject.versionName

        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"

    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }

}

dependencies {
    implementation project(":feature")
}

apply plugin: 'com.google.gms.google-services'

然而,虽然一切都很好,但我的APK运行配置存在问题:

enter image description here

当我在启动选项中选择默认活动时,我收到默认活动未找到警告,当我选择一个特定的活动时,我得到一个活动&#39; XXXX&#39;未在AndroidManifest.xml 中声明。

经过一番研究后,我意识到这是因为apk Manifest的一个错误,我能够通过查看&#34; Merged Manifest&#34;选项。这是输出:

enter image description here

我无法找到相关信息来帮助我解决这个问题...感谢您的帮助!

1 个答案:

答案 0 :(得分:2)

我能够通过在功能tools:node="replace"的{​​{1}}节点中添加<application>来解决此问题。另外,不要忘记在Manifest顶级添加AndroidManifest