【发布时间】: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