[关闭]
@asce1885 2015-06-20T01:34:02.000000Z 字数 8415 阅读 373

Hyperion公共框架自动化编译简介

新框架文档


@author:ASCE1885

自动化编译包括本地编译和Jenkins编译两部分,本地编译主要用于开发自己调试使用,Jenkins编译主要用于测试,产品等取包以及跑Monkey使用。

Hyperion公共框架基于Android Studio+Gradle构建,根据功能划分为多个独立的Module,解耦的同时也便于分模块打包。

本地编译

本地编译脚本文件位于工程根目录下的build_local.sh,该脚本的主要功能有:

build_local.sh文件内容如下:

  1. #!/bin/sh
  2. #使用Gradle编译各个module
  3. #./gradlew clean
  4. ./gradlew build --stacktrace --debug
  5. #进入输出目录
  6. cd output
  7. #清空输出目录
  8. rm -rf *
  9. #创建输出子目录
  10. mkdir temp
  11. mkdir debug
  12. mkdir release
  13. #定义hyperion sdk版本号
  14. version="1.0.0"
  15. #定义模块是否打包标识
  16. is_include_hfasynchttp=true
  17. is_include_bitmapfun=true
  18. is_include_hfdbutil=true
  19. is_include_hfeventbus=true
  20. is_include_hfhybrid=true
  21. is_include_hfjson=true
  22. is_include_hflogger=true
  23. is_include_hfutils=true
  24. is_include_hfnativepluginnew=true
  25. is_include_hfengine=true
  26. is_include_hfpush=true
  27. is_include_hfstatistics=true
  28. is_include_hfmessage=true
  29. is_include_hfshare=true
  30. #解压所有debug版本的jar包到temp目录中
  31. cd temp
  32. if $is_include_hfasynchttp; then
  33. jar -xvf ../../hfasynchttp/build/intermediates/bundles/debug/classes.jar
  34. fi
  35. if $is_include_bitmapfun; then
  36. jar -xvf ../../hfbitmapfun/build/intermediates/bundles/debug/classes.jar
  37. fi
  38. if $is_include_hfdbutil; then
  39. jar -xvf ../../hfdbutil/build/intermediates/bundles/debug/classes.jar
  40. fi
  41. if $is_include_hfeventbus; then
  42. jar -xvf ../../hfeventbus/build/intermediates/bundles/debug/classes.jar
  43. fi
  44. if $is_include_hfhybrid; then
  45. jar -xvf ../../hfhybrid/build/intermediates/bundles/debug/classes.jar
  46. fi
  47. if $is_include_hfjson; then
  48. jar -xvf ../../hfjson/build/intermediates/bundles/debug/classes.jar
  49. fi
  50. if $is_include_hflogger; then
  51. jar -xvf ../../hflogger/build/intermediates/bundles/debug/classes.jar
  52. fi
  53. if $is_include_hfutils; then
  54. jar -xvf ../../hfutils/build/intermediates/bundles/debug/classes.jar
  55. fi
  56. if $is_include_hfnativepluginnew; then
  57. jar -xvf ../../hfnativepluginnew/build/intermediates/bundles/debug/classes.jar
  58. fi
  59. if $is_include_hfengine; then
  60. jar -xvf ../../hfengine/build/intermediates/bundles/debug/classes.jar
  61. fi
  62. if $is_include_hfpush; then
  63. jar -xvf ../../hfpush/build/intermediates/bundles/debug/classes.jar
  64. fi
  65. if $is_include_hfstatistics; then
  66. jar -xvf ../../hfstatistics/build/intermediates/bundles/debug/classes.jar
  67. fi
  68. if $is_include_hfmessage; then
  69. jar -xvf ../../hfmessage/build/intermediates/bundles/debug/classes.jar
  70. fi
  71. if $is_include_hfshare; then
  72. jar -xvf ../../hfshare/build/intermediates/bundles/debug/classes.jar
  73. fi
  74. #压缩所有debug版本的class文件到一个独立的jar包中
  75. jar -cvfM AndroidHyperion_${version}_debug.jar .
  76. #拷贝文件
  77. mv AndroidHyperion_${version}_debug.jar ../debug
  78. cp -r ../../hfengine/build/libs ../debug
  79. rm ../debug/libs/ndk-libs.jar
  80. #清空temp目录
  81. rm -rf *
  82. #解压所有release版本的jar包到temp目录中
  83. if $is_include_hfasynchttp; then
  84. jar -xvf ../../hfasynchttp/build/intermediates/bundles/release/classes.jar
  85. fi
  86. if $is_include_bitmapfun; then
  87. jar -xvf ../../hfbitmapfun/build/intermediates/bundles/release/classes.jar
  88. fi
  89. if $is_include_hfdbutil; then
  90. jar -xvf ../../hfdbutil/build/intermediates/bundles/release/classes.jar
  91. fi
  92. if $is_include_hfeventbus; then
  93. jar -xvf ../../hfeventbus/build/intermediates/bundles/release/classes.jar
  94. fi
  95. if $is_include_hfhybrid; then
  96. jar -xvf ../../hfhybrid/build/intermediates/bundles/release/classes.jar
  97. fi
  98. if $is_include_hfjson; then
  99. jar -xvf ../../hfjson/build/intermediates/bundles/release/classes.jar
  100. fi
  101. if $is_include_hflogger; then
  102. jar -xvf ../../hflogger/build/intermediates/bundles/release/classes.jar
  103. fi
  104. if $is_include_hfutils; then
  105. jar -xvf ../../hfutils/build/intermediates/bundles/release/classes.jar
  106. fi
  107. if $is_include_hfnativepluginnew; then
  108. jar -xvf ../../hfnativepluginnew/build/intermediates/bundles/release/classes.jar
  109. fi
  110. if $is_include_hfengine; then
  111. jar -xvf ../../hfengine/build/intermediates/bundles/release/classes.jar
  112. fi
  113. if $is_include_hfpush; then
  114. jar -xvf ../../hfpush/build/intermediates/bundles/release/classes.jar
  115. fi
  116. if $is_include_hfstatistics; then
  117. jar -xvf ../../hfstatistics/build/intermediates/bundles/release/classes.jar
  118. fi
  119. if $is_include_hfmessage; then
  120. jar -xvf ../../hfmessage/build/intermediates/bundles/release/classes.jar
  121. fi
  122. if $is_include_hfshare; then
  123. jar -xvf ../../hfshare/build/intermediates/bundles/release/classes.jar
  124. fi
  125. #压缩所有release版本的class文件到一个jar包中
  126. jar -cvfM AndroidHyperion_${version}_release.jar .
  127. #拷贝文件
  128. mv AndroidHyperion_${version}_release.jar ../release
  129. cp -r ../../hfengine/build/libs ../release
  130. rm ../release/libs/ndk-libs.jar
  131. #删除temp目录
  132. cd ..
  133. rm -rf temp

