独立双端App《瓦格相机》的开发过程分享

2024-09-06 22:58

本文主要是介绍独立双端App《瓦格相机》的开发过程分享,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

前言

Hello大家好,我是灯灯,独立开发者灯灯,也是天天学藏语的灯灯,哈哈哈...
好了屁话少说,今天和大家分享一下最近自己独立制作一款应用的经验历程,希望能对刚刚起步的新手们、还有独立开发者们有所帮助。

什么样的应用

我想做的是一款能够将照片转换成文字拼成的图片应用,也就是,图片中的每一个像素点都将会被文字取代,同时对应色彩、密集程度等。
之所以想做这样的应用是因为早在我高中的时候,我就用VB做过一个类似的应用,当时朋友们很喜欢,经常问我要这个软件。如今PC时代已经离我而去,自然就想在移动平台也做一个。
其实之前我已经用Python脚本写了一个,效果还算不错,大家可以前往使用:
图片转文字Python版本GitHub

构思与设计

软件的需求很简单,因为是自己独立开发而且软件结构比较简单,就没有设计流程图之类的。
初步构思,软件只有几个界面:

  • 首页:让用户打开图片或者拍照
  • 素材库:瀑布流,提供一些素材
  • 裁剪:让用户对图片进行裁剪
  • 设置:让用户对要生成图片的文字进行输入
  • 生成:得出结果,保存、社交分享

所以整体还是很简单的,核心技术肯定是生成页面,其余只是布局和第三方开源库(原谅我这么懒)的问题。
然后,设计师登场(还是我)。
我不怎么会用Sketch,于是还是用PS进行设计,一开始想采用唯美清新文艺小青年风格,整体浅绿色调,给人一种马卡龙配色的感觉。等我设计完,在不同手机查看的时候发现由于色温关系,不同手机显示效果差异极大,非常恶心。
一怒之下重新设计,这一次决定采用白色、橙色为主色调的卡通风格。


效果图


图标是自己用PS绘制的,采用了MBE风格,形象就是一只照相机...
至于名字,我一贯地总是想到什么就是什么。

技术方案

设计完后没有急着立马动手,先想了下每个页面的技术方案。

  • 首页:毫无难度
  • 素材库:collectionView,自己再写个简单的php接口
  • 裁剪:不会,求救GitHub开源库,我坚信一定有很多
  • 设置:毫无难度
  • 生成:算法已经用Python做过了,照搬就行了
  • 分享:友盟或者ShareSDK

于是,经过我在GitHub上苦苦的搜寻,和一遍遍地Demo尝试,最终确定下来用这些开源库:

  • 安卓:
    android-gif-drawable 用来显示Gif加载动画
    SimpleCropView 用来裁剪照片
    PhotoView 用来全屏显示图片
    ShareSDK 用来分享,友盟的AndroidStudio不支持
  • iOS:
    TKImageView 用来裁剪照片
    UIImage-Resize 用来缩放图片
    uiimage-from-animated-gif 用来显示加载动画
    友盟分享 社交分享

着手开发

这一次我没有先选择开发iOS端(以往总是先做iOS),选择了先做Android,原因是一开始测试核心代码的时候iOS没有写成功,安卓成功了。
先把PS设计图用CutterMan(切图神器)生成切图,然后就动手开发。
安卓端使用AndroidStudio开发,一遍遍构建Activity,构建xml布局,码字、测试...
遇到的棘手问题又:

  • 图像在Activity间的传递问题,我转换成bytes传递,经常发生崩溃的情况,不得已全部将图片压缩后再传输,知道原因的朋友可以留言告诉我下。
  • 像素读取的时候的横竖问题,x和y轴总是搞反,大家可以参考python版代码看下到底该如何写宽高。
  • ShareSDK的集成问题,由于不需要它的UI,采用直接分享接口,数据传递遇到了很多bug,总之,在AndroidStudio上,友盟和sharesdk都一塌糊涂,大家慎用。

安卓端基本做完后,着手开发iOS,第一步还是去解决核心图像算法,这一次终于成功解决,而且iOS生成的图片效果要比安卓好得多,不知道为什么。
iOS上的项目依赖我还是用的CocoaPods,暂时没有尝试其他的,代码采用OC。
然后开始搭建界面,我不喜欢用storyboard或者xib,所有界面都是用代码按照比例计算布局写的。
iOS上问题不大,比起安卓反而容易,前前后后安卓和iOS双端总共花了3天左右的时间完成。

上线之前的准备

不是开发完了就能发布的,还有很多很多事情要做。

  • 制作应用预览图(宣传图)
  • 申请分享需要的AppKey,包括微信、QQ、新浪
  • 制作简单的应用官网
  • 制作素材库需要的php接口

好在做这些事情已经得心应手,申请AppKey的过程提醒下大家:新浪最麻烦,需要demo、官网,其他的不需要demo和官网。


宣传图


自适应的“官网”,也就是下载页面 www.winterfeel.com/vug:


手机版官网

