디버그 빌드를 수행 할 때 java 리소스가 아무 문제없이 jar로 압축됩니다. 그러나 릴리스 빌드에서는 작동하지 않습니다. 나는 gradle task processReleaseJavaRes가 디버그 빌드를 위해서만 실행된다는 것을 알아 차렸다. 나는 안드로이드 Gradle을 코드를 검색하고 볼 수있는 그때 proguardRelease의 실행 종속으로 작업을 추가하려고 lines of code:gradle 및 proguard로 안드로이드 라이브러리를 빌드하면 자바 리소스 파일이 누락됩니다.
if (variantConfig.buildType.runProguard) {
// run proguard on output of compile task
createProguardTasks(variantData, null)
// hack since bundle can't depend on variantData.proguardTask
mergeProGuardFileTask.dependsOn variantData.proguardTask
bundle.dependsOn packageRes, packageAidl, packageRenderscript, mergeProGuardFileTask, lintCopy, variantData.ndkCompileTask
} else {
Sync packageLocalJar = project.tasks.create("package${variantData.variantConfiguration.fullName.capitalize()}LocalJar",Sync)
packageLocalJar.from(getLocalJarFileList(variantData.variantDependency))
packageLocalJar.into(project.file("$project.buildDir/$DIR_BUNDLES/${variantData.variantConfiguration.dirName}/$SdkConstants.LIBS_FOLDER"))
// jar the classes.
Jar jar = project.tasks.create("package${buildType.name.capitalize()}Jar", Jar);
jar.dependsOn variantData.javaCompileTask, variantData.processJavaResourcesTask
jar.from(variantData.javaCompileTask.outputs);
jar.from(variantData.processJavaResourcesTask.destinationDir)
...
bundle.dependsOn packageRes, jar, packageAidl, packageRenderscript, packageLocalJar, mergeProGuardFileTask, lintCopy, variantData.ndkCompileTask
...
}
다음
이tasks.whenTaskAdded { task ->
if (task.name.matches("proguardRelease")) {
task.dependsOn('processReleaseJavaRes')
}
}
이 잘 작동하고 자바 자원이 빌드에서 만든/중간체/javaResources/-하지만 다음 문제가 발생했습니다. proguard에게 빌드/중간체/클래스의 클래스로 jar 파일을 빌드하고 build/intermediate/javaResources의 리소스를 포함해야한다고 어떻게 말할 수 있습니까? -injars를 사용하여 javaResources 경로를 설정하려고했습니다. 이제 proguard에 추가됩니다 (아래 로그 출력 참조). 그러나 build/intermediate/bundles/release/classes.jar의 classes.jar에는 추가되지 않습니다. 사전에
13:32:30.731 [INFO] [system.out] Reading program directory [/path/to/my/project/build/intermediates/classes/release] (filtered)
13:32:30.913 [INFO] [system.out] Reading program directory [/path/to/my/project/build/intermediates/javaResources/release]
감사합니다, Romanski
그것은 내 목숨을 구하기위한 것입니다. 많은 감사합니다. –