gradle 解决合并清单中的问题后,清单合并失败,出现多个错误日志

djmepvbi  于 2022-11-14  发布在  其他
关注(0)|答案(1)|浏览(127)

我运行我的应用程序在构建和抛出一个错误作为**清单合并失败与多个错误日志。**和解决问题后,它再次抛出该问题,然后问题仍然相同请帮助我在这个问题上,我无法解决的问题,为什么它说我的事情一次又一次。

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="com.xxxx">
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
<uses-permission android:name="android.permission.CALL_PHONE" />

<application
    android:name="com.xxxx.MyApplication"
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:roundIcon="@mipmap/ic_launcher"
    android:supportsRtl="true"
    android:theme="@style/AppTheme"
    android:exported="false"
    android:usesCleartextTraffic="true"
    tools:ignore="GoogleAppIndexingWarning">
    <activity android:name="com.xxxx.activity.PaypalActivity" />
    <activity android:name="com.xxxx.activity.ChanegPasswordActivity" />
    <activity
        android:name="com.xxxx.activity.BaseActivity"
        android:screenOrientation="portrait"
        tools:ignore="LockedOrientationActivity" />
    <activity
        android:name="com.xxxx.activity.AboutsActivity"
        android:label="About"
        android:screenOrientation="portrait"
        tools:ignore="LockedOrientationActivity" />
    <activity
        android:name="com.xxxx.activity.TramsAndConditionActivity"
        android:label="Terms &amp; Conditions"
        android:screenOrientation="portrait"
        tools:ignore="LockedOrientationActivity" />

    <activity
        android:name="com.xxxx.activity.PrivecyPolicyActivity"
        android:label="Privacy &amp; Policy"
        android:screenOrientation="portrait"
        tools:ignore="LockedOrientationActivity" />
    <activity
        android:name="com.xxxx.activity.ContectusActivity"
        android:label="Contact us"
        android:screenOrientation="portrait"
        tools:ignore="LockedOrientationActivity" />

    <activity
        android:name="com.xxxx.activity.CoupunActivity"
        android:screenOrientation="portrait"
        tools:ignore="LockedOrientationActivity" />
    <activity
        android:name="com.xxxx.activity.NotificationActivity"
        android:screenOrientation="portrait"
        tools:ignore="LockedOrientationActivity"
        android:exported="false"
        />
    <activity
        android:name="com.xxxx.activity.ItemDetailsActivity"
        android:screenOrientation="portrait"
        android:theme="@style/AppTheme.NoActionBar"
        tools:ignore="LockedOrientationActivity" />
    <activity
        android:name="com.xxxx.activity.SelectAreaActivity"
        android:screenOrientation="portrait"
        android:theme="@style/AppTheme2"
        tools:ignore="LockedOrientationActivity" />
    <activity
        android:name="com.xxxx.activity.InfoActivity"
        android:screenOrientation="portrait"
        android:theme="@style/AppTheme.NoActionBar"
        tools:ignore="LockedOrientationActivity" />
    <activity
        android:name="com.xxxx.activity.ForgotActivity"
        android:screenOrientation="portrait"
        tools:ignore="LockedOrientationActivity" />
    <activity
        android:name="com.xxxx.activity.MyOrderListActivity"
        android:screenOrientation="portrait"
        android:exported="false"
        tools:ignore="LockedOrientationActivity" />
    <activity
        android:name="com.xxxx.activity.ProfileActivity"
        android:label="My Profile"
        android:screenOrientation="portrait"
        tools:ignore="LockedOrientationActivity" />
    <activity
        android:name="com.xxxx.activity.AddressActivity"
        android:label="My Address"
        android:screenOrientation="portrait"
        tools:ignore="LockedOrientationActivity" />
    <activity
        android:name="com.xxxx.activity.FeedBackActivity"
        android:label="FeedBack"
        android:screenOrientation="portrait"
        tools:ignore="LockedOrientationActivity" />
    <activity
        android:name="com.xxxx.activity.RatesActivity"
        android:label="Rate us"
        android:screenOrientation="portrait"
        tools:ignore="LockedOrientationActivity" />
    <activity
        android:name="com.xxxx.activity.HomeActivity"
        android:label="@string/title_activity_home"
        android:screenOrientation="portrait"
        android:theme="@style/AppTheme.NoActionBar"
        android:exported="false"
        android:windowSoftInputMode="stateAlwaysHidden|adjustNothing"
        tools:ignore="LockedOrientationActivity" />
    <activity
        android:name="com.xxxx.activity.SingActivity"
        android:screenOrientation="portrait"
        android:exported="false"
        android:theme="@style/AppTheme2"
        tools:ignore="LockedOrientationActivity" />
    <activity
        android:name="com.xxxx.activity.LoginActivity"
        android:screenOrientation="portrait"
        android:exported="false"
        android:theme="@style/AppTheme2"
        tools:ignore="LockedOrientationActivity" />
    <activity
        android:name="com.xxxx.activity.FirstActivity"
        android:screenOrientation="portrait"
        android:exported="true"
        android:theme="@style/AppTheme2"
        tools:ignore="LockedOrientationActivity">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity
        android:name="com.xxxx.activity.PopRatesActivity"
        android:screenOrientation="portrait"
        android:theme="@android:style/Theme.Dialog"
        tools:ignore="LockedOrientationActivity" />
    <activity
        android:name="com.xxxx.activity.RazerpayActivity"
        android:screenOrientation="portrait"
        tools:ignore="LockedOrientationActivity" />
    <activity
        android:name="com.xxxx.MainActivity"
        android:screenOrientation="portrait"
        tools:ignore="LockedOrientationActivity" />
    <activity
        android:name="com.xxxx.activity.NotificationDetailsActivity"
        android:screenOrientation="portrait"
        tools:ignore="LockedOrientationActivity" />
    <activity
        android:name="com.xxxx.activity.VerifyPhoneActivity"
        android:screenOrientation="portrait"
        tools:ignore="LockedOrientationActivity" />
  </application>

