我删除了referrer SDK后,安装引用接收器意外地留在了清单文件中

时间:2016-04-19 09:25:48

标签: android android-manifest android-build android-lint install-referrer

我已从项目中删除了appnext SDK。但是,我忘了删除appnext安装推荐接收器。该版本通过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会让我编译&amp;构建我的项目而不在gradle控制台中发出一个警告?我没有更改任何默认的lint属性。而且,当我现在打开清单文件Android Studio时,会标记行&#34; android:name =&#34; com.appnext.appnextsdk.ReferralReceiver&#34;作为一个错误。但是当我建造这个项目时,我甚至都不会警告我。

0 个答案:

没有答案