gradle遇到的问题(持续更新)

1.build过程中出现Error while executing java process with main class com.google.devtools.build.android.desugar.Desugar with arguments的问题

* What went wrong:
Execution failed for task ':app:transformClassesWithDesugarForXXXXXDebug'.
> com.android.build.api.transform.TransformException: java.lang.RuntimeException: java.lang.RuntimeException: com.android.ide.common.process.ProcessException: Error while executing java process with main class com.google.devtools.build.android.desugar.Desugar with arguments {--input XXXX\debug\44.jar --output 

解决方案:
(1)更换jdk
修改jdk这是网上普遍都推荐的解决方式,但我替换后还是有问题,可能是因为我替换的就是java8,至于原因可以看解决方式(2)

(2)更改配置
在gradle.properties添加配置
android.enableD8.desugaring=true
说明

对于使用Java 8语言功能的项目,默认情况下会启用增量式desugging,这可以缩短构建时间。
Desugaring将语法糖转换为编译器可以更高效地处理的形式。
您可以通过在项目的gradle.properties文件中指定以下内容来禁用增量式
android.enableD8.desugaring=true 在D8中进行的这个在线解耦应该会减少使用Java 8功能的项目的编译时间。

参考链接:https://blog.csdn.net/u012984054/article/details/85322000

2.AS 打包jar

在module的build.gradle文件的最后添加一下配置

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
}
//定义makeJar任务打包jar包 start
task makeJar(type: Copy){
    delete 'build/libs/xxxx.jar'//先删除存在的jar包
    from('build/intermediates/aar_main_jar/release/')//
    into('build/libs/')//打包后生成的jar包的存放目录
    include('classes.jar')//include、exclude参数过滤,这里只关注classes.jar
    rename ('classes.jar', 'xxxx.jar')
}
//定义makeJar任务打包jar包 end
makeJar.dependsOn(build)

其中from(‘build/intermediates/aar_main_jar/release/’)这一行不同的版本的gradle生成的jar包的路径可能不太一样
有可能在build/intermediates/bundles/release/,也有可能在build/intermediates/packaged_jar/release/里,找到相应的classes.jar文件即可

3.AS打包jar并混淆

(1)首先要设置混淆开关

buildTypes {
    release {
        minifyEnabled true //这里设置为true
        proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
    }
}

(2)设置proguard-rules.pro混淆规则,该文件在module下

#设置
-libraryjars 'C:\Program Files\Java\jdk1.8.0_202\jre\lib\rt.jar'
-libraryjars 'D:\android\sdk\platforms\android-28\android.jar'

#避免混淆泛型,内部类,异常
-keepattributes Signature, InnerClasses, EnclosingMethod, Exceptions

-optimizationpasses 5

#混淆时不会产生形形色色的类名
#-dontusemixedcaseclassnames

#避免混淆
-keep class xxx.xx.xxx.* {//包名
public <fields>;//属性
public <methods>;//方法
}

混淆打包中出现过打成了空包的jar包,后加入避免混淆本module中属性和方法的配置,即keep class xxx.xx.xxx.* {//包名后打包正常,原因有待再分析

4.cmake打包so库

出现CMake was unable to find a build program corresponding to “Ninja”.这种问题,找不到Ninja
解决方法:
找到android sdk下面的cmake/bin文件夹,然后配置系统的环境变量,重启电脑解决

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值