每次我运行应用程序时,我都会遇到gradle错误

时间:2018-11-07 15:53:08

标签: android gradle manifest

我正在处理一个android项目,每次运行该应用程序时,都会出现此类错误:

  

清单合并失败:属性application @ appComponentFactory   值=(android.support.v4.app.CoreComponentFactory)来自   [com.android.support:support-compat:28.0.0]   AndroidManifest.xml:22:18-91也位于   [androidx.core:core:1.0.0-alpha1] AndroidManifest.xml:22:18-86   值=(androidx.core.app.CoreComponentFactory)。意见建议:添加   'tools:replace =“ android:appComponentFactory”'转换为元素   在AndroidManifest.xml:10:5-44:19进行覆盖。

即使我尝试按照告诉我的方式进行操作,也存在另一个错误。

这是 build.gradle 文件:

apply plugin: 'com.android.application'

android {
compileSdkVersion 28
defaultConfig {
    applicationId "com.community.jboss.visitingcard"
    minSdkVersion 19
    targetSdkVersion 28
    versionCode 1
    versionName "1.0"
    testInstrumentationRunner 
"android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 
'proguard-rules.pro'
    }
}
buildToolsVersion '28.0.3'
}

dependencies {
implementation fileTree(include: ['*.jar'], dir: 'libs')
//noinspection GradleCompatible
implementation 'com.android.support:appcompat-v7:28.0.0'
//the intro library
implementation 'com.github.msayan:tutorial-view:v1.0.6'
implementation 'com.android.support.constraint:constraint-layout:1.1.3'
implementation 'com.android.support:design:28.0.0'
implementation 'com.google.android.gms:play-services-maps:16.0.0'
implementation "com.android.support:preference-v7:28.0.0"
implementation 'androidx.appcompat:appcompat:1.0.0-alpha1'
implementation 'androidx.constraintlayout:constraintlayout:1.1.2'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso- 
 core:3.0.2'
}

这是清单文件:

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

<!--
    TODO: Add location/GPS access permissions
    TODO: Change the Label of the Activities according to the Activity's 
context
    TODO: Change App Icon .i.e., ic_launcher
-->
<application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:roundIcon="@mipmap/ic_launcher_round"
    android:supportsRtl="true"
    android:theme="@style/AppTheme">
    <activity
        android:name=".LoginActivity"
        android:label="@string/app_name"
        android:theme="@style/AppTheme.NoActionBar" />
    <activity android:name=".VisitingCard.VisitingCardActivity" />
    <activity android:name=".IntroScreens.SliderActivity">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

    <!-- TODO: Add Google Maps API key here -->
    <meta-data
        android:name="com.google.android.geo.API_KEY"
        android:value="@string/google_maps_key" />

    <activity
        android:name=".Maps.MapsActivity"
        android:label="@string/title_activity_maps"
        android:theme="@android:style/Theme.NoTitleBar.Fullscreen" />
    <activity android:name=".VisitingCard.ViewVisitingCard" />
    <activity
        android:name=".SettingsActivity"
        android:label="@string/title_activity_settings" />
    <activity android:name=".IntroActivity"></activity>
</application>

</manifest>

3 个答案:

答案 0 :(得分:0)

在清单中添加以下行:

tools:replace="android:appComponentFactory"

喜欢这个:

<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme"
tools:replace="android:appComponentFactory>

//Your code here

</application>

答案 1 :(得分:0)

您正在使用两个appcompat依赖项,一个来自支持命名空间,另一个来自androidx命名空间。理想的解决方案是将您的项目完全移至androidx并删除以下提到的依赖项,

androidx.appcompat:appcompat:1.0.0 instead of androidx.appcompat:appcompat:1.0.0-alpha1'

您可以使用稳定版本的andoid x appcompat库

from mpl_toolkits.basemap import Basemap
import pyproj

lon  = [3.383789, 5.822754]
lat = [48.920575, 53.72185]

# with Basemap
M = Basemap(projection='merc',ellps = 'WGS84')
q1, q2 = M(lon, lat)
for a,b in zip([x for x in q1], [x for x in q2]):
    print(a,b)
# with pyproj
from pyproj import Proj
p = Proj(proj='merc', ellps='WGS84',errcheck = True)
p1 = Proj(proj='latlong', datum='WGS84',errcheck = True)
print(p(3.383789, 48.920575), p(5.822754, 53.72185))
print(p1(3.383789, 48.920575), p1(5.822754, 53.72185))

答案 2 :(得分:0)

似乎您决定在项目中使用androidX,但是将appCompatandroidX一起使用是不正确的。
最好使用androidX的库,删除appCompat的库。
如果您坚持使用androidX,请删除implementation 'com.android.support:appcompat-v7:28.0.0'文件中的build.gradle或删除一个androidX,否则。

有关您的错误的更多信息: 您可以打开“清单”文件,然后转到“合并”选项卡。在文件底部,您可以查看出了什么问题。