Android 工作室 aar 文件错误 class 未找到
Android studio aar file error class not found
当我尝试在其他项目中使用导出的 android 库项目(aar 格式)时。我收到以下错误。
> "Could not find class 'com.manish.core.helper.RegistrationHelper'"
> "Could not find class 'com.manish.core.helper.RegistrationHelper'"
> "Could not find class 'com.manish.core.helper.RegistrationHelper'"
> "Could not find class 'com.manish.core.helper.RegistrationHelper'"
aar 文件中有一个文件"classes.jar",其中包含所有class 个文件,但我不明白错误的原因。
我正在使用 android studio 在构建目录中生成的 aar 文件。
我还在 gradle 文件中添加了 apply plugin: 'com.android.library'
。
所有这些错误仅针对匿名和静态 class。
我的 gradle 文件:
apply plugin: 'com.manish.application'
android {
compileSdkVersion 22
buildToolsVersion "23.0.0"
defaultConfig {
applicationId "com.manish.test"
minSdkVersion 10
targetSdkVersion 22
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
repositories {
mavenCentral()
}
dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
compile 'com.android.support:appcompat-v7:22.2.0'
compile 'junit:junit:4.12'
compile(name:'somerandomlibrary-debug', ext:'aar')
}
repositories{
flatDir{
dirs 'libs'
}
}
要使用 aar 文件,您必须在 build.gradle
内部使用类似这样的东西:
repositories{
flatDir{
dirs 'libs'
}
}
这样就可以使用libs文件夹下的aar文件了。
然后你必须添加依赖使用:
dependencies {
compile(name:'nameOfYourAARFileWithoutExtension', ext:'aar')
}
问题是,aar 文件 不包含嵌套依赖项,也没有 POM 文件描述库使用的依赖项。
如果您使用 flatDir 存储库导入 aar 文件,您还必须在项目中指定依赖项。您应该使用 maven 存储库!例如:
一个更简单的解决方案是,将其添加到 "aar"-project 中的 build.gradle 的以下行中:
task createPom {
apply plugin: 'maven'
description "Generates pom.xml"
pom {
project {
groupId 'com.example'
artifactId 'example'
version '0.0.1-SNAPSHOT'
packaging 'aar'
}
}.withXml {
def dependenciesNode = asNode().appendNode('dependencies')
configurations.compile.allDependencies.each { dependency ->
def dependencyNode = dependenciesNode.appendNode('dependency')
dependencyNode.appendNode('groupId', dependency.group)
dependencyNode.appendNode('artifactId', dependency.name)
dependencyNode.appendNode('version', dependency.version)
}
}.writeTo("$buildDir/pom.xml")
}
您可以在基于 aar 的应用程序中使用生成的 POM 文件进行依赖项注入。
这不是一个好的做法,但如果你真的需要它,你可以使用 nested dependencies
,像这样
depenencies {
...
compile (name:'somerandomlibrary-debug', ext:'aar') {
dependencies {
compile 'com.some:dependency:9.1.1'
...
}
}
}
当我尝试在其他项目中使用导出的 android 库项目(aar 格式)时。我收到以下错误。
> "Could not find class 'com.manish.core.helper.RegistrationHelper'"
> "Could not find class 'com.manish.core.helper.RegistrationHelper'"
> "Could not find class 'com.manish.core.helper.RegistrationHelper'"
> "Could not find class 'com.manish.core.helper.RegistrationHelper'"
aar 文件中有一个文件"classes.jar",其中包含所有class 个文件,但我不明白错误的原因。
我正在使用 android studio 在构建目录中生成的 aar 文件。
我还在 gradle 文件中添加了 apply plugin: 'com.android.library'
。
所有这些错误仅针对匿名和静态 class。
我的 gradle 文件:
apply plugin: 'com.manish.application'
android {
compileSdkVersion 22
buildToolsVersion "23.0.0"
defaultConfig {
applicationId "com.manish.test"
minSdkVersion 10
targetSdkVersion 22
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
repositories {
mavenCentral()
}
dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
compile 'com.android.support:appcompat-v7:22.2.0'
compile 'junit:junit:4.12'
compile(name:'somerandomlibrary-debug', ext:'aar')
}
repositories{
flatDir{
dirs 'libs'
}
}
要使用 aar 文件,您必须在 build.gradle
内部使用类似这样的东西:
repositories{
flatDir{
dirs 'libs'
}
}
这样就可以使用libs文件夹下的aar文件了。
然后你必须添加依赖使用:
dependencies {
compile(name:'nameOfYourAARFileWithoutExtension', ext:'aar')
}
问题是,aar 文件 不包含嵌套依赖项,也没有 POM 文件描述库使用的依赖项。
如果您使用 flatDir 存储库导入 aar 文件,您还必须在项目中指定依赖项。您应该使用 maven 存储库!例如:
一个更简单的解决方案是,将其添加到 "aar"-project 中的 build.gradle 的以下行中:
task createPom {
apply plugin: 'maven'
description "Generates pom.xml"
pom {
project {
groupId 'com.example'
artifactId 'example'
version '0.0.1-SNAPSHOT'
packaging 'aar'
}
}.withXml {
def dependenciesNode = asNode().appendNode('dependencies')
configurations.compile.allDependencies.each { dependency ->
def dependencyNode = dependenciesNode.appendNode('dependency')
dependencyNode.appendNode('groupId', dependency.group)
dependencyNode.appendNode('artifactId', dependency.name)
dependencyNode.appendNode('version', dependency.version)
}
}.writeTo("$buildDir/pom.xml")
}
您可以在基于 aar 的应用程序中使用生成的 POM 文件进行依赖项注入。
这不是一个好的做法,但如果你真的需要它,你可以使用 nested dependencies
,像这样
depenencies {
...
compile (name:'somerandomlibrary-debug', ext:'aar') {
dependencies {
compile 'com.some:dependency:9.1.1'
...
}
}
}