</manifest>

这是一个错误文件,它甚至在我的清单中没有改变,它保持不变。并尝试在每个活动中添加android:exported=“false/true”,但没有成功

错误:android:exported需要为元素〈activity#com.onesignal.NotificationOpenedActivityHMS〉显式指定。面向Android 12及更高版本的应用需要为android:exported指定显式值,当相应组件定义了Intent过滤器时。请参阅https://developer.android.com/guide/topics/manifest/activity-element#exported了解详细信息。Hungry_Grocery_Delivery_Customer_App_v1.5.app主清单(此文件),第77行错误:android:exported需要为元素〈activity#com.razorpay.CheckoutActivity〉显式指定。面向Android 12及更高版本的应用需要为android:exported指定显式值,如果相应组件定义了Intent过滤器。请参阅https://developer.android.com/guide/topics/manifest/activity-element#exported了解详细信息。Hungry_Grocery_Delivery_Customer_App_v1.5.app主清单(此文件),第17行错误:android:exported需要为元素〈receiver#com.onesignal.GcmBroadcastReceiver〉显式指定。当相应组件定义了intent过滤器时,面向Android 12及更高版本的应用需要为android:exported指定显式值。请参阅https://developer.android.com/guide/topics/manifest/activity-element#exported了解详情。Hungry_Grocery_Delivery_Customer_App_v1.5.app主清单(此文件),第56行错误:android:exported需要为元素〈receiver#com.onesignal.BootUpReceiver〉显式指定。当相应组件定义了Intent过滤器时,面向Android 12及更高版本的应用需要为android:exported指定显式值。https://developer.android.com/guide/topics/manifest/activity-element#exported有关详细信息,请参阅www.example.com。Hungry_Grocery_Delivery_Customer_App_v1.5.app主清单(此文件),第108行错误:android:exported需要为元素〈receiver#com.onesignal.UpgradeReceiver〉显式指定。当相应组件定义了Intent过滤器时,面向Android 12及更高版本的应用需要为android:exported指定显式值。https://developer.android.com/guide/topics/manifest/activity-element#exported有关详细信息,请参阅www.example.com。Hungry_Grocery_Delivery_Customer_App_v1.5.app主清单(此文件),第114行错误:android:exported需要为元素〈receiver#com.razorpay.RzpTokenReceiver〉显式指定。面向Android 12及更高版本的应用需要为android:exported指定显式值(当相应组件定义了Intent过滤器时)。https://developer.android.com/guide/topics/manifest/activity-element#exported有关详细信息,请参阅www.example.com。Hungry_Grocery_Delivery_Customer_App_v1.5.app主清单(此文件),第11行

