在AAR文件java.lang.NoClassDefFoundError中找不到活动类
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了在AAR文件java.lang.NoClassDefFoundError中找不到活动类,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3790字,纯文字阅读大概需要6分钟。
内容图文
![在AAR文件java.lang.NoClassDefFoundError中找不到活动类](/upload/InfoBanner/zyjiaocheng/695/b3951379b38a482dadec051b526e3f5b.jpg)
我创建了一个android库,其中包含用于打开相机意图的Activity类,该库工作正常,除了调用Activity出现在屏幕上的部分外,该应用程序因抛出以下错误而崩溃
Suppressed: java.lang.ClassNotFoundException: com.me.scanner.ScannerViewActivity
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)
... 14 more
Caused by: java.lang.NoClassDefFoundError: Class not found using the boot class loader; no stack trace available
以下是我将使用该库的其他项目的build.gradle文件
repositories {
flatDir {
dirs 'libs'
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
exclude group: 'com.android.support', module: 'support-annotations'
})
compile 'com.android.support:appcompat-v7:25.3.0'
compile 'com.android.support.constraint:constraint-layout:1.0.2'
compile 'com.me.app:gpio_lib@aar'
compile ('com.me.app:scanner@aar'){ transitive = true; }
testCompile 'junit:junit:4.12'
}
请注意:
>该库可以完美地用作模块项目,
compile project(':scannercontrol')
但是在项目中用作aar时不可以
>我尝试了有无{传递=真; }, 没变
>我已将我的AAR文件重命名为scan.aar
>我采用了aar文件格式/[library-project]/build/outputs/aar/scanner-release.aar
更新1-2017-09-14
活动ScannerViewActivity是我的库的一部分,这是从一个库类中调用它的方式
Intent scannerView = new Intent();
scannerView.putExtra(MESSAGE_RECEIVER, new MessageReceiver());
scannerView.setClass(context, ScannerViewActivity.class);
scannerView.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(scannerView);
此上下文是android.app.Application的实例,而不是任何Activity的实例
更新2-2017-09-14
幸运的是,在google上漫游了2天后,我遇到了问题Class not found in aar的答案.我已经将库的依赖项添加到了项目中,并能够通过aar运行它,但这不是我的问题的解决方案,
以下是我目前面临的流程和问题
>我正在开发与特定条形码扫描器硬件通信的库的沙箱版本,因为开发人员不一定具有硬件,他们将使用库的沙箱版本,从而允许开发人员将其设备摄像头用作条形码扫描器,
>我们希望开发人员从提供的SDK中提取AAR文件scanner.aar和scanner-sandbox.aar并使用其中任何一个
>如果开发人员要运行库的沙盒版本,我们不希望开发人员对其.gradle文件添加额外的依赖关系,
>以下是用于将设备相机模拟为条形码扫描仪的依赖项
compile 'me.dm7.barcodescanner:zxing:1.9.8'
更新的问题是
在开发人员同步.gradle文件时,不将aar文件发布到任何存储库(如maven存储库)以及已安装库的所有依赖项而分发它们的可能方法是什么?
解决方法:
zeeshan
我遇到了同样的问题,我做了很多研究和研究.我希望它能对您有所帮助
Creating .aar file for a project:
- For a library module, .aar file is automatically created by Android Studio. For a project with the any resource file or with the
libraries, .aar file can be generated as mentioned in next steps.- Check the plugin. It should be in as follows, change to library if it is in application, apply plugin: ‘com.android.library’
- Open the open right border gradle bar and go to “your project”->Tasks->build and then double click on the assembleRelease.
On Building the project, You will find the two .aar
files(app-debug.aar and app-release.aar) inside app/build/outputs/aar/
directory. Using .aar file in your project:Get the “app-release.aar” file and paste it in the libs folder of your project. If libs folder is not present, create a directory named
“libs” inside app directory.Add the following to the app gradle file, repositories {
flatDir {
dirs ‘libs’
} } dependencies {
compile(name:’app-release’, ext:’aar’) }- On sync, your project is ready to use the library files. Note : .aar gradle dependencies has to be added manually in your project app
gradle
Example:below
错误的假设:System.err:java.lang.NoClassDefFoundError:
解:
.aar gradle dependencies has to be added manually in your project app
gradle
内容总结
以上是互联网集市为您收集整理的在AAR文件java.lang.NoClassDefFoundError中找不到活动类全部内容,希望文章能够帮你解决在AAR文件java.lang.NoClassDefFoundError中找不到活动类所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。