aravindh nani
aravindh nani

Reputation: 33

I'm getting error when running my app using android 4.4 and 8.1 (api level 19 & 27) on tablets/mobile phones

This ClassNotFound exception came when I run it on android 4.4 devices, I wonder how did it happen, because I have already registered all of my activities under my manifest file, but still this error is occurring again and it makes me confused. Please can anyone suggest me what is wrong with my code:

Here is error :

Caused by: java.lang.ClassNotFoundException: Didn't find class "com.Forewarn.ForewarnApp.activities.Splash Activity" on path: DexPathList[[zip file "/data/app/com.Forewarn.ForewarnApp-2.apk"],nativeLibraryDirectories=[/data/app-lib/com.Forewarn.ForewarnApp-2, /system/lib]]

Here is manifest :

<?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.Forewarn.ForewarnApp">

    <!-- To auto-complete the email text field in the login form with the user's emails -->
    <uses-permission android:name="android.permission.GET_ACCOUNTS" />
    <uses-permission android:name="android.permission.READ_PROFILE" />
    <uses-permission android:name="android.permission.READ_CONTACTS" />
    <uses-permission android:name="android.permission.WRITE_CONTACTS" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.GET_ACCOUNTS" />
    <uses-permission android:name="android.permission.WAKE_LOCK" />
    <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
    <uses-permission android:name="android.permission.VIBRATE" />
    <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
    <uses-permission android:name="android.permission.SYSTEM_OVERLAY_WINDOW" />
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <uses-permission android:name="android.permission.CALL_PHONE" />
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
    <uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS" />
    <uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" />
    <uses-permission android:name="android.permission.SEND_SMS" />
    <uses-permission android:name="android.permission.READ_CALL_LOG" />
    <uses-permission android:name="android.permission.WRITE_CALL_LOG" />
    <uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT" />
    <uses-permission android:name="android.permission.USE_FINGERPRINT" />

    <uses-permission
        android:name="android.permission.MODIFY_PHONE_STATE"
        tools:ignore="ProtectedPermissions" />

    <uses-feature
        android:name="android.hardware.camera"
        android:required="false" />

    <configuration>
        <release>
            true
        </release>
    </configuration>

    <permission
        android:name="com.Forewarn.ForewarnApp.permission.C2D_MESSAGE"
        android:protectionLevel="signature" />

    <uses-permission android:name="com.Forewarn.ForewarnApp.permission.C2D_MESSAGE" />
    <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />

    <application
        android:name=".activities.SoteriaApplication"
        android:allowBackup="false"
        android:icon="@drawable/ic_launcherr"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity
            android:name=".activities.SplashActivity"
            android:label="@string/app_name"
            android:configChanges="orientation|screenSize"
            android:screenOrientation="portrait"
            android:theme="@style/AppTheme.NoActionBar">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity
            android:name=".MainActivity"
            android:configChanges="orientation|keyboardHidden|screenSize" />
        <activity
            android:name=".activities.SignInActivity"
            android:configChanges="orientation|keyboardHidden|screenSize" />
        <activity android:name=".activities.SignUpActivity" />
        <activity android:name=".activities.ForgotPasswordActivity" />
        <activity android:name=".activities.SerachResultsActivity" />
        <activity android:name=".activities.DetailsPageActivity" />
        <activity android:name=".activities.PropertyDetailsActivity" />
        <activity android:name=".activities.BankurptsDetailsActivity" />
        <activity android:name=".activities.SampleActivity" />
        <activity android:name=".activities.ActivityCallLog" />
        <activity android:name=".activities.SettingsActivity" />
        <activity android:name=".activities.VehicleDetailsActivity" />
        <activity android:name=".activities.ResultsActivity" />
        <activity android:name=".activities.OthersActivity" />
        <activity android:name=".activities.NoRecordsActivity" />
        <activity android:name=".activities.MoreRecordsActivity" />
        <activity
            android:name=".activities.CriminalDetailsActivity"
            android:configChanges="orientation|keyboardHidden|screenSize" />
        <activity android:name=".activities.CriminalSampleActivity" />
        <activity
            android:name=".activities.OtpActivity"
            android:configChanges="orientation|keyboardHidden|screenSize" />
        <activity android:name=".activities.AddressesDetailsActivity" />
        <activity
            android:name=".activities.PhonesHistoryDetailsActivity"
            android:configChanges="orientation|keyboardHidden|screenSize" />
        <activity android:name=".activities.ContactsReaderActivity" />
        <activity
            android:name=".activities.FingerprintTermsAndConditionsActivity"
            android:configChanges="orientation|keyboardHidden|screenSize" />
        <activity android:name=".activities.ChangePasswordActivity" />
        <activity
            android:name=".activities.TermsandConditionsActivity"
            android:configChanges="orientation|keyboardHidden|screenSize" />
        <activity android:name=".activities.PdfPasswordActivity"></activity>
    </application>

