1
votes

I downloaded this code from GitHub to see if I can customize it to work for a project I'm working on. I'm down to what I hope is my last issue but I'm completely stuck on this error. I can build and run the application but it crashes on launch.

I've gone through many similar questions here and I've made changes based on solutions but they don't seem to work for me. I'm a newbie at this and any help would be greatly appreciated. Please...anybody. :)

I'm using Android Studio.

Here's my build.gradle file. I enabled MultiDex and added support for legacy libraries. These were both suggestions in other solutions.

import java.util.regex.Pattern

//apply plugin: 'android'
apply plugin: 'com.android.application'

buildscript {
    repositories {
        //mavenCentral()
        jcenter()
    }

    dependencies {
        classpath 'com.android.tools.build:gradle:2.2.3'
    }
}

ext.multiarch=false

dependencies {
    compile fileTree(dir: 'libs', include: '*.jar')
    for (subproject in getProjectList()) {
        compile project(subproject)
    }

    compile 'com.android.support:multidex:1.0.1'
}

android {
    sourceSets {
        main {
            manifest.srcFile 'AndroidManifest.xml'
            java.srcDirs = ['src']
            resources.srcDirs = ['src']
            aidl.srcDirs = ['src']
            renderscript.srcDirs = ['src']
            res.srcDirs = ['res']
            assets.srcDirs = ['assets']
        }

        useLibrary 'org.apache.http.legacy'
    }

    defaultConfig {
        versionCode Integer.parseInt("" + getVersionCodeFromManifest() + "0")

        //Enabling Multidex Support
        multiDexEnabled true

        compileSdkVersion 23

        buildToolsVersion "23.0.1"
    }



    if (multiarch || System.env.BUILD_MULTIPLE_APKS) {
        productFlavors {
            armv7 {
                versionCode defaultConfig.versionCode + 2
            ndk {
                    abiFilters "armeabi-v7a", ""
                }
            }
            x86 {
                versionCode defaultConfig.versionCode + 4
                ndk {
                    abiFilters "x86", ""
                }
            }
            all {
                ndk {
                    abiFilters "all", ""
                }
            } 
        }
    }

    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_7
        targetCompatibility JavaVersion.VERSION_1_7
    }

}

task wrapper(type: Wrapper) {
    gradleVersion = '1.12'
}

def getVersionCodeFromManifest() {
    def manifestFile = file(android.sourceSets.main.manifest.srcFile)
    def pattern = Pattern.compile("versionCode=\"(\\d+)\"")
    def matcher = pattern.matcher(manifestFile.getText())
    matcher.find()
    return Integer.parseInt(matcher.group(1))
}

def getProjectList() {
    def manifestFile = file("project.properties")
    def pattern = Pattern.compile("android.library.reference.(\\d+)\\s*=\\s*(.*)")
    def matcher = pattern.matcher(manifestFile.getText())
    def projects = []
    while (matcher.find()) {
      projects.add(":" + matcher.group(2).replace("/",":"))
    }
    return projects
}  

Here's my Android Manifest file -

<?xml version='1.0' encoding='utf-8'?>

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.ford.fordcomplince"

    android:hardwareAccelerated="true"
    android:versionCode="1"
    android:versionName="0.1.0">

    <!--
    xmlns:android="http://schemas.android.com/tools"
    xmlns:tools="http://schemas.android.com/apk/res-auto"> -->

    <supports-screens
        android:anyDensity="true"
        android:largeScreens="true"
        android:normalScreens="true"
        android:resizeable="true"
        android:smallScreens="true"
        android:xlargeScreens="true" />

    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission   android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />


    <application
        android:name="android.support.multidex.MultiDexApplication"
        android:hardwareAccelerated="true"
        android:icon="@drawable/iicon"
        android:label="@string/app_name">

        <activity
            android:name=".FordCompliance"
        android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale"
            android:label="@string/activity_name"
            android:launchMode="singleTop"
            android:theme="@android:style/Theme.Black.NoTitleBar"
            android:windowSoftInputMode="adjustResize">
        <intent-filter android:label="@string/launcher_name">
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

        <activity
            android:name=".EnableMultiDex">

        </activity>

    </application>


    <uses-sdk
        android:minSdkVersion="21"
        android:targetSdkVersion="23" />

</manifest>

I created a MultiDex.java file that extends MultiDexApplication

package com.ford.therightway;

/**
 * Created by SK on 2/20/2017.
 */

import android.support.multidex.MultiDexApplication;

public class EnableMultiDex extends MultiDexApplication{

}

Here's my error output -

