download.gradle 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  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. tasks.register('downloadJar', 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. BASE_PATH + "cronet_shared_java.jar"
  34. ])
  35. dest libPath
  36. overwrite true
  37. onlyIfModified false
  38. }
  39. /**
  40. * 下载Cronet的arm64-v8a so
  41. */
  42. tasks.register('downloadARM64', Download) {
  43. src BASE_PATH + "libs/arm64-v8a/libcronet." + CronetVersion + ".so"
  44. dest soPath + "/arm64-v8a.so"
  45. overwrite true
  46. onlyIfModified true
  47. }
  48. /**
  49. * 下载Cronet的armeabi-v7a so
  50. */
  51. tasks.register('downloadARMv7', Download) {
  52. src BASE_PATH + "libs/armeabi-v7a/libcronet." + CronetVersion + ".so"
  53. dest soPath + "/armeabi-v7a.so"
  54. overwrite true
  55. onlyIfModified true
  56. }
  57. /**
  58. * 下载Cronet的x86_64 so
  59. */
  60. tasks.register('downloadX86_64', Download) {
  61. src BASE_PATH + "libs/x86_64/libcronet." + CronetVersion + ".so"
  62. dest soPath + "/x86_64.so"
  63. overwrite true
  64. onlyIfModified true
  65. }
  66. /**
  67. * 下载Cronet的x86 so
  68. */
  69. tasks.register('downloadX86', Download) {
  70. src BASE_PATH + "libs/x86/libcronet." + CronetVersion + ".so"
  71. dest soPath + "/x86.so"
  72. overwrite true
  73. onlyIfModified true
  74. }
  75. /**
  76. * 更新Cronet版本时执行这个task
  77. * 先更改gradle.properties 里面的版本号,然后再执行
  78. * gradlew app:downloadCronet
  79. */
  80. tasks.register('downloadCronet') {
  81. dependsOn downloadJar, downloadARM64, downloadARMv7, downloadX86_64, downloadX86
  82. doLast {
  83. StringBuilder sb = new StringBuilder("{")
  84. def files = new File(soPath).listFiles()
  85. for (File file : files) {
  86. println file.name.replace(".so", "")
  87. sb.append("\"").append(file.name.replace(".so", "")).append("\":\"").append(generateMD5(file)).append("\",")
  88. }
  89. sb.append("\"version\":\"").append(CronetVersion).append("\"}")
  90. println sb.toString()
  91. println assetsDir
  92. def f1 = new File(assetsDir + "/cronet.json")
  93. if (!f1.exists()) {
  94. f1.parentFile.mkdirs()
  95. f1.createNewFile()
  96. }
  97. f1.text = sb.toString()
  98. }
  99. }