Android从零撸美团(一) - 统一管理 Gradle 依赖 提取到单独文件中

【Android从零撸美团一】统一管理 Gradle 依赖 提取到单独文件中 前言 从今天开始带大家一起从零开始撸一个美团Android版App。 【从零撸美团】这个专题将持续更新,用以详细记录分享开发过程,欢迎关注。 源码地址:https://github.com/cachecats/LikeMeiTuan 专题的第一篇文章本来想按惯例讲项目介绍、整体架构、代码规范之类的。但今天有点躁动,不想讲那么正经深奥的东西,定的最低计划又是周三和周日每周两更,所以就暂且讲构建项目... 阅读详情

butterKnifeVersion = “8.8.1”
bannerVersion = “1.4.10”
loggerVersion = “2.1.1”
baseRecyclerViewAdapterHelperVersion = “2.9.30”
dbflowVersion = “4.2.4”

app = [
recyclerView : “com.android.support:recyclerview-v7:recyclerViewVersion",rxjava:"io.reactivex.rxjava2:rxjava:{recyclerViewVersion}", rxjava : "io.reactivex.rxjava2:rxjava:recyclerViewVersion",rxjava:"io.reactivex.rxjava2:rxjava:{rxjava2Version}”,
rxandroid : “io.reactivex.rxjava2:rxandroid:rxandroidVersion",dagger:"com.google.dagger:dagger:{rxandroidVersion}", dagger : "com.google.dagger:dagger:rxandroidVersion",dagger:"com.google.dagger:dagger:{daggerVersion}”,
daggerCompiler : “com.google.dagger:dagger-compiler:daggerVersion",glide:"com.github∗∗《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》无偿开源徽信搜索公众号【编程进阶路】∗∗.bumptech.glide:glide:{daggerVersion}", glide : "com.github **《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》无偿开源 徽信搜索公众号【编程进阶路】** .bumptech.glide:glide:daggerVersion",glide:"com.github∗∗《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》无偿开源徽信搜索公众号【编程进阶路】∗∗.bumptech.glide:glide:{glideVersion}”,
glideCompiler : “com.github.bumptech.glide:compiler:glideVersion",buterKnife:"com.jakewharton:butterknife:{glideVersion}", buterKnife : "com.jakewharton:butterknife:glideVersion",buterKnife:"com.jakewharton:butterknife:{butterKnifeVersion}”,
butterKnifeCompiler : “com.jakewharton:butterknife-compiler:butterKnifeVersion",banner:"com.youth.banner:banner:{butterKnifeVersion}", banner : "com.youth.banner:banner:butterKnifeVersion",banner:"com.youth.banner:banner:{bannerVersion}”,
logger : “com.orhanobut:logger:loggerVersion",baseRecyclerViewAdapterHelper:"com.github.CymChad:BaseRecyclerViewAdapterHelper:{loggerVersion}", baseRecyclerViewAdapterHelper: "com.github.CymChad:BaseRecyclerViewAdapterHelper:loggerVersion",baseRecyclerViewAdapterHelper:"com.github.CymChad:BaseRecyclerViewAdapterHelper:{baseRecyclerViewAdapterHelperVersion}”,
dbflowProcessor : “com.github.Raizlabs.DBFlow:dbflow-processor:dbflowVersion",dbflowCore:"com.github.Raizlabs.DBFlow:dbflow−core:{dbflowVersion}", dbflowCore : "com.github.Raizlabs.DBFlow:dbflow-core:dbflowVersion",dbflowCore:"com.github.Raizlabs.DBFlow:dbflow−core:{dbflowVersion}”,
dbflow : “com.github.Raizlabs.DBFlow:dbflow:dbflowVersion",dbflowRx2:"com.github.Raizlabs.DBFlow:dbflow−rx2:{dbflowVersion}", dbflowRx2 : "com.github.Raizlabs.DBFlow:dbflow-rx2:dbflowVersion",dbflowRx2:"com.github.Raizlabs.DBFlow:dbflow−rx2:{dbflowVersion}”,
]

}

版本号和具体依赖地址也分开了,更加便于管理。 其中除了依赖的地址,所有的变量名都是随便取的。app 对应于项目module app 里的依赖,当然还有 data,domin,common 三个 module 的依赖,声明方式跟 app 一样,只是我还没用到所以没写。

2、声明创建的文件

