download.gradle 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. import java.security.MessageDigest
  2. apply plugin: 'de.undercouch.download'
  3. def BASE_PATH = "https://storage.googleapis.com/chromium-cronet/android/" + CronetVersion + "/Release/cronet/"
  4. def assetsDir = projectDir.toString() + "/src/main/assets"
  5. def libPath = projectDir.toString() + "/cronetlib"
  6. def soPath = projectDir.toString() + "/so"
  7. /**
  8. * 从文件生成MD5
  9. * @param file
  10. * @return
  11. */
  12. static def generateMD5(final file) {
  13. MessageDigest digest = MessageDigest.getInstance("MD5")
  14. file.withInputStream() { is ->
  15. byte[] buffer = new byte[1024]
  16. //noinspection GroovyUnusedAssignment
  17. int numRead = 0
  18. while ((numRead = is.read(buffer)) > 0) {
  19. digest.update(buffer, 0, numRead)
  20. }
  21. }
  22. return String.format("%032x", new BigInteger(1, digest.digest())).toLowerCase()
  23. }
  24. /**
  25. * 下载Cronet相关的jar
  26. */
  27. task downloadJar(type: Download) {
  28. src([
  29. BASE_PATH + "cronet_api.jar",
  30. BASE_PATH + "cronet_impl_common_java.jar",
  31. BASE_PATH + "cronet_impl_native_java.jar",
  32. BASE_PATH + "cronet_impl_platform_java.jar",
  33. ])
  34. dest libPath
  35. overwrite true
  36. onlyIfModified false
  37. }
  38. /**
  39. * 下载Cronet的arm64-v8a so
  40. */
  41. task downloadARM64(type: Download) {
  42. src BASE_PATH + "libs/arm64-v8a/libcronet." + CronetVersion + ".so"
  43. dest soPath + "/arm64-v8a.so"
  44. overwrite true
  45. onlyIfModified true
  46. }
  47. /**
  48. * 下载Cronet的armeabi-v7a so
  49. */
  50. task downloadARMv7(type: Download) {
  51. src BASE_PATH + "libs/armeabi-v7a/libcronet." + CronetVersion + ".so"
  52. dest soPath + "/armeabi-v7a.so"
  53. overwrite true
  54. onlyIfModified true
  55. }
  56. /**
  57. * 下载Cronet的x86_64 so
  58. */
  59. task downloadX86_64(type: Download) {
  60. src BASE_PATH + "libs/x86_64/libcronet." + CronetVersion + ".so"
  61. dest soPath + "/x86_64.so"
  62. overwrite true
  63. onlyIfModified true
  64. }
  65. /**
  66. * 下载Cronet的x86 so
  67. */
  68. task downloadX86(type: Download) {
  69. src BASE_PATH + "libs/x86/libcronet." + CronetVersion + ".so"
  70. dest soPath + "/x86.so"
  71. overwrite true
  72. onlyIfModified true
  73. }
  74. /**
  75. * 更新Cronet版本时执行这个task
  76. * 先更改gradle.properties 里面的版本号,然后再执行
  77. * gradlew app:downloadCronet
  78. */
  79. task downloadCronet() {
  80. dependsOn downloadJar, downloadARM64, downloadARMv7, downloadX86_64, downloadX86
  81. doLast {
  82. StringBuilder sb = new StringBuilder("{")
  83. def files = new File(soPath).listFiles()
  84. for (File file : files) {
  85. println file.name.replace(".so", "")
  86. sb.append("\"").append(file.name.replace(".so", "")).append("\":\"").append(generateMD5(file)).append("\",")
  87. }
  88. sb.append("\"version\":\"").append(CronetVersion).append("\"}")
  89. println sb.toString()
  90. println assetsDir
  91. def f1 = new File(assetsDir + "/cronet.json")
  92. if (!f1.exists()) {
  93. f1.parentFile.mkdirs()
  94. f1.createNewFile()
  95. }
  96. f1.text = sb.toString()
  97. }
  98. }