錯誤堆棧:
Process: com.mci.smagazine, PID: 23265java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.mci.smagazine/com.mci.smagazine.apshare.ShareEntryActivity}: java.lang.ClassNotFoundException: com.mci.smagazine.apshare.ShareEntryActivity in loader com.zhangyue.iReader.plugin.d[DexPathList[[zip file "/data/app/com.mci.smagazine-oVAsxbpVt3Q0D6kLqRDP-g==/base.apk"],nativeLibraryDirectories=[/system/lib, /vendor/lib]]]at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2911)at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3101)at android.app.ActivityThread.-wrap12(Unknown Source:0)at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1741)at android.os.Handler.dispatchMessage(Handler.java:106)at android.os.Looper.loop(Looper.java:187)at android.app.ActivityThread.main(ActivityThread.java:7114)at java.lang.reflect.Method.invoke(Native Method)at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:814)Caused by: java.lang.ClassNotFoundException: com.mci.smagazine.apshare.ShareEntryActivity in loader com.zhangyue.iReader.plugin.d[DexPathList[[zip file "/data/app/com.mci.smagazine-oVAsxbpVt3Q0D6kLqRDP-g==/base.apk"],nativeLibraryDirectories=[/system/lib, /vendor/lib]]]at com.zhangyue.iReader.plugin.d.loadClass(SourceFile:90)at java.lang.ClassLoader.loadClass(ClassLoader.java:312)at android.app.Instrumentation.newActivity(Instrumentation.java:1195)at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2894)at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3101) at android.app.ActivityThread.-wrap12(Unknown Source:0) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1741) at android.os.Handler.dispatchMessage(Handler.java:106) at android.os.Looper.loop(Looper.java:187) at android.app.ActivityThread.main(ActivityThread.java:7114)
我的清單里面的聲明:
<!--支付寶分享回調--><activityandroid:name="${applicationId}.apshare.ShareEntryActivity"android:configChanges="orientation|keyboardHidden|navigation|screenSize|layoutDirection|smallestScreenSize|screenLayout"android:exported="true"android:screenOrientation="portrait" />
別人反饋了一個崩潰,log 發給我了。說找不到ShareEntryActivity。我搜了以下工程,確實沒有這個類。這個應該是支付寶分享回調的類,我去找測試,測試找了下應該是沒有分享的入口。
我突然想到,支付寶分享應該是去掉了的。怎么還會啟動呢?不可能。
我全局搜索了一下ShareEntryActivity,我擦,清單里面竟然還有這個聲明。
立馬就想到,如果外部啟動你這個ShareEntryActivity ,你肯定類找不到崩潰。
于是自己用adb 模擬一下:
adb shell
am start-activity com.mci.smagazine/com.mci.smagazine.apshare.ShareEntryActivity
或者am start com.mci.smagazine/com.mci.smagazine.apshare.ShareEntryActivity(有的adb 工具不識別start-activity)
下面這行是讓掌閱app 崩潰的
am start-activity com.chaozh.iReaderFree/com.chaozh.iReaderFree.apshare.ShareEntryActivity
總結:
1.清單里面不用的activity 聲明,一定要去掉。否則別人隨便攻擊一下,你就找不到類崩潰了。而且你還自以為是的說,我程序中本來就沒有這個類。那沒有這個類,你干嘛聲明呢?
2.有時候,類找不到,不一定清單里面沒有聲明。有時候搜索要全局搜索一下。