在项目的 build.gradle 第一行加上这行代码: apply from: "buildsystem/dependences.gradle"

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QMIvcxti-1651549340678)(https://user-gold-cdn.xitu.io/2018/11/3/166d7deec3c3dafb?imageView2/0/w/1280/h/960/ignore-error/1)]

声明之后即可在各个 module 中的 build.gradle 中愉快的引用啦。

3、在具体位置引用

打开 app 下的 build.gradle ,在需要用到的地方先声明一个变量:

def appDependence = rootProject.ext.app

rootProject 是什么意思我还不太明白,猜测应该是取到项目的根目录。 还记得 dependences.gradle 文件最外层是 ext 节点吗? rootProject.ext 相当于取到了我们提取文件的根节点,rootProject.ext.app 即取到了 app 节点声明的数组。然后再将它赋值给 appDependence 变量。

接下来就可以放心使用啦

implementation appDependence.recyclerView
implementation appDependence.rxjava

贴出 app/build.gradle 代码:

apply plugin: ‘com.android.application’

android {
compileSdkVersion rootProject.ext.androidCompileSdkVersion
buildToolsVersion rootProject.ext.androidBuildToolsVersion
defaultConfig {
applicationId “com.cachecats.meituan”
minSdkVersion rootProject.ext.androidMinSdkVersion
targetSdkVersion rootProject.ext.androidTargetSdkVersion
versionCode 1
versionName “1.0”
testInstrumentationRunner “android.support.test.runner.AndroidJUnitRunner”
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile(‘proguard-android.txt’), ‘proguard-rules.pro’
}
}

lintOptions {
abortOnError false
}

//支持Java8特性
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}

