4

我已经从我的项目中删除了 appnext SDK。但是,我忘了删除 appnext install 推荐接收器。该版本通过 gradle build 没有任何错误或警告,即使它应该失败构建!(因为我引用了一个不再属于项目的 SDK)。我的问题是为什么 Android Studio/Gradle 在构建时至少没有警告我?

这是我的清单文件中的相关代码片段:

The AppsFlyer Install Receiver is first and will broadcast to all receivers placed below it.
Although the library provides additional services, if you use ProGuard as part of your build process,
it has a light footprint. We only use the ads packages from Google Services.
If you want to optimize the size of your project you can exclude any other packages.
For more details see: https://support.appsflyer.com/hc/en-us/articles/207032126-AppsFlyer-SDK-Integration-Android
-->
<receiver
    android:name="com.appsflyer.MultipleInstallBroadcastReceiver"
    android:exported="true">
    <intent-filter>
        <action android:name="com.android.vending.INSTALL_REFERRER" />
    </intent-filter>
</receiver>

<!-- appnext install referral receiver -->
<receiver
    android:name="com.appnext.appnextsdk.ReferralReceiver"
    android:exported="true">
    <intent-filter>
        <action android:name="com.android.vending.INSTALL_REFERRER" />
    </intent-filter>
</receiver>

您还可以在下面看到异常堆栈跟踪(有点太晚了:():

Fatal Exception: java.lang.RuntimeException: Unable to instantiate receiver com.appnext.appnextsdk.ReferralReceiver: java.lang.ClassNotFoundException: Didn't find class "com.appnext.appnextsdk.ReferralReceiver" on path: DexPathList[[zip file "/data/app/com.infibond.infi-1/base.apk"],nativeLibraryDirectories=[/data/app/com.infibond.infi-1/lib/arm, /vendor/lib, /system/lib]]
       at android.app.ActivityThread.handleReceiver(ActivityThread.java:2992)
       at android.app.ActivityThread.access$1800(ActivityThread.java:177)
       at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1507)
       at android.os.Handler.dispatchMessage(Handler.java:102)
       at android.os.Looper.loop(Looper.java:135)
       at android.app.ActivityThread.main(ActivityThread.java:5910)
       at java.lang.reflect.Method.invoke(Method.java)
       at java.lang.reflect.Method.invoke(Method.java:372)
       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1405)
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1200)
Caused by java.lang.ClassNotFoundException: Didn't find class "com.appnext.appnextsdk.ReferralReceiver" on path: DexPathList[[zip file "/data/app/com.infibond.infi-1/base.apk"],nativeLibraryDirectories=[/data/app/com.infibond.infi-1/lib/arm, /vendor/lib, /system/lib]]
       at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
       at java.lang.ClassLoader.loadClass(ClassLoader.java:511)
       at java.lang.ClassLoader.loadClass(ClassLoader.java:469)
       at android.app.ActivityThread.handleReceiver(ActivityThread.java:2987)
       at android.app.ActivityThread.access$1800(ActivityThread.java:177)
       at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1507)
       at android.os.Handler.dispatchMessage(Handler.java:102)
       at android.os.Looper.loop(Looper.java:135)
       at android.app.ActivityThread.main(ActivityThread.java:5910)
       at java.lang.reflect.Method.invoke(Method.java)
       at java.lang.reflect.Method.invoke(Method.java:372)
       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1405)
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1200)

上面的异常堆栈跟踪对我来说很清楚并且非常合乎逻辑。毕竟我已经从我的项目中删除了应用程序下一个库,这是我忘记的。为什么它发生不是我的问题,我的问题是为什么 Android Studio 会让我编译和构建我的项目而不会在 gradle 控制台中发出一个警告?我没有更改任何默认的 lint 属性。此外,当我现在打开 Android Studio 清单文件时,会将 "android:name="com.appnext.appnextsdk.ReferralReceiver" 行标记为错误。但是当我构建项目时甚至不会警告我。

4

0 回答 0