手机淘宝Atlas组件化框架

econo 7年前
   <h2>一、前言:</h2>    <p>几天前手淘终于把云栖大会上说的Atlas开源了,此处应欢声雷动:clap:。 </p>    <p>今天不说原理性的东西(后续或许会写),有兴趣可以看官方文档: <a href="/misc/goto?guid=4959741847929127969" rel="nofollow,noindex">官方教程</a> ,鉴于初步跑官方给出的Demo时遇到了不少坑稍微总结下,让在准备探索的小伙伴不在迷茫的踩坑。</p>    <p>:warning:注:转载请注明原文地址、谢谢!</p>    <h2>二、下载Demo导入到Android Studio</h2>    <p>Git clone 整个项目或者直接下载到本地: <a href="/misc/goto?guid=4959741848015890077" rel="nofollow,noindex">https://github.com/alibaba/atlas</a></p>    <h3>1、atlas-demo下有两个项目:</h3>    <p>FistBundle:当它是一个独立开的组件;</p>    <p>app是实际的工程,用于集成组件,最终打包成我们要的apk。</p>    <p style="text-align: center;"><img src="https://simg.open-open.com/show/dcd1e9757e62d7610c246cceea1fc3a1.jpg"></p>    <p style="text-align: center;">Demo结构</p>    <h3>2、导入项目</h3>    <p>Android Studio:File->New->Import Project->分别导入FirstBundle和app工程,现在AS已经是2.3版本了,gradle也已经更新到3.3版本了,根据文档说明我们暂时不去动工程的其他配置,目的是让工程跑通,在此基础上进一步探索。</p>    <p style="text-align: center;"><img src="https://simg.open-open.com/show/af8cce273ef374762bb799a35a5f32e6.png"></p>    <p style="text-align: center;">导入项目</p>    <h3>3、配置gradle版本导入时gradle可能会被更新到最新版本,先改回这个2.14.1版本:</h3>    <pre>  http\://services.gradle.org/distributions/gradle-2.14.1-all.zip</pre>    <p style="text-align: center;"><img src="https://simg.open-open.com/show/b1bb23006094cff4007ba36815a59acb.png"></p>    <p style="text-align: center;">配置gradle版本</p>    <h3>4、构建FirstBundle工程</h3>    <p>若本地未下载2.14.1版本的gradle可能要等好久,或者直接报错(Error:Cause: zip file is empty),OS系统可以到gradle文件夹:/Users/用户名/.gradle/wrapper/dists 查看有没有下好,如下因为依赖的是第三个文件夹下的gradle 然后一直下载不了,最后我是copy上面文件夹下的文件。也可以下载完放到对应目录</p>    <p style="text-align: center;"><img src="https://simg.open-open.com/show/47d53bad9578f826359cc533d7b38075.png"></p>    <p style="text-align: center;">gradle</p>    <h3>5、修改FirstBundle的builde.gradle</h3>    <p>否则执行不了,修改完用命令构建,最终生成依赖包放在本地,FirstBundle的配置就到此为止, mavenlocal位置:/Users/用户/.m2/repository/</p>    <pre>  publishing {      publications {          maven(MavenPublication) {              artifact "${project.buildDir}/outputs/awb/${project.name}-release.awb"              artifact sourcesJar          }      }      repositories {          mavenLocal()  //        maven {  //            url "url"  //            credentials {  //                username = "xxx"  //                password = "xxx"  //            }  //        }      }  }</pre>    <p>修改完成执行shell构建</p>    <pre>  ./gradlew clean assembleRelease publishMavenPublicationToMavenLocal</pre>    <h3>6、app工程</h3>    <p>修改builde.gradle 大概在37行,很奇怪阿里团队一个简单的Demo搞这么多幺蛾子。把firstbundle改成驼峰FirstBundle就好,因为FirstBundle工程生成的awb是FirstBundle。</p>    <p style="text-align: center;"><img src="https://simg.open-open.com/show/9116839c9a887ce64ca7a5a2367c32f1.png"></p>    <p style="text-align: center;">修改依赖</p>    <h2>三、构建</h2>    <h3>1、关键在于app项目下两个sh脚本</h3>    <p style="text-align: center;"><img src="https://simg.open-open.com/show/679f65b1dc26f049b47dc04122663556.png"></p>    <p style="text-align: center;">构建、更新</p>    <h3>2、修改buildApk.sh</h3>    <p>在文件内容最后添加:adb install -r build/outputs/apk/app-debug.apk,或者构建完成执行安装apk,因为buildApk.sh内不是执行命令,是echo "打印、打印、打印"</p>    <p>Terminal执行命令sh buildApk.sh,执行成功后apk已经包含了app和FirstBundle项目</p>    <pre>  sh buildApk.sh</pre>    <h3>3、sh buildTpatch.sh</h3>    <p>Terminal执行:sh buildTpatch.sh,把资源推到手机上,具体看buildTpatch.sh文件的命令。再点击“动态部署”更新包内容,至此就完成了:集成组件、快速更新的简单演示。</p>    <p style="text-align: center;"><img src="https://simg.open-open.com/show/487f46ec8cb4c34114b4b3bf82dd6395.png"></p>    <p style="text-align: center;">Demo界面</p>    <h2>四、总结</h2>    <p>微笑脸:),花了整整一天才摸清楚一个Demo,成本有点高。但愿Atlas团队在优化框架的同时也丰富下Demo,毕竟入手还是要从文档和Demo开始,倘若成千上万的小伙伴花时间在解决这些坑真是浪费生命。有疑惑请留言,谢谢!</p>    <p> </p>    <p>来自:http://www.jianshu.com/p/bb9bacad678a</p>    <p> </p>