dependencies {

def appDependence = rootProject.ext.app

implementation project(‘:common’)
implementation project(‘:data’)
implementation project(‘:domin’)
implementation fileTree(include: [‘*.jar’], dir: ‘libs’)
implementation ‘com.android.support:appcompat-v7:27.0.2’
implementation ‘com.android.support.constraint:constraint-layout:1.0.2’
testImplementation ‘junit:junit:4.12’
androidTestImplementation ‘com.android.support.test🏃1.0.1’
androidTestImplementation ‘com.android.support.test.espresso:espresso-core:3.0.1’

//denpendence
implementation appDependence.recyclerView
implementation appDependence.rxjava
implementation appDependence.rxandroid
implementation appDependence.dagger
annotationProcessor appDependence.daggerCompiler
implementation appDependence.glide
annotationProcessor appDependence.glideCompiler
implementation appDependence.buterKnife
annotationProcessor appDependence.butterKnifeCompiler
implementation appDependence.banner
implementation appDependence.logger
implementation appDependence.baseRecyclerViewAdapterHelper
implementation appDependence.dbflowCore
implementation appDependence.dbflowRx2
implementation appDependence.dbflow
annotationProcessor appDependence.dbflowProcessor
entation appDependence.dbflowRx2
implementation appDependence.dbflow
annotationProcessor appDependence.dbflowProcessor

Android组件化开发 阅读详情

相关推荐

Android技术深度探索:架构演进、性能优化与前沿实践

美团App研发团队招聘Android开发工程师,专注于客户端架构优化和用户体验提升。岗位职责包括基础设施搭建、架构设计、技术路线规划等。要求精通Android开发、设计模式、性能优化和插件化技术,优先考虑有开源贡献或跨端经验的候选人。该职位提供参与亿级用户产品开发、提升行业开发效率的机会,可与顶尖技术团队合作。文章还系统探讨了Android架构演进、性能优化、Gradle编译、动态化技术等核心内容,展示了美团在移动开发领域的技术深度和实践经验。

郑伟强dev的专栏 126

DBFlow(4.2)新版使用

DBFlow新版使用 一、DBFlow4.2.4介绍 DBFlow是一个基于AnnotationProcessing(注解处理器)的ORM框架。此框架设计为了速度、性能和可用性。消除了大量死板的数据库代码,取而代之的是强大而又简介的API接口。 二、特性: 1、无缝支持多个数据库; 2、使用annotation processing提高速度; 3、ModelCon...

weixin_30362083的博客 778

逆向分析TikTok的Cronet网络库:定位libsscronet.so并Hook关键SSL函数

本文深入探讨了逆向分析TikTok的Cronet网络库的技术细节,重点介绍了如何定位libsscronet.so并Hook关键SSL函数。通过Java到Native的调用链路追踪、So库定位策略和SSL验证函数的动态Hook技巧,帮助开发者突破定制化网络库的协议加密防护,实现流量解密和协议分析。

weixin_27875131的博客 970

Android中数据库操作框架DBFlow介绍与使用

首先添加依赖: annotationProcessor 'com.github.Raizlabs.DBFlow:dbflow-processor:4.2.4' compile 'com.github.Raizlabs.DBFlow:dbflow-core:4.2.4' compile 'com.github.Raizlabs.DBFlow:dbflow:4.2.4' 需要创建一

MG_ZXC的专栏 1404

STRING数据库的蛋白质相互作用(PPI)网络分析

在转录调控相关的文献中,我们经常能够看到这样的蛋白质相互作用网络(protein protein interaction network,PPI network)。具体而言,这些相关的文献中首先通过RNA-seq、表达谱芯片或者蛋白质组分析等,找到了在不同分组样本间一系列的差异表达基因或蛋白。

weixin_43029125的博客 9455

STM32F407硬件IIC驱动OLED避坑实录:从‘不显示’到‘稳定刷屏’的完整调试过程

本文详细记录了使用STM32F407硬件IIC驱动OLED屏幕的完整调试过程,从初始的‘不显示’问题到最终实现‘稳定刷屏’。文章涵盖了硬件接线、I2C外设配置、常见问题排查及性能优化技巧,特别针对STM32标准库开发中的难点提供了实用解决方案,是嵌入式开发者驱动OLED屏幕的实用指南。

weixin_30315723的博客 303

dbflow android,我喜欢 Android中好用又实惠的DBFlow

引入DBflow库1 添加仓库托管地址allprojects{repositories{google()jcenter()maven{url"https://jitpack.io"}//DBFlow}}2 在moudel的build.gradle中添加#定义DBFlow版本defdbflow_version="4.2.4"#androidstudio3.1版本compile...

weixin_32659481的博客 379

MyBatis示例

MyBatis示例 基本示例 环境准备 jdk : 1.8.0 MyEclipse MySQL MyBatis-3.4.6.jar 新建JavaWeb Project 命名:mybatis 导入JAR包或添加POM.xml中添加依赖 MyBatis_config.xml <?xml version="1.0" encoding=&a

走在命运的左岸 721

DBFlow使用指南

DBFlow是一个强大且高效的Android数据库框架,由Raizlabs开发并维护。它采用了类型安全的方式以及强大的SQL语句生成功能,大大简化了Android应用中的数据库操作流程。DBFlow通过注解处理器在编译时生成必要的数据访问对象(DAOs),从而减少运行时错误,提升开发效率。它的设计初衷是为了提供一个更简洁、直观的方式来处理SQLite数据库。 ## 项目快速启动 ### 添加依...

gitblog_00548的博客 559

AI图像识别在临电配电箱安全检测中的应用与实践

计算机视觉与AI图像识别技术正逐步改变传统工业检测方式。通过深度学习模型如YOLOv5和ResNet,系统能自动识别设备元件并分析其状态,大幅提升检测效率和准确性。这种技术特别适用于需要严格遵循行业标准的场景,如临电配电箱的安全检测。将《施工现场临时用电安全技术规范》等条文转化为可量化的算法,AI系统能自动检查PE线连接、漏保功能等关键项目。实际应用表明,此类解决方案可使电气事故率下降90%以上,同时检测耗时缩短80%,为工地安全提供了智能化保障。

weixin_29042035的博客 328

旅行青蛙破解汉化教程——蹭个热度

汉化破解版资源(无尽三叶草与点券): https://github.com/wisdombyzf/lxqw/blob/master/lxqw_zf.apk 截图: 破解方法: 工具: 1,APKIDE https://www.pd521.com/thread-818-1-2.html 2,dnspy https://down.52pojie.

github_38838414的博客 3785

DBFlow使用时,发生XXX_Table找不到

今天遇到一个比较神奇的问题,可能是之前使用DBFlow已经是很长时间了,但是目前DBFlow已经更新到了5.0.0-alpha2,但是我仍旧使用了4.2.4版本。

平哥的专栏 1265

qtcreator使用远程服务器编译代码

我并没有找到很好的windows上可以用的rsync工具,最后是装了wsl来调用rsync同步到代码后,在用ssh调用linux命令来编译的。安装wsl安装ubuntu启动wsl然后把windows里的ssh文件证书和配置复制到wsl里同时config的key目录需要改一下,这样就可以登录服务器了然后在home目录创建build.sh进行远程编译。

习惯就好zz的专栏 1381

MultiChannelPackageTool与美团Walle对比:如何选择最适合你的Android多渠道打包工具

在Android应用开发中,**多渠道打包工具**是每个开发者都需要面对的重要环节。面对国内众多的应用市场,如何高效、快速地为不同渠道生成专属的APK包,同时保证渠道信息的准确追踪,这是每个应用都需要解决的核心问题。本文将深入对比两款优秀的Android多渠道打包工具:**MultiChannelPackageTool**和**美团Walle**,帮助你做出明智的选择。 ## 📊 多渠道打包工

gitblog_00818的博客 487

Unity内存优化:从崩溃到流畅的终极指南

Emscripten 为 WebAssembly 设定的内存布局(Static、Stack 和 Heap)为开发者提供了一个清晰的内存管理框架。理解这些内存区域的特性和用途,有助于开发者在 WebGL 项目中更有效地管理内存,优化性能,减少内存使用峰值。在 Unity WebGL 中,Dynamic Memory 是 UnityHeap 的主要组成部分,负责存储游戏运行时所需的各种数据。Dynamic Memory 主要分为两类:Managed Memory 和 Native Memory。

本博客聚焦游戏开发技巧、创业实战心得及大学热门课程干货。这里既有技术深度,也有思维广度,无论你是开发者、创业者还是高校学子,都能在这里找到适合自己的成长之路! 358

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

技术深度解析:美团Walle在Android多渠道打包架构优化中的应用实践

美团Walle作为Android多渠道打包的架构解决方案,通过创新的APK签名块技术重新定义了移动应用分发流程。该工具针对传统打包方案在效率、兼容性和维护成本方面的痛点,提供了完整的工程化实施路径,为技术决策者提供了可量化的ROI分析框架。 ## 技术背景与行业痛点分析 Android应用多渠道分发是移动互联网时代的核心需求,传统打包方案面临三大技术挑战: 1. **构建效率瓶颈**:基于G

gitblog_00337的博客 423

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

终极Android多渠道打包指南:美团Walle的10倍效率提升技巧 [特殊字符]

Walle是美团点评开源的一款革命性Android多渠道打包工具,在大型项目应用实践中展现出了惊人的效率优势。这款工具专为Android V2签名方案设计,通过创新的APK Signature Block区块写入技术,彻底改变了传统多渠道打包的低效模式。 ## 🤔 为什么Walle能实现10倍效率提升? 传统的多渠道打包方式需要重新编译整个APK,而Walle采用全新的渠道包生成方案。它直接

gitblog_00362的博客 430

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

WMRouter:美团外卖Android开源路由框架(1)

由于本文罗列的知识点是根据我自身总结出来的,并且由于本人水平有限,无法全部提及,欢迎大神们能补充~将来我会对上面的知识点一个一个深入学习,也希望有童鞋跟我一起学习,一起进阶。提升架构认知不是一蹴而就的,它离不开刻意学习和思考。**这里,笔者分享一份从架构哲学的层面来剖析的视频及资料分享给大家,**梳理了多年的架构经验,筹备近1个月最新录制的,相信这份视频能给你带来不一样的启发、收获。,第一时间获取最新知识点Android架构师之路很漫长,一起共勉吧!

2401_84149592的博客 868

2024年最全Android 快速发布开源项目到jcenter,2024年最新美团技术面试流程

由于篇幅限制,文档的详解资料太全面,细节内容太多,所以只把部分知识点截图出来粗略的介绍,每个小节点里面都有更细化的内容!由于整个文档比较全面,内容比较多,篇幅不允许,下面以截图方式展示。网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。需要这份系统化学习资料的朋友,可以戳这里获取一个人可以走的很快,但一群人才能走的更远!

2301_82241983的博客 351

Android面试全攻略:从Java基础到架构设计,助你斩获心仪Offer

在移动开发领域,扎实的技术基础和清晰的架构思维是开发者职业发展的核心。理解计算机基础原理,如JVM内存模型与垃圾回收机制,是构建高性能应用的基石。掌握Android平台核心技术,包括四大组件生命周期、View渲染流程及事件分发机制,能有效解决UI卡顿等性能问题。在工程实践中,性能优化和架构设计体现了开发者的综合能力,例如通过启动优化、内存管理及合理的组件化方案,可以显著提升应用质量与团队协作效率。这些技术最终服务于构建稳定、高效的大型应用,也是当前Android面试中的高频考点和深度考察方向。

weixin_33692284的博客 384

SignatureTools开源工具深度解析:Android APK签名与渠道管理的高效解决方案

在Android应用分发生态中,APK签名是确保应用完整性和安全性的关键环节。传统签名流程依赖复杂的命令行操作,开发者在面对多渠道打包、版本迭代和不同签名方案时,往往需要投入大量时间处理繁琐的配置和验证工作。SignatureTools作为一款基于JavaFx开发的开源APK签名工具,通过图形化界面将复杂的签名流程封装为直观的四步操作,为开发者提供了专业级的企业签名解决方案。 ## 1. 核心优

gitblog_00524的博客 437
上一篇: android——dialog对话框总结
下一篇: Android启动过程分析
Android_1314
博客等级 码龄5年 1粉丝 70原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值