Android 项目从零到上线的全过程
来源:互联网 发布:淘宝申请退换货流程 编辑:程序博客网 时间:2024/06/06 16:27
原文地址;https://juejin.im/entry/59263d26a22b9d0057158b26
写在最前面
个人开发者的开发Android的热潮已过,目前实在不太适合个人开发者的生存。但是没事的时候运用新技术写点小软件,开源出来跟大家一起学习,一起营造一个好的开发环境。
软件立项及方向选择
因为自己的一个想法开始做这个项目,或者在实际开发中由产品经理立项。由于本人不会后端,所以选择的是三方开源API。
百度apistore——里面有很多可以用的API接口,有付费的也有免费的。
你也可以直接用Bmob后端云——一个强劲的后端,免去所有服务器端编码工作量
本软件包含两大模块
– 美拍视频 Api 取自 美拍Api
- 知乎日报 Api 取自 ZhihuDailyPurify
原型设计
墨刀——免费的移动应用原型与线框图工具
人人都是产品经理——产品经理、产品爱好者学习交流平台
UI设计
UI设计大家都知道PS或者coreldraw,当然作者只会切图。本项目全部运用Android material design设计风格
官方Material Design详细介绍文档:http://www.google.com/design/spec/material-design/introduction.html
框架的搭建
现在的MVP模式越来越流行。所以框架主体选用了MVP+RxJava+Retrofit+okhttp3
具体可查看:一个优秀的Android应用从建项目开始
开发
这个阶段是最简单的,详细怎么开发作者就不阐述了。在这里作者给出本项目所用到的东西:
– CoordinatorLayout——使用CoordinatorLayout打造各种炫酷的效果
– 【Android】Fragment懒加载和ViewPager的坑——Fragment懒加载
– Android开发人员不得不收集的代码(持续更新中)——Android工具类
– EasyRecyclerView——支持下拉上拉刷新等功能全面的RecyclerView
– 2016Android开源项目及库汇总——开源项目及库汇总
上线准备
1、各平台账号的申请
- 应用市场
对于个人开发者来说,Android App开发最麻烦的不是开发,而是各种应用商店的审核,广告平台的集成以及推广。由于只有一个人,所以必须所有的事情都自己做。而且对于个人来说,即便上述操作都完成了,如果应用商店不进行推荐,下载量也是迟迟起不来。毕竟不论软件好用与否,大家下载软件往往都是从下载量高到下载量低的。我的某些软件也是因为当初有应用商店与广告平台合作,会对特定广告平台的软件进行推广,而下载量暴增的。由于国家的实名制规定,很多的应用商店开始审核身份证了,需要身份证扫描件,照片等等,这个给个人开发者带来了很大的困扰。 - 登录及分享平台账号
分享和登录可单独集成,也可以使用sharesdk、友盟等三方工具。分享还好,但是微信登录必须要进行认证,而且要收取年费,对于个人开发者又是一大困扰。 - 统计
统计现在一般都是用友盟,没什么可说的了
2、官网以及运营
对于个人开发者而言,官网和运营肯定是越简单越好,除非你这个项目有很好的商业模式。所以一般就自己进行一个简单的新媒体运营,这里为大家推荐这篇文章:新媒体运营微信编辑人员必备工具(打包免费送)
作者一般用的是:MAKA——一分钟上手,五分钟创作H5,超越PPT的极简操作方式!单页可以用来做官网。
3、代码混淆
为什么需要代码混淆呢?原因很简单,你的apk很容易被反编译出来,你写的代码都会被看到,因此我们需要在编译过程中对代码进行一定程度的混淆,使得别人不能反编译不出你的代码。本文因为是开源,所以没做混淆处理。下面介绍下具体混淆过程:新建一个项目,Android Studio默认关闭代码混淆开关,在build.gradle文件中,如下图所示的minifyEnabled 开关,因此如果需要混淆代码,需将false改为true,然后在文件proguard-rules.pro添加具体混淆规则。
-dontskipnonpubliclibraryclasses # 不忽略非公共的库类-optimizationpasses 5 # 指定代码的压缩级别-dontusemixedcaseclassnames # 是否使用大小写混合-dontpreverify # 混淆时是否做预校验-verbose # 混淆时是否记录日志-keepattributes *Annotation* # 保持注解-ignorewarning # 忽略警告-dontoptimize # 优化不优化输入的类文件-optimizations !code/simplification/arithmetic,!field/*,!class/merging/* # 混淆时所采用的算法#保持哪些类不被混淆-keep public class * extends android.app.Activity-keep public class * extends android.app.Application-keep public class * extends android.app.Service-keep public class * extends android.content.BroadcastReceiver-keep public class * extends android.content.ContentProvider-keep public class * extends android.app.backup.BackupAgentHelper-keep public class * extends android.preference.Preference-keep public class com.android.vending.licensing.ILicensingService#生成日志数据,gradle build时在本项目根目录输出-dump class_files.txt #apk包内所有class的内部结构-printseeds seeds.txt #未混淆的类和成员-printusage unused.txt #打印未被使用的代码-printmapping mapping.txt #混淆前后的映射-keep public class * extends android.support.** #如果有引用v4或者v7包,需添加-libraryjars libs/xxx.jar #混淆第三方jar包,其中xxx为jar包名-keep class com.xxx.**{*;} #不混淆某个包内的所有文件-dontwarn com.xxx** #忽略某个包的警告-keepattributes Signature #不混淆泛型-keepnames class * implements java.io.Serializable #不混淆Serializable-keepclassmembers class **.R$* { #不混淆资源类public static <fields>;}-keepclasseswithmembernames class * { # 保持 native 方法不被混淆native <methods>;}-keepclasseswithmembers class * { # 保持自定义控件类不被混淆public <init>(android.content.Context, android.util.AttributeSet);}-keepclasseswithmembers class * { # 保持自定义控件类不被混淆public <init>(android.content.Context, android.util.AttributeSet, int);}-keepclassmembers class * extends android.app.Activity { # 保持自定义控件类不被混淆public void *(android.view.View);}-keepclassmembers enum * { # 保持枚举 enum 类不被混淆public static **[] values();public static ** valueOf(java.lang.String);}-keep class * implements android.os.Parcelable { # 保持 Parcelable 不被混淆public static final android.os.Parcelable$Creator *;}
3、打包上传市场
这阶段主要注意的就是各个平台的审核标准,说实话对于个人开发者,各个平台都不是很友好,很多限制。这个就需要自己慢慢琢磨了。
写到最后
以上经供参考,有不对的地方提出来大家一起探讨。
APK下载地址:http://pan.baidu.com/s/1pLKZq0z
最后给出github地址,给个star支持下作者。谢谢!
https://github.com/Rance935/BeautyPaPa
本文作者:Rance935本文出处:Android项目从零到上线的全过程转载请在开头注明作者详细信息和本文出处
欢迎关注我的微信公众号和QQ群,分享Android 开发和互联网内容
Android技术分享:群号534813930
微信号:androidparks
公众号:AndroidParks
- android项目从零到上线全过程
- Android项目从零到上线的全过程
- Android 项目从零到上线的全过程
- android项目管理(从入公司到项目上线)
- 一个APP想法,如何做到从想法到上线的全过程操作
- 《Android Studio开发实战 从零基础到App上线》出版后记
- 《Android Studio开发实战 从零基础到App上线》资源下载和内容勘误
- 《Android Studio开发实战 从零基础到App上线》源码运行问题解答
- 项目从计划到上线的大概流程
- 如何让一个网站从零到可以上线访问
- 记一个自己健康项目上线的全过程记
- Android源码从下载到编译全过程
- 从eclipse到应用商城 —Android项目混淆签名加固打包上线全流程
- Android项目从立项到上线——修仙之路
- [Android入门]从零构建Android app之天气——2.托管项目到GitHub
- 从写项目到部署linux服务器全过程-linux下tomcat的安装篇
- 从写项目到部署linux服务器全过程-linux下tomcat的集群配置篇
- 从零快速搭建Android项目
- C语言程序设计(26)
- 神经网络梯度与归一化问题总结+highway network、ResNet的思考
- bugku ctf平台之sql注入1 write up
- DOM
- 第七讲 Spring MVC中AJAX和JSON的处理
- Android 项目从零到上线的全过程
- Linux vmstat命令实战详解
- 《UNIX网络编程 卷1》 笔记: 使用poll函数的单进程TCP回射服务器程序
- id生成策略-(xml、annotation)-4
- 知识图谱的笔记之一(1)
- 一步步学习kotlin for android(一)配置kotlin
- Java基础
- ADAS(2) 各功能模块介绍
- java编程思想阅读笔记之造型检查