download.gradle 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  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. int numRead = 0
  17. while ((numRead = is.read(buffer)) > 0) {
  18. digest.update(buffer, 0, numRead)
  19. }
  20. }
  21. return String.format("%032x", new BigInteger(1, digest.digest())).toLowerCase()
  22. }
  23. /**
  24. * 下载Cronet相关的jar
  25. */
  26. task downloadJar(type: Download) {
  27. src([
  28. BASE_PATH + "cronet_api.jar",
  29. BASE_PATH + "cronet_impl_common_java.jar",
  30. BASE_PATH + "cronet_impl_native_java.jar",
  31. BASE_PATH + "cronet_impl_platform_java.jar",
  32. ])
  33. dest libPath
  34. overwrite true
  35. onlyIfModified true
  36. }
  37. /**
  38. * 下载Cronet的arm64-v8a so
  39. */
  40. task downloadARM64(type: Download) {
  41. src BASE_PATH + "libs/arm64-v8a/libcronet." + CronetVersion + ".so"
  42. dest soPath + "/arm64-v8a.so"
  43. overwrite true
  44. onlyIfModified true
  45. }
  46. /**
  47. * 下载Cronet的armeabi-v7a so
  48. */
  49. task downloadARMv7(type: Download) {
  50. src BASE_PATH + "libs/armeabi-v7a/libcronet." + CronetVersion + ".so"
  51. dest soPath + "/armeabi-v7a.so"
  52. overwrite true
  53. onlyIfModified true
  54. }
  55. /**
  56. * 下载Cronet的x86_64 so
  57. */
  58. task downloadX86_64(type: Download) {
  59. src BASE_PATH + "libs/x86_64/libcronet." + CronetVersion + ".so"
  60. dest soPath + "/x86_64.so"
  61. overwrite true
  62. onlyIfModified true
  63. }
  64. /**
  65. * 下载Cronet的x86 so
  66. */
  67. task downloadX86(type: Download) {
  68. src BASE_PATH + "libs/x86/libcronet." + CronetVersion + ".so"
  69. dest soPath + "/x86.so"
  70. overwrite true
  71. onlyIfModified true
  72. }
  73. /**
  74. * 更新Cronet版本时执行这个task
  75. * 先更改gradle.properties 里面的版本号,然后再执行
  76. * gradlew app:downloadCronet
  77. */
  78. task downloadCronet() {
  79. dependsOn downloadJar, downloadARM64, downloadARMv7, downloadX86_64, downloadX86
  80. doLast {
  81. StringBuilder sb = new StringBuilder("{")
  82. def files = new File(soPath).listFiles()
  83. for (File file : files) {
  84. println file.name.replace(".so", "")
  85. sb.append("\"").append(file.name.replace(".so", "")).append("\":\"").append(generateMD5(file)).append("\",")
  86. }
  87. sb.append("\"version\":\"").append(CronetVersion).append("\"}")
  88. println sb.toString()
  89. println assetsDir
  90. def f1 = new File(assetsDir + "/cronet.json")
  91. if (!f1.exists()) {
  92. f1.parentFile.mkdirs()
  93. f1.createNewFile()
  94. }
  95. f1.text = sb.toString()
  96. }
  97. }