标签: aar

使用.aar NoClassDefFoundError但是Class Exists并且是Dexed

我有几个项目,我建立了一个.aar.然后我将这个.aar导入到/ libs下的Android Studio中.此依赖项的build.gradle文件如下所示:

repositories{
    flatDir{
        dirs 'libs'
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:22.0.0'
    compile 'com.google.android.gms:play-services:7.0.0'
    compile 'com.android.support:multidex:+'
    compile(name: 'customApi-debug', ext:'aar')
}
Run Code Online (Sandbox Code Playgroud)

由于库非常大,我设置了multiDexEnabled = true.Android Studio查找库和自动填充功能.构建工作正常,但运行应用程序会出现以下错误:

java.lang.NoClassDefFoundError: com.companyx.android.api.ui.vision.metaio.MetaIoView
            at com.companyx.android.api.ui.vision.metaio.MetaIoView$$InjectAdapter.<init>(MetaIoView$$InjectAdapter.java:29)
Run Code Online (Sandbox Code Playgroud)

我分别对.aar和dex文件进行了解压缩和反汇编,并验证了它所抱怨的类实际存在.我已经尝试过处理这个问题的现有方法,但没有一个能够工作.

有人经历过这个吗?提前致谢.

android dex android-studio android-gradle-plugin aar

10
推荐指数
1
解决办法
7019
查看次数

如何将依赖项包含到.aar库中?

我正在使用Android Studio 1.4

我的项目中有一个模块,它在build.gradle中有下一个依赖项:

dependencies {
    provided fileTree(dir: 'libs', include: ['*.jar'])
    provided 'junit:junit:4.12'
    apply plugin: 'com.google.gms.google-services'
    provided 'org.apache.directory.studio:org.apache.commons.io:2.4'
    provided 'com.google.android.gms:play-services:8.1.0'
    provided 'com.fasterxml.jackson.core:jackson-databind:2.2.0'
    provided 'com.fasterxml.jackson.core:jackson-core:2.2.0'
    provided 'com.fasterxml.jackson.core:jackson-annotations:2.2.0'
}
Run Code Online (Sandbox Code Playgroud)

在构建projectn并同步gradle后,我在我的module/build/ouputs/aar文件夹中获取了lib-release.aar.比我尝试文件>新模块>导入JAR\AAR它.然后,添加后

compile project(':mylib-release')
Run Code Online (Sandbox Code Playgroud)

我在"外部库"树中只获得了没有声明依赖关系的包.如何通过仅填写我的库来启用这些软件包的自动安装?

android gradle android-gradle-plugin aar

10
推荐指数
1
解决办法
5948
查看次数

如何发布另一个Android库项目依赖的AAR?

这是我的开发项目结构:

projectFolder
  |
  +--App
  |
  +--MyLib
  |
  +--Libraries
      |
      +--LibA

MyLib依赖于LibA,我将MyLib打包为AAR并将其发布到Maven 仓库,但当我将MyLib作为远程aar依赖项包含在另一个项目(TestProj)中时,我得到了构建错误(无法解析LibA的依赖关系,LibA不包含在MyLib的发布中),这是TestProj的 app文件夹中的build.gradel :

dependencies {
  compile fileTree(dir: 'libs', include: ['*.jar'])
  compile ('xxx.xxxxxx:yyyyy:1.0-SNAPSHOT@aar'){
      transitive = true
  }
}
Run Code Online (Sandbox Code Playgroud)

这是MyLib的build.gradle :

dependencies {
  compile fileTree(dir: 'libs', include: ['*.jar'])
  compile project(':Libraries:LibA')
}
Run Code Online (Sandbox Code Playgroud)

我如何能释放MyLib中力霸已经打包在AAR?

android gradle maven aar

9
推荐指数
1
解决办法
4725
查看次数

如何使用Gradle将aar文件发布到Apache Archiva

我试图将生成的我的android库的aar文件发布到我的Apache Archiva Maven服务器,但我还没设法让它工作,因为这些示例都已过时或者它们是针对java而不是针对android

在注意到gradle示例的大多数方法都已弃用之后,我发现了这个新文档:

Gradle文档

其中介绍了如何使用新的API,似乎将uploadArchives替换为发布等等....

所以这就是我到目前为止所得到的:

apply plugin: 'com.android.library'
apply plugin: 'maven'
apply plugin: 'maven-publish'
android {
compileSdkVersion 21
buildToolsVersion "21.1.2"


defaultConfig {
    applicationId "com.mycompany.mylibrary"
    minSdkVersion 9
    targetSdkVersion 21
    versionCode 1
    versionName "1.0"
}
buildTypes {
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
}
lintOptions {
    abortOnError false
}

}


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

task sourceJar(type: Jar) {
    from sourceSets.main.allJava
} …
Run Code Online (Sandbox Code Playgroud)

android archiva gradle android-studio aar

9
推荐指数
1
解决办法
3338
查看次数

如何从android studio创建一个jar文件

我有一个相当最新版本的android studio,我在一个项目下创建了一个模块,基本上应该是一个库,当我构建它时,它会创建一个".aar"文件,我想要的是.jar文件,因为这个库也应该与eclipse一起使用.

该库还包含活动,有没有什么方法可以创建一个.jar文件,我可以在Eclipse和Android Studio上使用它?

我已经创建了这个模块并尝试构建,因此它生成了.aar文件,而不是.jar文件.

java android jar aar

9
推荐指数
2
解决办法
8913
查看次数

Android.mk中的aar支持

我现在正在做android自定义ROM开发.aosp的构建系统基于Android.mk,但我想包含一些aar库,是否有可能在Android.mk中包含aar库?

android android-build android.mk aar

9
推荐指数
2
解决办法
8898
查看次数

使用aar库时的依赖性错误

我在libs文件夹中有一个带有.aar文件的模块.我使用此处发布的解决方案[1]:http: //kevinpelgrims.com/blog/2014/05/18/reference-a-local-aar-in-your-android-project/将.aar文件添加为依赖项并能够正确编译模块.

现在我想将此模块用作项目中主模块的依赖项并进行编译.但是,当我尝试编译时,我确实看到一个错误,表示gradle无法找到特定的.aar文件.为什么我的主模块找不到我子模块的libs文件夹中的文件.想知道是否有人遇到过这个问题.

我的项目结构是这样的

--mainmodule
  --build.gradle (submodule as a dependency)
--submodule
   --libs
      -- abc.aar
Run Code Online (Sandbox Code Playgroud)

这是错误gradle抛出: When unzipping library ':abc:, either group, name or version is empty

android gradle android-studio aar

9
推荐指数
1
解决办法
2845
查看次数

如何使用Android aar文件构建Flutter项目?

我想使用Flutter创建一个Android应用程序,该应用程序依赖于包含在aar文件中的第三方SDK .到目前为止,我只在Flutter中找到了文章访问平台和第三方服务.看来我必须使用Android Studio使用其他Java文件构建Flutter项目.这很复杂,不是我想要的.有没有办法在Dart代码中直接加载aar文件或*.so文件?像JNI的工作原理.

android shared-libraries dart aar flutter

9
推荐指数
1
解决办法
2791
查看次数

如何动态地从Gradle中排除文件?

我有android library(aar)包含(并在构建模块时构建)本机代码:

apply plugin: 'com.android.library'

android {
  compileSdkVersion 16
  buildToolsVersion "25.0.0"

  defaultConfig {
    minSdkVersion 11
    targetSdkVersion 16
    versionCode 1
    versionName "1.0"

    ndk {
      abiFilters 'armeabi-v7a'
    }
  }

  externalNativeBuild {
    ndkBuild {
      path 'jni/Android.mk'
    }
  }

  sourceSets {
    main {
      manifest.srcFile 'AndroidManifest.xml'
      java.srcDirs = ['src']
      res.srcDirs = ['res']
      jni.srcDirs = ['jni']
    }
  }

  packagingOptions {
    exclude '/lib/armeabi-v7a/libv8.cr.so'
    exclude '/lib/armeabi-v7a/libv8_libbase.cr.so'
     // TODO : generate dynamically from `SHARED_V8_LIB_FILENAMES`
  }
}
Run Code Online (Sandbox Code Playgroud)

我修改了Android.mk文件,使其具有依赖于SHARED_V8_LIB_FILENAMES环境变量的不同配置:

...
# Report configuration
ifeq ($(SHARED_V8_LIB_FILENAMES),) …
Run Code Online (Sandbox Code Playgroud)

android gradle android-library aar

9
推荐指数
1
解决办法
1564
查看次数

在运行时验证 android 库的 (aar) 签名

我正在开发一个 Android 库,我将把它分发给我的业务合作伙伴。我已经用我的密钥库对其进行了签名,并且我想在运行时验证签名以查看我的库是否是使用不同的签名重新编译的。但是验证签名的正常方式

PackageManager pm = ctx.getPackageManager();
(PackageInfo packageInfo = pm.getPackageInfo(ctx.getPackageName(), 
PackageManager.GET_SIGNATURES);)
Run Code Online (Sandbox Code Playgroud)

如果 APK 不工作,因为它只返回应用程序的签名,而不是我为我的库签名的签名。有没有办法做到这一点?

android signing aar

9
推荐指数
0
解决办法
200
查看次数