Jenkins编译

Jenkins编译脚本文件位于工程根目录下的build_jenkins.sh,该脚本的主要功能有:

build_jenkins.sh文件内容如下:

  1. #!/bin/sh
  2. ./gradlew clean
  3. ./gradlew build --stacktrace --debug
  4. #进入输出目录
  5. cd output
  6. #清空输出目录
  7. rm -rf *
  8. #创建输出子目录
  9. mkdir temp
  10. mkdir debug
  11. mkdir release
  12. cd temp
  13. #解压所有release版本的jar包
  14. if $is_include_hfasynchttp; then
  15. jar -xvf ../../hfasynchttp/build/intermediates/bundles/release/classes.jar
  16. fi
  17. if $is_include_bitmapfun; then
  18. jar -xvf ../../hfbitmapfun/build/intermediates/bundles/release/classes.jar
  19. fi
  20. if $is_include_hfdbutil; then
  21. jar -xvf ../../hfdbutil/build/intermediates/bundles/release/classes.jar
  22. fi
  23. if $is_include_hfeventbus; then
  24. jar -xvf ../../hfeventbus/build/intermediates/bundles/release/classes.jar
  25. fi
  26. if $is_include_hfhybrid; then
  27. jar -xvf ../../hfhybrid/build/intermediates/bundles/release/classes.jar
  28. fi
  29. if $is_include_hfjson; then
  30. jar -xvf ../../hfjson/build/intermediates/bundles/release/classes.jar
  31. fi
  32. if $is_include_hflogger; then
  33. jar -xvf ../../hflogger/build/intermediates/bundles/release/classes.jar
  34. fi
  35. if $is_include_hfutils; then
  36. jar -xvf ../../hfutils/build/intermediates/bundles/release/classes.jar
  37. fi
  38. if $is_include_hfnativepluginnew; then
  39. jar -xvf ../../hfnativepluginnew/build/intermediates/bundles/release/classes.jar
  40. fi
  41. if $is_include_hfengine; then
  42. jar -xvf ../../hfengine/build/intermediates/bundles/release/classes.jar
  43. fi
  44. if $is_include_hfpush; then
  45. jar -xvf ../../hfpush/build/intermediates/bundles/release/classes.jar
  46. fi
  47. if $is_include_hfstatistics; then
  48. jar -xvf ../../hfstatistics/build/intermediates/bundles/release/classes.jar
  49. fi
  50. if $is_include_hfmessage; then
  51. jar -xvf ../../hfmessage/build/intermediates/bundles/release/classes.jar
  52. fi
  53. if $is_include_hfshare; then
  54. jar -xvf ../../hfshare/build/intermediates/bundles/release/classes.jar
  55. fi
  56. #压缩所有release版本的class文件到一个jar包中
  57. jar -cvfM AndroidHyperion_${version}_release.jar .
  58. #移动生成的jar包到release目录
  59. mv AndroidHyperion_${version}_release.jar ../release
  60. #清空temp目录
  61. rm -rf *
  62. #解压所有debug版本的jar包
  63. if $is_include_hfasynchttp; then
  64. jar -xvf ../../hfasynchttp/build/intermediates/bundles/debug/classes.jar
  65. fi
  66. if $is_include_bitmapfun; then
  67. jar -xvf ../../hfbitmapfun/build/intermediates/bundles/debug/classes.jar
  68. fi
  69. if $is_include_hfdbutil; then
  70. jar -xvf ../../hfdbutil/build/intermediates/bundles/debug/classes.jar
  71. fi
  72. if $is_include_hfeventbus; then
  73. jar -xvf ../../hfeventbus/build/intermediates/bundles/debug/classes.jar
  74. fi
  75. if $is_include_hfhybrid; then
  76. jar -xvf ../../hfhybrid/build/intermediates/bundles/debug/classes.jar
  77. fi
  78. if $is_include_hfjson; then
  79. jar -xvf ../../hfjson/build/intermediates/bundles/debug/classes.jar
  80. fi
  81. if $is_include_hflogger; then
  82. jar -xvf ../../hflogger/build/intermediates/bundles/debug/classes.jar
  83. fi
  84. if $is_include_hfutils; then
  85. jar -xvf ../../hfutils/build/intermediates/bundles/debug/classes.jar
  86. fi
  87. if $is_include_hfnativepluginnew; then
  88. jar -xvf ../../hfnativepluginnew/build/intermediates/bundles/debug/classes.jar
  89. fi
  90. if $is_include_hfengine; then
  91. jar -xvf ../../hfengine/build/intermediates/bundles/debug/classes.jar
  92. fi
  93. if $is_include_hfpush; then
  94. jar -xvf ../../hfpush/build/intermediates/bundles/debug/classes.jar
  95. fi
  96. if $is_include_hfstatistics; then
  97. jar -xvf ../../hfstatistics/build/intermediates/bundles/debug/classes.jar
  98. fi
  99. if $is_include_hfmessage; then
  100. jar -xvf ../../hfmessage/build/intermediates/bundles/debug/classes.jar
  101. fi
  102. if $is_include_hfshare; then
  103. jar -xvf ../../hfshare/build/intermediates/bundles/debug/classes.jar
  104. fi
  105. #压缩所有release版本的class文件到一个jar包中
  106. jar -cvfM AndroidHyperion_${version}_debug.jar .
  107. #移动生成的jar包到debug目录
  108. mv AndroidHyperion_${version}_debug.jar ../debug
  109. #删除temp目录
  110. cd ..
  111. rm -rf temp

local和Jenkins参数化构建参数

类型 名称 默认值 描述
String version 1.0.0 Hyperion sdk版本号
Boolean is_include_hfasynchttp true 是否打包hfasynchttp
Boolean is_include_bitmapfun true 是否打包hfbitmapfun
Boolean is_include_hfeventbus true 是否打包hfeventbus
Boolean is_include_hfhybrid true 是否打包hfhybrid
Boolean is_include_hfjson true 是否打包hfjson
Boolean is_include_hflogger true 是否打包hflogger
Boolean is_include_hfutils true 是否打包hfutils
Boolean is_include_hfnativepluginnew true 是否打包hfnativepluginnew
Boolean is_include_hfpush true 是否打包hfpush
Boolean is_include_hfstatistics true 是否打包hfstatistics
Boolean is_include_hfdbutil true 是否打包hfdbutil
Boolean is_include_hfengine true 是否打包hfengine
Boolean is_include_hfmessage true 是否打包hfmessage
Boolean is_include_hfshare true 是否打包hfshare
Boolean is_include_hfdatabase true 是否打包hfdatabase
Boolean is_include_hfendecrypte true 是否打包hfendecrypte
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注