如何在Android Studio中创建JAR(获取R.String,R.Drawable)错误

时间:2016-03-14 05:19:51

标签: android

我正在使用Gradle中的以下方法从Android Studio中的项目创建JAR

apply plugin: 'com.android.library'

android {
    compileSdkVersion 23
    buildToolsVersion "23.0.1"
    useLibrary 'org.apache.http.legacy'
    defaultConfig {

        minSdkVersion 8
        targetSdkVersion 23

        ndk{
            abiFilters "armeabi", "armeabi-v7a", "x86", "mips"
        }



    }

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

    sourceSets.main {
        jniLibs.srcDir 'src/main/libs' //set libs as .so's location instead of jniLibs
        jni.srcDirs = [] //disable automatic ndk-build call with auto-generated Android.mk
    }

    lintOptions {
        abortOnError false
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:23.0.1'

}

//task to delete the old jar
task deleteOldJar(type: Delete){
    delete 'release/AndroidPlugin.jar'
}

//task to export contents as jar
task exportJar(type: Copy){
    from('build/intermediates/bundles/release/')
    into('release/')
    include('classes.jar')
    //Give whatever name you to give
    rename('classes.jar', 'Final.jar')
}

exportJar.dependsOn(deleteOldJar, build)

它成功创建了JAR。但是当我访问JAR时,它会给每个有引用的地方(R.String或R.drawable)带来错误

Caused by: java.lang.ClassNotFoundException: Didn't find class "com.abc.amor.engine.R$drawable" on path: DexPathList[[zip file "/data/app/com.mediainsiders.sampleapp-1/base.apk"],nativeLibraryDirectories=[/data/app/com.mediainsiders.sampleapp-1/lib/arm, /data/app/com.mediainsiders.sampleapp-1/base.apk!/lib/armeabi-v7a, /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 com.abc.amor.meters.openvpn.OpenVpnHelperService.createNotification(OpenVpnHelperService.java:1082) 
                                                                               at com.abc.amor.meters.openvpn.OpenVpnHelperService.onStartCommand(OpenVpnHelperService.java:332) 
                                                                               at android.app.ActivityThread.handleServiceArgs(ActivityThread.java:3010) 
                                                                               at android.app.ActivityThread.-wrap17(ActivityThread.java) 
                                                                               at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1442) 
                                                                               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: com.abc.amor.engine.R$drawable
                                                                               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)
                                                                                    ... 12 more
                                                                            Caused by: java.lang.NoClassDefFoundError: Class not found using the boot class loader; no stack trace available

我在创建JAR时遗漏了什么?

由于

0 个答案:

没有答案