Guest User

Untitled

a guest
Sep 28th, 2016
55
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.21 KB | None | 0 0
  1. def toCamelCase(String string) {
  2. String result = ""
  3. string.findAll("[^\\W]+") { String word ->
  4. result += word.capitalize()
  5. }
  6. return result
  7. }
  8.  
  9. afterEvaluate { project ->
  10. Configuration runtimeConfiguration = project.configurations.getByName('compile')
  11. ResolutionResult resolution = runtimeConfiguration.incoming.resolutionResult
  12. // Forces resolve of configuration
  13. ModuleVersionIdentifier module = resolution.getAllComponents().find { it.moduleVersion.name.equals("play-services") }.moduleVersion
  14.  
  15. String prepareTaskName = "prepare${toCamelCase("${module.group} ${module.name} ${module.version}")}Library"
  16. File playServiceRootFolder = project.tasks.find { it.name.equals(prepareTaskName) }.explodedDir
  17.  
  18. Task stripPlayServices = project.tasks.create(name: 'stripPlayServices', group: "Strip") {
  19. inputs.files new File(playServiceRootFolder, "classes.jar")
  20. outputs.dir playServiceRootFolder
  21. description 'Strip useless packages from Google Play Services library to avoid reaching dex limit'
  22.  
  23. doLast {
  24. copy {
  25. from(file(new File(playServiceRootFolder, "classes.jar")))
  26. into(file(playServiceRootFolder))
  27. rename { fileName ->
  28. fileName = "classes_orig.jar"
  29. }
  30. }
  31. tasks.create(name: "stripPlayServices" + module.version, type: Jar) {
  32. destinationDir = playServiceRootFolder
  33. archiveName = "classes.jar"
  34. from(zipTree(new File(playServiceRootFolder, "classes_orig.jar"))) {
  35. exclude "com/google/ads/**"
  36. exclude "com/google/android/gms/analytics/**"
  37. exclude "com/google/android/gms/games/**"
  38. exclude "com/google/android/gms/plus/**"
  39. exclude "com/google/android/gms/drive/**"
  40. exclude "com/google/android/gms/ads/**"
  41. }
  42. }.execute()
  43. delete file(new File(playServiceRootFolder, "classes_orig.jar"))
  44. }
  45. }
  46.  
  47. project.tasks.findAll { it.name.startsWith('prepare') && it.name.endsWith('Dependencies') }.each { Task task ->
  48. task.dependsOn stripPlayServices
  49. }
  50. }
Add Comment
Please, Sign In to add comment