我从GitHub下载了这段代码,看看我是否可以自定义它以适应我正在进行的项目 . 我希望是我的最后一期,但我完全坚持这个错误 . 我可以构建并运行应用程序,但它在启动时崩溃 .
我在这里遇到了很多类似的问题,我根据解决方案进行了更改,但它们似乎对我没有用 . 我是这里的新手,任何帮助将不胜感激 . 请...任何人 . :)
我正在使用Android Studio .
这是我的build.gradle文件 . 我启用了MultiDex并添加了对旧库的支持 . 这些都是其他解决方案中的建议 .
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
}
这是我的Android Manifest文件 -
<?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>
我创建了一个扩展MultiDexApplication的MultiDex.java文件
package com.ford.therightway;
/**
* Created by SK on 2/20/2017.
*/
import android.support.multidex.MultiDexApplication;
public class EnableMultiDex extends MultiDexApplication{
}
这是我的错误输出 -
$ adb shell am start -n“com.ford.fordcomplince / com.ford.fordcomplince.FordCompliance”-a android.intent.action.MAIN -c android.intent.category.LAUNCHER连接到设备模拟器-5554上的进程3449 W / System:ClassLoader引用未知路径:/data/app/com.ford.fordcomplince-1/lib/x86 I / InstantRun:Instant Run Runtime已启动 . Android包是com.ford.fordcomplince,真正的应用程序类是android.support.multidex.MultiDexApplication . W / System:ClassLoader引用未知路径:/data/app/com.ford.fordcomplince-1/lib/x86 I / MultiDex:版本2.1.0的VM具有multidex支持I / MultiDex:安装I / MultiDex:VM具有multidex支持,MultiDex支持库被禁用 . D / AndroidRuntime:关闭VM E / AndroidRuntime:FATAL EXCEPTION:main进程:com.ford.fordcomplince,PID:3449 java.lang.RuntimeException:无法实例化活动ComponentInfo {com.ford.fordcomplince / com.ford.fordcomplince . FordCompliance}:java.lang.ClassNotFoundException:在路径上找不到类“com.ford.fordcomplince.FordCompliance”:DexPathList [[zip file“/data/app/com.ford.fordcomplince-1/base.apk”] ,nativeLibraryDirectories = [/ data / app / com.ford.fordcomplince-1 / lib / x86,/ vendor / lib,/ system / lib]]在android的android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2327) . app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476)位于android.app.Handler的android.app.ActivityThread.-wrap11(ActivityThread.java)android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1344) . dispatchMessage(Handler.java:102)位于android.app.Looper.loop(Looper.java:148)的android.app.ActivityThread.main(ActivityThread.java:5417),位于java.lang.reflect.Method.invok e(Native Method)位于com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:726)的com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)引起:java . lang.ClassNotFoundException:在路径上找不到类“com.ford.fordcomplince.FordCompliance”:DexPathList [[zip file“/data/app/com.ford.fordcomplince-1/base.apk"],nativeLibraryDirectories=[/ java /lang.ClassLoader.loadClass上的dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)中的data / app / com.ford.fordcomplince-1 / lib / x86,/ vendor / lib,/ system / lib] (ClassLoader.java:511)在java.lang.ClassLoader.loadClass(ClassLoader.java:469)的android.app.Instrumentation.newActivity(Instrumentation.java:1067)android.app.ActivityThread.performLaunchActivity(ActivityThread.java: 2317)在android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476)android.app.ActivityThread.-wrap11(ActivityThread.java)android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1344)at android .os . Handler.dispatchMessage(Handler.java:102)位于android.app.Looper.loop(Looper.java:148)的android.app.ActivityThread.main(ActivityThread.java:5417),位于java.lang.reflect.Method.invoke (本地方法)com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:726)at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)抑制:java.lang . ClassNotFoundException:未在路径上找到类“com.ford.fordcomplince.FordCompliance”: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文件“/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]]位于com.android.tools.fd的dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56) . runtime.IncrementalClassLoader $ DelegateClassLoader.findClass(IncrementalClassLoader.java:90)at com.android.tools.fd.runtime.IncrementalClassLoader.findClass(IncrementalClassLoader.j) ava:62)java.lang.ClassLoader.loadClass(ClassLoader.java:511)java.lang.ClassLoader.loadClass(ClassLoader.java:504)... 12更多抑制:java.lang.ClassNotFoundException:com.ford java.lang上的java.lang.BootClassLoader.findClass(ClassLoader.java:781)中的java.lang.Class.classForName(Native Method)的.fordcomplince.FordCompliance,java.lang上的java.lang.BootClassLoader.loadClass(ClassLoader.java:841) .ClassLoader.loadClass(ClassLoader.java:504)... 13更多引起:java.lang.NoClassDefFoundError:使用引导类加载器找不到类;没有可用的堆栈跟踪I / Process:发送信号 . PID:3449 SIG:9申请终止 .
1 回答
你可以禁用android studio即时运行功能,看看是否仍然出现错误 . 运行可能会导致奇怪的问题