android studio下导出jar(java.lang.IllegalAccessError: Class ref in pre-verified class resolved to unex)
来源:互联网 发布:linux yum命令找不到 编辑:程序博客网 时间:2024/06/06 12:15
eclipse导出jar很简单,可以选择某个文件或者所有文件导出jar包。
android studio就比较尴尬了,需要在相应库工程module的build.gradle中配置gradle脚本。
1. 配置gradle环境变量
如果windows命令下执行gradle -v
时提示’gradle’ 不是内部或外部命令,也不是可运行的程序
或批处理文件。那么就表示你没有配置过gradle环境变量。
首先找到你的gradle在哪里?可以在android studio安装目录:
也可以在as下载gradle的目录:
或者,你下载个gradle,然后解压下。
接着就是创建gradle环境变量啦,变量名“GRADLE_HOME”,变量值就是上面的gradle目录的路径。
将此路径加入到Path变量中
再试下gradle -v
命令,安装OK
2. as下所有类导出jar
这里我建了一个library简单工程,只有两个类:接口类和实现类。
。
如果我把整个工程的所有类导出jar的话,只需要在module的build.gradle下配置配置下gradle脚本
箭头所指就是需要修改的文件,红框内就是添加的脚本,每行的注释也很清楚。
task clearJar(type: Delete) { delete 'libs/sdk.jar'}task makeJar(type:org.gradle.api.tasks.bundling.Jar) { //指定生成的jar名 baseName 'sdk' //从哪里打包class文件 from('build/intermediates/classes/debug/fota/adups/myapplication/') //打包到jar后的目录结构 into('fota/adups/myapplication/') //去掉不需要打包的目录和文件 //exclude('test/', 'BuildConfig.class', 'R.class','ILoader.class') //去掉R$开头的文件 exclude{ it.name.startsWith('R$');}}makeJar.dependsOn(clearJar, build)
class文件路径from('build/intermediates/classes/debug/fota/adups/myapplication/')
,这个路径其实就是下面的路径
jar包路径into('fota/adups/myapplication/')
是为了兼容后面的类对应关系的,如果我写成into('build/gaga/')
呢,那打出jar的目录结构是这样的
细心的应该看到了,这里的路径会决定后面生成的jar里面的包名,所以为了兼容后续使用,就把路径写成包名了。否则在使用dx --dex --output=test.jar dynamic.jar
命令转化dex时会出现不兼容错误:
class name (fota/adups/myapplication/BuildConfig) does not match path (build/gaga/BuildConfig.class)
搞成这样就不会报错啦,不信你看
3. as下指定某个或某几个类导出jar
按照上面的包名做路径把所有类导出为jar,dex转换也成功了,但是实际使用时出问题了,直接把宿主搞挂了java.lang.IllegalAccessError: Class ref in pre-verified class resolved to unexpected implementation
网上提示说jar不需要带上接口文件,那就去掉吧,只留下JarLoader.class得了。
加上这句过滤就完美了
//去掉不需要打包的目录和文件 exclude('test/', 'BuildConfig.class', 'R.class','ILoader.class')
只剩下实现类了,妈妈再也不怕类冲突了。
- android studio下导出jar(java.lang.IllegalAccessError: Class ref in pre-verified class resolved to unex)
- android开发问题:java.lang.IllegalAccessError: Class ref in pre-verified class resolved to unexpected imp
- java.lang.IllegalAccessError: Class ref in pre-verified class resolved to unexpected implementation
- java.lang.IllegalAccessError: Class ref in pre-verified class resolved to unexpected implementatio
- java.lang.IllegalAccessError: Class ref in pre-verified class resolved to unexpected implementation
- java.lang.IllegalAccessError: Class ref in pre-verified class resolved to unexpected implementation
- Android XPosed框架 hook 中的IllegalAccessError: Class ref in pre-verified class resolved to unexpected
- Data Binding & Espresso: IllegalAccessError: Class ref in pre-verified class resolved to unexpected
- Class ref in pre-verified class resolved to unexpected implementation
- 关于 java.lang.IllegaAccessError:Class ref in pre-verified class resoved to unexpected implementation
- java.lang.IllegaAccessError:Class ref in pre-verified class resoved to unexpected implementation
- AndroidRuntime: java.lang.IllegalAccessError: tried to access class android.content.res.StringBlock
- java.sql.SQLException: java.lang.IllegalAccessError: class sun.reflect.GeneratedConstructorAccessor2
- java.lang.IllegalAccessError: class com.google.protobuf.HBaseZeroCopyByteString
- java.lang.IllegalAccessError: class com.google.protobuf.HBaseZeroCopyByteString
- java.lang.IllegalAccessError: class com.google.protobuf.HBaseZeroCopyByteString
- nested exception is java.lang.IllegalAccessError: tried to access method net.sf.ehcache.CacheManager.()V from class org.hibernat
- java.lang.IllegalAccessError: tried to access field org.slf4j.impl.StaticLoggerBinder.SINGLETON from class org.slf4j.LoggerFacto
- U函数在前台链接中的使用格式
- android clipChildren属性用法介绍
- Android 平台 Binder 机制 简介
- sql server 2008分布式查询
- 7天学会Spring Cloud
- android studio下导出jar(java.lang.IllegalAccessError: Class ref in pre-verified class resolved to unex)
- SSM多数据源和动态数据源切换
- bootargs 之 mtdparts
- MFC中的DC,CDC和HDC
- nginx 动态增加/删除upstream及upstream下的server ip
- tomcat7+redis(单个) session共享
- Ubuntu16.04 x64服务器安装配置OpenVPN教程
- jsonp,用ajax和php实现跨域
- MongoDB 副本集