【问题标题】:Can't build for Android with error "Failed resolution of R$color" after build JAR构建 JAR 后无法为 Android 构建错误“R$color 解析失败”
【发布时间】:2019-05-27 12:30:47
【问题描述】:

当我使用实现 project(path: ':rocket_library') 运行项目时,资源(例如:R.color.color_rocket_web)文件工作正常。但是在构建 JAR 文件并包含未找到项目资源的 JAR 之后。是否可以在 JAR 中附加资源文件?

从项目中找不到颜色:

库代码: 在运行时也没有从 Libray 中找到。

import infix.imrankst1221.rocket.library.R

fun getThemePrimaryColor(mContext : Context): Int {
    return PreferenceUtils.getInstance().getIntegerValue(Constants.KEY_COLOR_PRIMARY, ContextCompat.getColor(mContext, R.color.my_color))
}

运行时异常:

java.lang.NoClassDefFoundError: Failed resolution of: Linfix/imrankst1221/rocket/library/R$color;
            at infix.imrankst1221.rocket.library.utility.UtilMethods.getThemePrimaryColor(UtilMethods.kt:65)
            at infix.imrankst1221.codecanyon.ui.splash.SplashActivity.onCreate(SplashActivity.kt:30)
Caused by: java.lang.ClassNotFoundException: Didn't find class "infix.imrankst1221.rocket.library.R$color" on path: DexPathList[[zip file "/system/framework/org.apache.http.legacy.boot.jar", zip file "/data/app/infix.imrankst1221.rocket.web-_mlMdyx2A0UqLZig9zkW5Q==/base.apk"],nativeLibraryDirectories=[/data/app/infix.imrankst1221.rocket.web-_mlMdyx2A0UqLZig9zkW5Q==/lib/x86, /system/lib]]
            at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:125)
            at java.lang.ClassLoader.loadClass(ClassLoader.java:379)

库构建.Gradle:

apply plugin: 'com.android.library'
apply plugin: 'kotlin-android-extensions'
apply plugin: 'kotlin-android'

android {
    compileSdkVersion 28
    buildToolsVersion '28.0.3'

    defaultConfig {
        minSdkVersion 21
        targetSdkVersion 28
        versionCode 1
        versionName "1.0.0"

        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"

    }

    sourceSets {
        main {
            res.srcDirs = ['src/main/res']
        }
    }

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

}

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])

    implementation 'com.android.support:appcompat-v7:28.0.0'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.android.support.test:runner:1.0.2'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"

    implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
    implementation 'androidx.browser:browser:1.0.0'
    implementation 'com.google.android.material:material:1.1.0-alpha06'

    implementation 'com.google.code.gson:gson:2.8.5'

}
task createJar(type: Copy) {
    from('build/intermediates/packaged-classes/release/')
    into('libs/')
    include('classes.jar')
    rename('classes.jar', 'rocket_web.jar')
}

【问题讨论】:

  • 我找到了一个临时解决方案,JAR 文件不包含资源文件,但 AAR 文件可以。所以现在我正在使用 AAR 文件。

标签: java android gradle kotlin


【解决方案1】:

这一定是评论!! 我无权发表评论

你试过这些吗..?

  1. 清理项目并重建。(构建 -> 清理项目并重建)
  2. 使缓存无效并重新启动(文件 -> 使缓存无效/重新启动)

【讨论】:

  • 是的,我试试,即使我删除了所有的现金文件。另外,尝试创建一个新项目并导入 AAR,但还是一样。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-07-29
  • 1970-01-01
  • 1970-01-01
  • 2019-12-15
  • 2014-02-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多