针对官网补充一些技巧,因为微信是无法直接下载apk和跳转AppStore的,所以在JS代码中我进行了检测,如果发现是微信,则弹出一个提示,引导用户用浏览器打开进行下载。

php接口由于接口简单,只是一个查询返回json,我就只用了原生php写了个select语句,没有采用任何框架。

结束的话

至此,这款小小的独立App已经差不多开发完成了,然后就是提交给各大应用商店以及苹果了,苹果总是很顺利的发布,安卓我就不想多说了,只上了应用宝和360。
整个软件可以说是很简单的小应用,但是开发中涉及到的问题还是很多的,尤其是作为独立开发者,所有的一切都得自己做的时候,还是很麻烦的。
我想,除了我这样闲的没事做的人应该也没有多少人会去做这样的一个应用吧,毕竟做完也没几个人下载,哈哈,毕竟

大四不考研,天天像过年

如果整个历程能够对大家所有帮助的话,希望大家支持下这个独立小应用。
如果你也喜欢自己做程序,如果你有好想法、缺伙伴,交个朋友一起玩!


个人微信,添加注明简书

瓦格相机 - 官方网站 欢迎大家下载试玩
GitHub Python版代码

这篇关于独立双端App《瓦格相机》的开发过程分享的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1143361

相关文章

SpringBoot 多环境开发实战(从配置、管理与控制)

《SpringBoot多环境开发实战(从配置、管理与控制)》本文详解SpringBoot多环境配置,涵盖单文件YAML、多文件模式、MavenProfile分组及激活策略,通过优先级控制灵活切换环境... 目录一、多环境开发基础(单文件 YAML 版)(一)配置原理与优势(二)实操示例二、多环境开发多文件版

使用docker搭建嵌入式Linux开发环境

《使用docker搭建嵌入式Linux开发环境》本文主要介绍了使用docker搭建嵌入式Linux开发环境,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面... 目录1、前言2、安装docker3、编写容器管理脚本4、创建容器1、前言在日常开发全志、rk等不同

ShardingProxy读写分离之原理、配置与实践过程

《ShardingProxy读写分离之原理、配置与实践过程》ShardingProxy是ApacheShardingSphere的数据库中间件,通过三层架构实现读写分离,解决高并发场景下数据库性能瓶... 目录一、ShardingProxy技术定位与读写分离核心价值1.1 技术定位1.2 读写分离核心价值二

MyBatis-plus处理存储json数据过程

《MyBatis-plus处理存储json数据过程》文章介绍MyBatis-Plus3.4.21处理对象与集合的差异:对象可用内置Handler配合autoResultMap,集合需自定义处理器继承F... 目录1、如果是对象2、如果需要转换的是List集合总结对象和集合分两种情况处理,目前我用的MP的版本

Java Kafka消费者实现过程

《JavaKafka消费者实现过程》Kafka消费者通过KafkaConsumer类实现,核心机制包括偏移量管理、消费者组协调、批量拉取消息及多线程处理,手动提交offset确保数据可靠性,自动提交... 目录基础KafkaConsumer类分析关键代码与核心算法2.1 订阅与分区分配2.2 拉取消息2.3

Python实战之SEO优化自动化工具开发指南

《Python实战之SEO优化自动化工具开发指南》在数字化营销时代,搜索引擎优化(SEO)已成为网站获取流量的重要手段,本文将带您使用Python开发一套完整的SEO自动化工具,需要的可以了解下... 目录前言项目概述技术栈选择核心模块实现1. 关键词研究模块2. 网站技术seo检测模块3. 内容优化分析模

Python内存优化的实战技巧分享

《Python内存优化的实战技巧分享》Python作为一门解释型语言,虽然在开发效率上有着显著优势,但在执行效率方面往往被诟病,然而,通过合理的内存优化策略,我们可以让Python程序的运行速度提升3... 目录前言python内存管理机制引用计数机制垃圾回收机制内存泄漏的常见原因1. 循环引用2. 全局变

基于Java开发一个极简版敏感词检测工具

《基于Java开发一个极简版敏感词检测工具》这篇文章主要为大家详细介绍了如何基于Java开发一个极简版敏感词检测工具,文中的示例代码简洁易懂,感兴趣的小伙伴可以跟随小编一起学习一下... 目录你是否还在为敏感词检测头疼一、极简版Java敏感词检测工具的3大核心优势1.1 优势1:DFA算法驱动,效率提升10

AOP编程的基本概念与idea编辑器的配合体验过程

《AOP编程的基本概念与idea编辑器的配合体验过程》文章简要介绍了AOP基础概念,包括Before/Around通知、PointCut切入点、Advice通知体、JoinPoint连接点等,说明它们... 目录BeforeAroundAdvise — 通知PointCut — 切入点Acpect — 切面

C++ STL-string类底层实现过程

《C++STL-string类底层实现过程》本文实现了一个简易的string类,涵盖动态数组存储、深拷贝机制、迭代器支持、容量调整、字符串修改、运算符重载等功能,模拟标准string核心特性,重点强... 目录实现框架一、默认成员函数1.默认构造函数2.构造函数3.拷贝构造函数(重点)4.赋值运算符重载函数