赞
踩
今天给公司的一个SDK打包成jar,结果在demo工程里打包生成的jar完全没问题,结果在项目结构中打包就一直有bug,头几个gradle中引用冲突还比较容易解决。后面一个makeJar生成的jar包里一直无法找到class文件,如下:
感觉特别奇怪,网上也没什么可靠的信息。后来排查发现sdk是从另一个开发手里接过来的gradle下配置markJar如下:
- task makeJar(type:org.gradle.api.tasks.bundling.Jar, dependsOn: "build") {
- //指定生成的jar名
- baseName 'test.jar'
- //从哪里打包class文件
- from(['build/intermediates/classes/debug/'])
- //去掉不需要打包的目录和文件
- exclude('android/','androidx/','cn/ab/cd/BuildConfig.class', 'cn/ab/cd/R.class')
- //去掉R$开头的文件
- exclude{ it.name.startsWith('R$');}
- }
而导入到我的项目中也是使用的这个makeJar配置,通过路径寻找发现拷贝之前有classes文件:
导入工程之后没了,汗:
这就很蛋疼了,啥原因引起的还不清楚,估计跟as或者gradle版本有关,既然没有classes,肯定class文件在某个文件夹中,挨个找终于找到了:
替换from(['build/intermediates/classes/debug/'])新的路径from(['build/intermediates/javac/release/compileReleaseJavaWithJavac/classes/'])打包成功。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。