在 Android Studio 中将 Evernote 库作为模块添加后,解组时会得到 "Class not found"

Adding Evernote library as a module in Android Studio gives "Class not found" when unmarshalling

我是 Android Studio 的新手。我正在开发一个应用程序,我想在其中将文档上传到 Evernote。我正在使用 Evernote SDK。

我按照 Evernote 给出的说明从 Evernote 站点下载了 Evernote Android SDK 和示例应用程序。我通过 Android Studio 构建了示例应用程序和 运行 然后它将正常工作,但是当我将库作为模块添加到我的项目中并进行构建时,它是成功的。

当我 运行ning 意味着显示以下错误:

05-28 18:47:04.614: E/Parcel(968): Class not found when unmarshalling: com.evernote.client.android.EvernoteSession$EvernoteService
05-28 18:47:04.614: E/Parcel(968): java.lang.ClassNotFoundException: com.evernote.client.android.EvernoteSession$EvernoteService
05-28 18:47:04.614: E/Parcel(968):  at java.lang.Class.classForName(Native Method)
05-28 18:47:04.614: E/Parcel(968):  at java.lang.Class.forName(Class.java:251)
05-28 18:47:04.614: E/Parcel(968):  at java.lang.Class.forName(Class.java:216)
05-28 18:47:04.614: E/Parcel(968):  at android.os.Parcel.readParcelableCreator(Parcel.java:2133)
05-28 18:47:04.614: E/Parcel(968):  at android.os.Parcel.readParcelable(Parcel.java:2097)
05-28 18:47:04.614: E/Parcel(968):  at android.os.Parcel.readValue(Parcel.java:2013)
05-28 18:47:04.614: E/Parcel(968):  at android.os.Parcel.readArrayMapInternal(Parcel.java:2314)
05-28 18:47:04.614: E/Parcel(968):  at android.os.Bundle.unparcel(Bundle.java:249)
05-28 18:47:04.614: E/Parcel(968):  at android.os.Bundle.getString(Bundle.java:1118)
05-28 18:47:04.614: E/Parcel(968):  at android.content.Intent.getStringExtra(Intent.java:5285)
05-28 18:47:04.614: E/Parcel(968):  at com.android.server.am.ActivityStackSupervisor.startActivityLocked(ActivityStackSupervisor.java:1586)
05-28 18:47:04.614: E/Parcel(968):  at com.android.server.am.ActivityStackSupervisor.startActivityMayWait(ActivityStackSupervisor.java:1167)
05-28 18:47:04.614: E/Parcel(968):  at com.android.server.am.ActivityManagerService.startActivityAsUser(ActivityManagerService.java:4496)
05-28 18:47:04.614: E/Parcel(968):  at com.android.server.am.ActivityManagerService.startActivity(ActivityManagerService.java:4378)
05-28 18:47:04.614: E/Parcel(968):  at android.app.ActivityManagerNative.onTransact(ActivityManagerNative.java:161)
05-28 18:47:04.614: E/Parcel(968):  at com.android.server.am.ActivityManagerService.onTransact(ActivityManagerService.java:3002)
05-28 18:47:04.614: E/Parcel(968):  at android.os.Binder.execTransact(Binder.java:404)
05-28 18:47:04.614: E/Parcel(968):  at dalvik.system.NativeStart.run(Native Method)
05-28 18:47:04.614: E/Parcel(968): Caused by: java.lang.NoClassDefFoundError: com/evernote/client/android/EvernoteSession$EvernoteService
05-28 18:47:04.614: E/Parcel(968):  ... 18 more
05-28 18:47:04.614: E/Parcel(968): Caused by: java.lang.ClassNotFoundException: Didn't find class "com.evernote.client.android.EvernoteSession$EvernoteService" on path: DexPathList[[directory "."],nativeLibraryDirectories=[/vendor/lib, /system/lib]]
05-28 18:47:04.614: E/Parcel(968):  at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
05-28 18:47:04.614: E/Parcel(968):  at java.lang.ClassLoader.loadClass(ClassLoader.java:497)
05-28 18:47:04.614: E/Parcel(968):  at java.lang.ClassLoader.loadClass(ClassLoader.java:457)
05-28 18:47:04.614: E/Parcel(968):  ... 18 more

我根据以下几点将库集成到我的项目中。

Include the Android Library Project in your Intellij workspace

  1. Right click your project and choose Open Module Properties
  2. Select the Plus Icon (Add) at the top and choose Import Module
  3. Select the library directory and click OK
  4. Click Next, Next, Next, Next
  5. Click Finish
  6. Click your project and select teh Dependencies tab
  7. Click the Plus Icon (Add) at the bottom and select 3 Module Dependency
  8. Select library and click OK

以下是 gradle 个文件:

Build.gradle 文件库 project:inside 文件夹库 应用插件:'com.android.library'

android {
    compileSdkVersion 17
    buildToolsVersion "19.1.0"

    defaultConfig {
        minSdkVersion 5
        targetSdkVersion 16
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
        }
    }
}

dependencies {
    compile files('libs/evernote-api-1.25.jar')
    compile files('libs/scribe-1.3.1.jar')
}

build.gradle 我的项目:那是我的项目模块 应用插件:'com.android.application'

android {
    compileSdkVersion 21
    buildToolsVersion "22.0.0"

    defaultConfig {
        applicationId "com.xerox.xeroxmobilelink.clouddemo"
        minSdkVersion 16
        targetSdkVersion 21
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
        }
    }
}

dependencies {
    compile project(':library')
    compile project(':accountsManager')
    compile project(':cloudAccountsLogin')
    compile project(':cloudFolderChooser')
    compile project(':cloudDocumentUploader')
    compile 'com.android.support:support-v4:21.0.3'
    compile 'com.android.support:appcompat-v7:21.0.3'
}

您没有从 Maven Central 引用库。请注意最近更新了说明:https://github.com/evernote/evernote-sdk-android

我在我的模块清单文件中添加了 activity 库,然后它就可以工作了。 以下是 tag

内 manifest 文件中的语句
<activity
        android:name="com.evernote.client.android.EvernoteOAuthActivity"
        android:configChanges="orientation|keyboardHidden"/>