Kotlin 版本:AndroidProject-Kotlin
博客地址:但愿人长久,搬砖不再有
当我们日复一日年复一年的搬砖的时候,你是否曾想过提升一下开发效率,如果一个通用的架构摆在你的面前,你还会选择自己搭架构么,但是搭建出一个好的架构并非易事,有多少人愿意选择去做,还有多少人选择努力去做好,可能寥寥无几,但是你今天看到的,正是你所想要的,一个真正能解决你开发新项目时最大痛点的架构工程,你不需要再麻木 Copy 原有旧项目的代码,只需改动少量代码就能得到想要的效果,你会发现开发新项目其实是一件很快乐的事。
AndroidProject 已维护三年多的时间,几乎耗尽我所有的业余时间,里面的代码改了再改,改了又改,不断 Review、不断创新、不断改进、不断测试、不断优化,每天都在重复这些枯燥的步骤,但是只有这样才能把这件事做好,因为我相信把同样一件事重复做,迟早有一天可以做好。
已经正式投入到多个公司项目实践中,暂时没有发现任何问题或者 Bug,点击下载 Apk 体验,又或者扫码下载
App 优化:已经进行了全面的内存优化、布局优化、代码优化、瘦身优化,并且对结果进行了严格的长久测试。
代码规范:参照 Android SDK 、Support 源码和参考阿里巴巴的代码规范文档对代码进行命名,并对难点代码进行了注释,对重点代码进行了说明。
代码统一:对项目中常见的代码进行了封装,或是封装到基类中、或是封装到工具类中、或者封装到框架中,不追求过度封装,根据实际场景和代码维护性考虑,尽量保证同一个功能的代码在项目中不重复。
敏捷开发:一个 App 大概率会出现的功能已经写好,对项目的敏捷开发起到了至关重要的作用,可用于新项目开发或者旧项目重构,可将开发周期缩短近一半的时间,并且后续不会因为前期的快速开发而留下成堆的技术遗留问题,万丈高楼平地起,AndroidProject 属于基建工程,而在软件行业我们称之为技术中台。
无任何瑕疵:对小屏手机、全面屏手机、带虚拟按键手机进行了适配和优化,确保每一个界面细节都能处理到位、每一个功能细节都能符合大众的需求、乃至每一行代码都能贴合 Android 程序员的审美观。
兼容性优良:在此感谢开源道路上给予我支持和帮助的小伙伴,一个人一台机在兼容性面前无能为力,而在几百人几百台机面前却不是问题。如果没有这些的测试,有些问题我一个人可能这辈子都发现不了,纵使代码写得再好,逻辑再严谨,没有经过大众的验证,无异于纸上谈兵。
优秀的代码设计:AndroidProject 对 startActivityForResult 的设计进行了改良,使得可以直接在方法上传入监听对象,这样我们就不需要重写 onActivityResult 方法来拿到回调,另外原生的 startActivityForResult 还需要传 requestCode 参数,而 AndroidProject 会自动帮你生成这个 requestCode 码,并在 onActivityResult 进行判断,如果满足条件,那么就会回调外层传入的监听对象。然而这只是冰山一角,更多优秀的代码设计还需要你通过阅读 AndroidProject 源码的形式来发掘,在这里不再细说。
网络框架:EasyHttp (已集成)
权限框架:XXPermissions (已集成)
吐司框架:ToastUtils (已集成)
标题栏框架:TitleBar (已集成)
Gson 解析容错:GsonFactory (已集成)
Shape 框架:ShapeView (已集成)
悬浮窗框架:XToast (未集成)
国际化框架:MultiLanguages (未集成)
日志查看框架:Logcat (未集成)
Copyright 2018 Huang JinQun
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
先说一些题外话吧。这是小珂同学的处女作。可能写的不好,请各位读者见谅。我先讲讲我为什么要写博文,那应该也是机缘巧合,有一次。我问学长一个问题,学长发了一个连接给我,里面是一篇博客。那时我仅仅是看看,后来还有一个学长给我介绍了CSDN.NET。看了里面的文档,才有了自己写博客的想法。前两天。我才知道原来学长们从大一就開始写了。我非常遗憾我错过了好多时间。也非常幸运..........(万千感慨
关于 Android 项目 项目是保存源代码和资源文件的容器。 谷歌提供的 Android SDK 工具只能对具有固定目录结构的项目进行编译和打包。因此强烈建议使用 Eclipse + ADT 或者 android 命令创建 Android 项目。 你可以使用 Eclipse + ADT 创建三种项目,它们主要结构相同但功用不同,分别是 Android Projects、T
https://stackoverflow.com/questions/49834961/the-module-app-is-an-android-project-without-build-variants It's an old one, but a good'un, try File -> Invalidate Caches / Restart, failing that you could
在终端运行命令react-native run-android时报错Android project not found. Maybe run react-native android first? 我的问题是出在react-native的版本不对。解决办法: 打开终端,进入到项目的根目录 执行命令 react-native upgrade 根据提示一直输入y,回车。 重新输入命令react-nat
问题 ERROR: Unsupported method: AndroidProject.getVariantNames(). The version of Gradle you connect to does not support that method. To resolve the problem you can cha
在将react-native集成到现有的android项目中时,当项目集成完成,运行 “react-native run-android”时出现“ Android project not found,try 'react-native android' ”的提示,但是在运行了react-native android 之后还是不能完成编译打包。出现这个问题主要是因为android项目的目录结构跟re
最近在进行Android开发的过程中,发现自己在debug自己的项目的时候,出现了如下的错误: UnsupportedMethodException Unsupported method: AndroidProject.getPluginGeneration(). The version of Gradle you connect to does not support that method.
部分目录结构及文件说明 Unity基于Gradle进行apk、aar bundle等的构建,导出到AS也以gradle项目为主体 Unity 2019.3之后,导出的工程目录结构与之前有所区别 包含两个模块:UnityLibrary模块与Launcher模块 主要有三个gradle描述文件(gradle.build templates) 三个文件路径不同,文件名相同 root/build.grad
问题: Unable to get Gradle wrapper properties from D:\Android \Android project\Mobile Guard\gradle\wrapper\gradle-wrapper properties Would you like to recreate the wrapper using the latest supported Gra
自我介绍 项目经历 如何使用mysql的, 为什么不直接用mysql取代neo4j mysql 什么时候使用索引 如何建索引 分库分表 tcp为什么可靠 tcp的传输过程,保证 tcp的传输失败怎么办 osi模型 arq协议 滑动窗口 http 状态码 https 长连接短链接 ssl这么做的 认证 问了超多mysql和计网相关的八股 感觉答得不好,我是fw,gg 码题 缺失的第一个整数 一个多小
一面 项目登录注册是怎么实现的 数组和对象的api(Object.keys()) 防抖和节流 (写了防抖) 判断类型(手写 instanceof) 深浅拷贝 以及 在项目中的使用 居中的几种方式 react常用的api git的操作 (git merge rebase 两种代码合并方式区别) ts的使用 问了new的过程 反问: 技术栈?react,Umi... base北京 第一次面试比较紧张,
简单介绍一下实习经历 1.提到使用redis的Zset实现的排行榜,用了牛顿冷却算法,介绍一下具体怎么做的 2.看你项目用到了消息队列进行业务解耦,讲讲具体的业务场景 3.rocketmq在生产和消费者如何做到消息的唯一性,既不丢失也不重复,利用本身的机制能否实现这一点? 4.讲讲如何处理消息丢失、消息重复、消息积压 5.怎么保证缓存和数据库数据的一致性 6.简单描述下进程和线程的区别 7.一个进
更改历史 * 2017-11-12 高天阳 增加类比内容,更改页面格式 * 2017-7-15 高天阳 更改内容 * 2017-6-1 江伟 初始化文档 1 历史、现状和发展 1.1 历史 GitBook创建于2014年中期,致力于为文档,数字书写和出版创建一个现代化的简单解决方案。 我们已经开始构建一个开源的格式。哲学是简单到优雅的地步,消除内容创作者的分心和关
4.17 大约一个小时 jwt有哪几部分 jwt如何实现加密,你采用的什么加密算法 jwt如何传递用户信息,如何登陆验证 redis比mysql快多少 redis有哪几种数据结构 redis快的原因 (我说基于内存,内存本身数据存取比硬盘快很多,且cpu不是redis性能瓶颈,并采取IO多路复用机制,面试官:下去再了解一下单线程相关的,我,嗯) redis缓存一致性怎么解决的 为什么要删缓存不是更
但是我们是做测试开发的,回去可以多了解一下测开相关的知识。 这样子是不是凉了 测试开发 腾讯 阿里 字节 百度 美团
本文探讨一些mod_rewrite和URL匹配的技术细节。 内部处理 此模块的内部处理极为复杂,但是为了使一般用户避免犯低级错误,也让管理员能充分利用其功能,在此仍然做一下说明。 API阶段 首先,你必须了解Apache是分若干阶段来处理HTTP请求的。Apache API对每个阶段都提供了一个hook程序。mod_rewrite使用两个hook程序:其一,从URL到文件名的转换hook(用在读取