android dx.bat, d8.bat jar a registro de error dex

1. Exporte el paquete jar de terceros en el proyecto a un paquete jar:

dependencies {
    
    
    //引入的第三方jar包
    implementation files('libs/bcprov-jdk15-1.32.jar')
    implementation files('libs/bgmprovider-1.0.3.jar')
    implementation files('libs/javawriter-2.1.1.jar')
}

build.gradle agrega la tarea makeJar:

task makeJar(type:Jar){
    
    
    delete 'build/libs/usagestats-java.jar'//删除之前的包

    archivesBaseName = "usagestats-java"//打包后的jar名
    //添加module自身代码编译出的jar文件
    from(project.zipTree('build/intermediates/aar_main_jar/release/classes.jar'))
    //第三方jar包会在build/intermediates/aar_libs_directory/release/libs/下生成对应jar包(AS4.1.3),全部添加到目标jar包
    from(project.zipTree('build/intermediates/aar_libs_directory/release/libs/bcprov-jdk15-1.32.jar')) 
    from(project.zipTree('build/intermediates/aar_libs_directory/release/libs/bgmprovider-1.0.3.jar')) 
    from(project.zipTree('build/intermediates/aar_libs_directory/release/libs/javawriter-2.1.1.jar'))
    //jar包输出路径
    destinationDir = file('build/libs')
}

2. Problemas encontrados al usar el archivo jar dx.bat para convertir a dex:
comando:

dx.bat --dex --output target-dex.jar source-java.jar

Error: código de operación no válido ba - invoquedynamic requiere --min-sdk-version >= 26 (actualmente 13)
Agregar --min-sdk-version=26 puede resolver el error, el comando se cambia a:

dx.bat --dex --min-sdk-version=26 --output target-dex.jar source-java.jar

Pero la operación fallará, error:
No se pudo abrir dex desde el descriptor de archivo para el archivo zip '/data/app/com.test/base.apk': No se pudo abrir el archivo dex 'xxx.jar' de la memoria: Número de versión no reconocido en xxx.jar: 0 3 6

No se puede reconocer la versión 036. Esto se define en el encabezado del archivo dex. La depuración encontró que –min-sdk-version afectará el valor de 036, pero modificar este parámetro hará que algunos paquetes jar no se compilen.

3. Usa d8.bat en su lugar

d8.bat  --output /xxx/out-dex.jar /xxx/in-java.jar

Un montón de advertencias después de la ejecución, y finalmente un error:
Error: No se encontró la clase o interfaz java.io.IOException requerida para desugaring de try-with-resources
Finalmente, agregue el parámetro –min-api para resolver:

d8.bat --min-api 26 --output /xxx/out-dex.jar /xxx/in-java.jar

Supongo que te gusta

Origin blog.csdn.net/weixin_40652755/article/details/129246538
Recomendado
Clasificación