r8uurelv

r8uurelv1#

您可以尝试解决此问题的一些方法。

查找位置

首先,找到错误的确切位置和/或原因,这可以通过不同的方法来完成(见下文)。

通过检查合并清单进行查找(方法#1)

您可以通过执行以下步骤找到它:

  • 将目标SDK设置为30(以消除31个以上的错误)。
  • 打开应用程序的清单(AndroidManifest.xml),然后单击编辑窗格底部的“合并清单”选项卡:Android Studio中的合并清单

如果您将build.gradle配置为:

allprojects {
   buildDir = "${rootProject.rootDir}/build/${project.name}"
}

类似的内容应位于子路径中,如:
build/my-app/intermediates/merged_manifest/debug/AndroidManifest.xml

  • 转到所有库的单个清单文件(如果创建了合并清单,则可以跳过此步骤,您可以只查看合并清单)
  • 搜索是否有类型为activity、service、receiver或provider的条目没有导出属性,对于每个条目,请遵循下面的“修复找到的条目”部分(或查看一次如何设置导出属性)。
  • 将目标SDK重新设置为31(或更改为30之前的任何值)。
    通过控制台日志查找(方法#2)
  • 在Git-bash中运行类似于以下内容的命令:

./gradlew assembleDebug --stacktrace --info | tee my-logs.txt

  • 打开my-logs.txt文件(在您首选的文本编辑器中,上一步创建的文件)。
  • 现在,确切的位置隐藏在日志中,因此在创建的my-logs.txt文件中搜索以下关键字:
  • 活动编号
  • 服务编号
  • 接收器编号
  • 供应商编号

其中应该会找到类似这样的内容:

activity#androidx.test.core.app.InstrumentationActivityInvoker$BootstrapActivity
ADDED from [androidx.test:core:1.2.0] C:\Users\Admin\.gradle\caches\transforms-3\709730c74fe4dc9f8fd991eb4d1c2adc\transformed\jetified-core-1.2.0\AndroidManifest.xml:27:9-33:20
  • 打开之前步骤找到的AndroidManifest.xml文件,搜索是否有任何类型为activity、service、receiver或provider的条目没有导出属性,并参见下面的“修复找到的条目”部分(了解如何设置每个条目的导出属性)。

请注意(在编写时)传递--stacktrace本身不包括位置信息;- )

修复找到的条目

如果找到的条目的真实的(不是构建生成的)源代码在根项目的清单中(或者你可以修改的地方),直接在其中将exported属性设置为相应的need(通常为false),如下所示:

<receiver
    android:name="<name_of_the_entry>"
    android:exported="false or true"
    tools:node="merge" />

请注意,android:exported="..."tools:node="merge"都在上面设置。
但是,如果找到的条目的规范是写在第三方库的清单中的(这是您不能更改的真实源代码),则通过将其添加到根项目的清单中来覆盖所述库的规范,例如:

<provider
    android:name="com.squareup.picasso.PicassoProvider"
    android:exported="false"
    tools:node="merge"
    tools:overrideLibrary="com.squareup.picasso.picasso" />

请注意,此时也设置了tools:overrideLibrary="..."
有关详细信息,请参阅文档和/或SDK中的类似问题。答案基于@Jakoss的答案

相关问题