$ adb shell am start -n "com.ford.fordcomplince/com.ford.fordcomplince.FordCompliance" -a android.intent.action.MAIN -c android.intent.category.LAUNCHER Connected to process 3449 on device emulator-5554 W/System: ClassLoader referenced unknown path: /data/app/com.ford.fordcomplince-1/lib/x86 I/InstantRun: Instant Run Runtime started. Android package is com.ford.fordcomplince, real application class is android.support.multidex.MultiDexApplication. W/System: ClassLoader referenced unknown path: /data/app/com.ford.fordcomplince-1/lib/x86 I/MultiDex: VM with version 2.1.0 has multidex support I/MultiDex: install I/MultiDex: VM has multidex support, MultiDex support library is disabled. D/AndroidRuntime: Shutting down VM E/AndroidRuntime: FATAL EXCEPTION: main Process: com.ford.fordcomplince, PID: 3449 java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.ford.fordcomplince/com.ford.fordcomplince.FordCompliance}: java.lang.ClassNotFoundException: Didn't find class "com.ford.fordcomplince.FordCompliance" on path: DexPathList[[zip file "/data/app/com.ford.fordcomplince-1/base.apk"],nativeLibraryDirectories=[/data/app/com.ford.fordcomplince-1/lib/x86, /vendor/lib, /system/lib]] at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2327) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476) at android.app.ActivityThread.-wrap11(ActivityThread.java) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:148) at android.app.ActivityThread.main(ActivityThread.java:5417) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) Caused by: java.lang.ClassNotFoundException: Didn't find class "com.ford.fordcomplince.FordCompliance" on path: DexPathList[[zip file "/data/app/com.ford.fordcomplince-1/base.apk"],nativeLibraryDirectories=[/data/app/com.ford.fordcomplince-1/lib/x86, /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.Instrumentation.newActivity(Instrumentation.java:1067) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2317) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476)  at android.app.ActivityThread.-wrap11(ActivityThread.java)  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344)  at android.os.Handler.dispatchMessage(Handler.java:102)  at android.os.Looper.loop(Looper.java:148)  at android.app.ActivityThread.main(ActivityThread.java:5417)  at java.lang.reflect.Method.invoke(Native Method)  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)  Suppressed: java.lang.ClassNotFoundException: Didn't find class "com.ford.fordcomplince.FordCompliance" on path: DexPathList[[dex file "/data/data/com.ford.fordcomplince/files/instant-run/dex/slice-slice_9-classes.dex", dex file "/data/data/com.ford.fordcomplince/files/instant-run/dex/slice-slice_8-classes.dex", dex file "/data/data/com.ford.fordcomplince/files/instant-run/dex/slice-slice_7-classes.dex", dex file "/data/data/com.ford.fordcomplince/files/instant-run/dex/slice-slice_6-classes.dex", dex file "/data/data/com.ford.fordcomplince/files/instant-run/dex/slice-slice_5-classes.dex", dex file "/data/data/com.ford.fordcomplince/files/instant-run/dex/slice-slice_4-classes.dex", dex file "/data/data/com.ford.fordcomplince/files/instant-run/dex/slice-slice_3-classes.dex", dex file "/data/data/com.ford.fordcomplince/files/instant-run/dex/slice-slice_2-classes.dex", dex file "/data/data/com.ford.fordcomplince/files/instant-run/dex/slice-slice_1-classes.dex", dex file "/data/data/com.ford.fordcomplince/files/instant-run/dex/slice-slice_0-classes.dex", dex file "/data/data/com.ford.fordcomplince/files/instant-run/dex/slice-com.android.support-multidex-1.0.1_363eddd5c2a30ea4be2abc16117d383bb67b8a0f-classes.dex"],nativeLibraryDirectories=[/data/app/com.ford.fordcomplince-1/lib/x86, /vendor/lib, /system/lib]] at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56) at com.android.tools.fd.runtime.IncrementalClassLoader$DelegateClassLoader.findClass(IncrementalClassLoader.java:90) at com.android.tools.fd.runtime.IncrementalClassLoader.findClass(IncrementalClassLoader.java:62) at java.lang.ClassLoader.loadClass(ClassLoader.java:511) at java.lang.ClassLoader.loadClass(ClassLoader.java:504) ... 12 more Suppressed: java.lang.ClassNotFoundException: com.ford.fordcomplince.FordCompliance at java.lang.Class.classForName(Native Method) at java.lang.BootClassLoader.findClass(ClassLoader.java:781) at java.lang.BootClassLoader.loadClass(ClassLoader.java:841) at java.lang.ClassLoader.loadClass(ClassLoader.java:504) ... 13 more Caused by: java.lang.NoClassDefFoundError: Class not found using the boot class loader; no stack trace available I/Process: Sending signal. PID: 3449 SIG: 9 Application terminated.

1

1 Answers

0
votes

you can disable android studio instant run feature to see if error still appear.instant run may cause strange issue