</manifest>

and btw i put my minsdkversion = 19 maxsdkversion = 27 and error getting app crashed on android 8.1.0 (api level 27) devices also.

here is my application class code :

public class SoteriaApplication extends Application {
    @Override
    public void onCreate() {
        super.onCreate();
        AccountUtils.assignContext(this);
        MultiDex.install(this);
    }
}

btw i tried with instant run disabling method: now i get verify error : like this :

FATAL EXCEPTION: main
                                                                        Process: com.Forewarn.ForewarnApp, PID: 1060
                                                                        java.lang.VerifyError: com/Forewarn/ForewarnApp/activities/SignInActivity
                                                                            at java.lang.Class.newInstanceImpl(Native Method)
                                                                            at java.lang.Class.newInstance(Class.java:1208)
                                                                            at android.app.Instrumentation.newActivity(Instrumentation.java:1061)
                                                                            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2112)
                                                                            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245)
                                                                            at android.app.ActivityThread.access$800(ActivityThread.java:135)
                                                                            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
                                                                            at android.os.Handler.dispatchMessage(Handler.java:102)
                                                                            at android.os.Looper.loop(Looper.java:136)
                                                                            at android.app.ActivityThread.main(ActivityThread.java:5017)
                                                                            at java.lang.reflect.Method.invokeNative(Native Method)
                                                                            at java.lang.reflect.Method.invoke(Method.java:515)
                                                                            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
                                                                            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
                                                                            at dalvik.system.NativeStart.main(Native Method)

Upvotes: 2

Views: 214

Answers (4)

Cobain
Cobain

Reputation: 196

If you have done the MultiDex work mentioned by @A.s.ALI and @Tomin B Azhakathu and still have the ClassNotFoundException. Then you should look up if the com.Forewarn.ForewarnApp.activities.SplashActivity is in the main dex(You can drag your apk just in the Android Studio and confirm it). If com.Forewarn.ForewarnApp.activities.SplashActivity is in the main dex, and still throw the exception just let me know, thx.

Upvotes: 0

A.s.ALI
A.s.ALI

Reputation: 2082

Update2(After reading your updated question and error log)

I have seen that you have verifier log , so let me describe it hope that you can get some clue. Here is this discussion in detail.

This error indicates that the verifier, included in the Java Virtual Machine (JVM), detected a class file that despite well formed, it contains some type of internal inconsistency or faces a security problem.

The VerifyError class extends the LinkageError class, which is used to indicate those error cases, where a class has a dependency on some other class and that class has incompatibly changed after the compilation. Furthermore, the LinkageError class extends the Error class, which is used to indicate those serious problems that an application should not catch. A method may not declare such errors in its throw clause, because these errors are abnormal conditions that shall never occur.

Finally, the VerifyError exists since the 1.0 version of Java.

For me this could be your case. Consider this SO question and check your dependencies. Clean your project. or even restart your system. I do believe it is not cleaning your project rightly.

Update1 I have the same problem. How I solved it is by adding following line in build.gradle file dependencies.

compile 'com.android.support:multidex:1.0.2'

then in my Application class i extend it with "extends MultiDexApplication" I made sure to add this in onCreate method . like

public class SoteriaApplication extends MultiDexApplication  {
//Please extend your application class with MultiDexApplication 
@Override
public void onCreate() {
    super.onCreate();
    AccountUtils.assignContext(this);
    MultiDex.install(this);
}}

Please extend you application class with MultiDexApplication class.

Upvotes: 0

Tomin B Azhakathu
Tomin B Azhakathu

Reputation: 2686

Sound Like a Multidex issue. In your Application Class activities.SoteriaApplication Add this

  @Override
  protected void attachBaseContext(Context base) {
    super.attachBaseContext(base);
    MultiDex.install(this);
  }

app.gradle

android {
 defaultConfig {
      multiDexEnabled true
  }
 dexOptions {
        javaMaxHeapSize "4g"
    }
}

Enable Multidex in Gradle too

NB : Use android:name=".activities.SoteriaApplication" only if This is Your Custom Appplication Class

Also Try Clean And Rebuild the Project and Run Application without Instant Run. Check Whether problem is resolved

Upvotes: 1

Shivam Oberoi
Shivam Oberoi

Reputation: 1445

Do one thing-:

Go to File on top menu->Setting->Build Execution->Instant run->If its enabled then try disabling that.

Upvotes: 0

Related Questions