Questo errore mi sta facendo impazzire. La mia app si blocca all'avvio quando scaricato da Google Play Store con l'errore:java.lang.ClassNotFoundException in dalvik.system.BaseDexClassLoader.findClass
java.lang.ClassNotFoundException
in dalvik.system.BaseDexClassLoader.findClass
mia app non va in crash quando costruire da Eclipse sulle nostre due dispositivi. Tuttavia un mese fa un cliente usava il suo telefono per costruire la nostra app e poi si bloccava anche all'avvio. Ho ignorato il problema perché stava lavorando sui nostri dispositivi e ho pensato che avesse qualcosa a che fare con le chiavi di Google Maps o Keystore.
Ora la nostra app si blocca su tutti i dispositivi quando scaricati dal Play Store. Capisco che non esiste un modo semplice per risolvere questo problema, ma sarebbe gradita una spinta nella giusta direzione.
Inoltre, trovo difficile eseguire il debug di questo problema perché l'app funziona alla grande quando compilato da Eclipse sui nostri dispositivi!
Ecco il log di errore completo che ho riportato:
java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.denederlandsewateren.winkeloord/com.denederlandsewateren.views.StartScreenActivity}: java.lang.ClassNotFoundException: com.denederlandsewateren.views.StartScreenActivity
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2099)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2210)
at android.app.ActivityThread.access$600(ActivityThread.java:142)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1208)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4931)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:791)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:558)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.ClassNotFoundException: com.denederlandsewateren.views.StartScreenActivity
at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:61)
at java.lang.ClassLoader.loadClass(ClassLoader.java:501)
at java.lang.ClassLoader.loadClass(ClassLoader.java:461)
at android.app.Instrumentation.newActivity(Instrumentation.java:1053)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2090)
... 11 more
Ancora una volta I dont tranne una risposta dritto in avanti per questo problema, ma forse qualcuno può far luce su questo problema fornito con questo registro errori.
EDIT
Ecco il file manifesto, se questo è utile:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.xxxx.xxxxx"
android:versionCode="1"
android:versionName="1.0" >
<permission
android:name="com.xxxxx.xxxxx.MAPS_RECEIVE"
android:protectionLevel="signature" />
<permission
android:name="com.xxxxx.xxxxx.permission.C2D_MESSAGE"
android:protectionLevel="signature" />
<uses-permission android:name="my_app_package.permission.C2D_MESSAGE" />
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="com.xxxxxx.xxxxx.MAPS_RECEIVE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-feature
android:glEsVersion="0x00020000"
android:required="true" />
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="17" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
<uses-permission android:name="android.permission.CALL_PHONE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.VIBRATE" />
<application
android:allowBackup="true"
android:icon="@drawable/app_icon"
android:label="@string/app_name"
android:theme="@style/Theme.Sherlock" >
<service android:name="com.xxxxxx.xxxxx.GCMIntentService" />
<meta-data
android:name="com.google.android.maps.v2.API_KEY"
android:value="xxxxxxxx" />
<receiver
android:name="com.google.android.gcm.GCMBroadcastReceiver"
android:permission="com.google.android.c2dm.permission.SEND" >
<intent-filter>
<action android:name="com.google.android.c2dm.intent.RECEIVE" />
<action android:name="com.google.android.c2dm.intent.REGISTRATION" />
<category android:name="com.xxxxxx.xxxxxxx" />
</intent-filter>
</receiver>
<activity
android:name="com.xxxxx.xxxxx.MainActivity"
android:label="@string/app_name"
android:screenOrientation="portrait">
<!--<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter> -->
</activity>
<meta-data
android:name="com.facebook.sdk.ApplicationId"
android:value="@string/app_id" />
<activity android:name="com.facebook.LoginActivity" >
</activity>
<activity
android:name="com.xxxxxx.xxxxxx.StartScreenActivity"
android:label="@string/app_name"
android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen"
android:screenOrientation="portrait">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
EDIT
Aggiunto il registro dettagliato quando si installa l'applicazione sul dispositivo
03-30 17:56:28.554: D/dalvikvm(5150): GC_FOR_ALLOC freed 233K, 68% free 2639K/8195K, paused 13ms, total 13ms
03-30 17:56:28.574: I/dalvikvm-heap(5150): Grow heap (frag case) to 26.682MB for 16777232-byte allocation
03-30 17:56:28.594: D/dalvikvm(5150): GC_CONCURRENT freed <1K, 23% free 19022K/24647K, paused 2ms+9ms, total 21ms
03-30 17:56:29.114: D/dalvikvm(5150): GC_FOR_ALLOC freed 0K, 23% free 19022K/24647K, paused 15ms, total 15ms
03-30 17:56:29.129: I/dalvikvm-heap(5150): Grow heap (frag case) to 35.681MB for 9437200-byte allocation
03-30 17:56:29.169: D/dalvikvm(5150): GC_CONCURRENT freed 0K, 17% free 28238K/33927K, paused 2ms+2ms, total 38ms
03-30 17:56:29.254: D/libEGL(5150): loaded /system/lib/egl/libEGL_mali.so
03-30 17:56:29.259: D/libEGL(5150): loaded /system/lib/egl/libGLESv1_CM_mali.so
03-30 17:56:29.259: D/libEGL(5150): loaded /system/lib/egl/libGLESv2_mali.so
03-30 17:56:29.284: D/OpenGLRenderer(5150): Enabling debug mode 0
03-30 17:56:32.154: D/KEY(5150): UUID
03-30 17:56:32.179: I/System.out(5150): UUID: xxxxxxxxxxxxxx
03-30 17:56:32.179: E/SerializeObject(5150): FileNot Found in ReadSettings filename = xxxxx.dat
03-30 17:56:32.184: D/GCMRegistrar(5150): resetting backoff for com.xxxxx.xxxxx
03-30 17:56:32.214: V/GCMRegistrar(5150): Registering app com.xxxxx.xxxxx of senders 752727514714
03-30 17:56:32.214: D/KEY(5150): pushEnabled
03-30 17:56:32.324: V/SlidingMenu(5150): setting padding!
03-30 17:56:32.394: W/AllCapsTransformationMethod(5150): Caller did not enable length changes; not transforming text
03-30 17:56:32.394: W/AllCapsTransformationMethod(5150): Caller did not enable length changes; not transforming text
03-30 17:56:32.394: W/AllCapsTransformationMethod(5150): Caller did not enable length changes; not transforming text
03-30 17:56:32.409: W/AllCapsTransformationMethod(5150): Caller did not enable length changes; not transforming text
03-30 17:56:32.414: W/AllCapsTransformationMethod(5150): Caller did not enable length changes; not transforming text
03-30 17:56:32.414: W/AllCapsTransformationMethod(5150): Caller did not enable length changes; not transforming text
03-30 17:56:32.424: W/AllCapsTransformationMethod(5150): Caller did not enable length changes; not transforming text
03-30 17:56:32.424: W/AllCapsTransformationMethod(5150): Caller did not enable length changes; not transforming text
03-30 17:56:32.429: W/AllCapsTransformationMethod(5150): Caller did not enable length changes; not transforming text
03-30 17:56:32.434: W/AllCapsTransformationMethod(5150): Caller did not enable length changes; not transforming text
03-30 17:56:32.434: W/AllCapsTransformationMethod(5150): Caller did not enable length changes; not transforming text
03-30 17:56:32.434: W/AllCapsTransformationMethod(5150): Caller did not enable length changes; not transforming text
03-30 17:56:32.459: V/CustomViewBehind(5150): behind INVISIBLE
03-30 17:56:36.894: D/dalvikvm(5150): GC_CONCURRENT freed 20031K, 58% free 15574K/36551K, paused 4ms+7ms, total 49ms
03-30 17:56:36.894: D/dalvikvm(5150): WAIT_FOR_CONCURRENT_GC blocked 31ms
03-30 17:56:37.504: I/System.out(5150): VaarApp ID: 5
03-30 17:56:37.534: I/Choreographer(5150): Skipped 122 frames! The application may be doing too much work on its main thread.
03-30 17:56:37.539: V/GCMBroadcastReceiver(5150): onReceive: com.google.android.c2dm.intent.REGISTRATION
03-30 17:56:37.544: V/GCMBroadcastReceiver(5150): GCM IntentService class: com.xxxxx.xxxxx.GCMIntentService
03-30 17:56:37.549: V/GCMBaseIntentService(5150): Acquiring wakelock
03-30 17:56:37.794: V/GCMBaseIntentService(5150): Intent service name: GCMIntentService-DynamicSenderIds-1
03-30 17:56:37.794: E/GCMRegistrar(5150): internal error: retry receiver class not set yet
03-30 17:56:37.794: V/GCMRegistrar(5150): Registering receiver
03-30 17:56:37.799: D/GCMBaseIntentService(5150): handleRegistration: registrationId = xxxxxxxxx-xxxxxxxx-xxxxxxxx-xxxxxx-xxxxx-xxxx, error = null, unregistered = null
03-30 17:56:37.799: D/GCMRegistrar(5150): resetting backoff for com.xxxxx.xxxxx
03-30 17:56:37.799: V/GCMRegistrar(5150): Saving regId on app version 1
03-30 17:56:37.829: V/GCMBaseIntentService(5150): Releasing wakelock
03-30 17:56:39.169: D/dalvikvm(5150): GC_CONCURRENT freed 2248K, 52% free 17830K/36551K, paused 6ms+12ms, total 95ms
03-30 17:56:39.169: D/dalvikvm(5150): WAIT_FOR_CONCURRENT_GC blocked 12ms
03-30 17:56:39.174: D/dalvikvm(5150): WAIT_FOR_CONCURRENT_GC blocked 48ms
03-30 17:56:41.164: I/dalvikvm(5150): Jit: resizing JitTable from 4096 to 8192
03-30 17:56:42.229: D/dalvikvm(5150): GC_CONCURRENT freed 4265K, 49% free 18778K/36551K, paused 3ms+6ms, total 58ms
03-30 17:56:42.229: D/dalvikvm(5150): WAIT_FOR_CONCURRENT_GC blocked 41ms
03-30 17:56:42.234: D/dalvikvm(5150): WAIT_FOR_CONCURRENT_GC blocked 46ms
03-30 17:57:51.759: D/dalvikvm(5150): GC_CONCURRENT freed 5476K, 49% free 18775K/36551K, paused 21ms+6ms, total 196ms
Una build utilizza ProGuard? Mi chiedo se ProGuard stia estraendo il codice perché pensa che non sia utilizzato. – fadden
Se la classe esiste (non è precostituita), è possibile che dalvik stia rifiutando la classe per qualche motivo. Se questo è il caso, vedrai alcuni messaggi di errore da Dalvik quando stai installando l'app. – JesusFreke
Ho aggiunto i log durante l'installazione della mia app. Guarderà ProGuard in questo momento. –