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.