我一直用c/c++做开发,直到2016年都没有想过会有一天,强迫自己去学习java+android开发,但是,自己的房子装修完成后,打算搞一套家用文件服务器,用做家庭影院和文件备份,一开始想直接买NAS的,但是2盘位以上的NAS价格也太离谱了,而且性能差,操作系统用的不知道是Linux还是BSD UNIX,这要是底层出个漏洞,比如UPNP远程访问漏洞什么的,根本不会及时修复,而且它的应用端整个一全家桶,对我这样对家庭数据安全,对程序简洁要求高的用户,完全不及格。对比了 SMB NFS FTP HTTP各种协议后,决定采用windows平台,自己开发一套基于FTP的家庭影院和文件备份系统,最开始,因为windows平台的ftp实现已经很成熟,想找点开源代码,去掉无用的功能,做个简单安全的ftp服务内核,结果除了庞大的Filezilla等跨平台软件,其他能下到的代码,不是unicode编译通不过,要么是采用异步实现,不支持utf-8,修改这些代码的时间,足够我从头开发一套了,废话到这里,windows平台下的服务器软件,客户端点播软件全部实现,下载用浏览器或者免费的 FTP客户端都可以,播放可以用vlc,mplayer等支持流播放的第三方软件,很完美,但是移动端就比较麻烦了,尼玛,我没做过移动平台的开发啊,根本不懂java.

找人开发吧,这后续升级什么的无底洞,终归还是要自己懂才可以,于是硬着头皮准备学习移动平台的开发,按理说,ios因为支持object-c开发,是比较适合我们这些学c++的,但是,但是尼玛的,我没有苹果手机,没有苹果笔记本,没有苹果开发者账户啊...... 我家都是android机器啊。 为了家里没有的硬件,花几万去买一套做开发,开发完了家里都要换水果,这代价太大。因此还是加点难度,学习java + android吧,我就这么下水了。

下了电子书,可没有感觉有没有,书非借不能读也,这话很有道理,于是跑图书馆,找了本java入门的大块头开读,打死你都不信,一共5个半小时,我把整本大块头的java入门给看完看懂了,除了一些有些偏门的东西没搞明白,基本看懂了。 5个半小时,还有比我快的吗? 这整个就是c++的子集,去掉指针和内存操作,去掉多重继承等,就是一个java。

看懂了java还是远远不够,android开发,我连用什么开发工具都没搞清楚,搜了搜,好像全世界都在用android studio,然后搜索的结果还提示我这东西会被墙,要开vpn什么的,可是问题是,我根本没用什么vpn,直接用浏览器就能下了,可下完了吓我一跳,尼玛啊,我下的是个接近2G的安装文件,不能不佩服google的CDN配置,当然也许是什么云,反正在GOOGLE被墙的情况下,我完整下到了as,根本没有遇到网络上个各种问题,很轻松就下完了,安装什么的就不说了。打开android studio,我了个去啊,老子i7 + 4g内存的机器,除了没有上ssd,竟然好半天才打开界面,visual studio那种超级恐龙都没这么长的载入时间啊。然后创建虚拟机,要崩溃啊,快2个小时,这都什么废材啊,期间一度怀疑系统挂了,可是打开管理,发现一直在跑,泪崩。

有了开发工具,新建一个最简单的项目,还是一头雾水,动不动就联网更新gradle, gradle是什么鬼啊,然后,然后呢,居然没有像visual stuio那种直接在界面上布局的,要自己在对应的xml文件里做布局,看了半天也没高清楚as项目的布局结构,然后整整一个 星期都在研究这个android studio的项目构成和布局,结合网上能找到的小项目,不断修改测试,折腾了10来天,基本有个条条框框了,这android java开发就象搭积木,最基本的积木系统已经给你提供了 ,你 import就可以,想c/c++那样关注性能,从底层开发,门都没有。然后有些系统没提供的积木,我们可以找第三方实现,例如 apache,然后呢, 这个java很奇怪,你声明了一个 局部积木,它是不会自动初始化的 【构建】,需要你new或者通过赋值,才变成具体对象,否则会抛异常,我在这里栽了个大坑,一直用c++思维来测试java,然后被搞得七荤八素。 还有个奇怪的东东,垃圾是 系统自动处理的,activity会在看不到的时候,所有对象可能被系统自动给destroy释放回收了,这真是太难想象了,老子想在后台运行,你给老子自动关闭,不抓狂才怪了,但是移动平台就是这样,所以要换思路,每次create都应该当作全新的 开始,跟往事干杯。还有android studio 创造了一大堆的新单词,看的我云里雾里,你就不能学学visual studio吗。

光写hello world是不会进步的,还是直接上吧,网上下了不知道谁写的FTP客户端,想导入android studio,尼玛,坑爹哦,导入了无数次,编译都是某些库不存在,看看 别人的评论,都是用eclipse,说好用 ,可为什么,项目可以导入,库无法导入?版本 太低?然后网上下了 最新版本,还是不行,需要自己手动添加LIB,而不是主动导入。 折腾了半天,突然发现,原来项目,库是在 lib下,而as是默认libs,是不是这原因,加个s,东方红,太阳升,项目成功导入并编译通过,可还是不放心,人家的 代码,万一这库里放点自己的味精,那就把我害惨了,因此还是下了官方的LIB,折腾了一点时间把它给替换了。

作者也真够诚实的,说写的代码没有在机器上测试,只是估计没问题。尼玛,能没问题吗,一堆问题,没有端口,目录不会切换,乱码...... 好在咱家的ftp服务器是自己写的,因此log了所有从手机端发送的数据和错误,很快就定位到错误所在,接下来就很简单了 ,根据服务器端的日志,调整加密方法,获取方法,调整编码格式。。。。。。

2个星期后,移动端的雏形完成,然后再移动端,被用户选择流播放器给整死了 ,由于系统自带的播放器不支持ftp播放,我们需要第三方播放器支持,在论坛发了帖子,可回答和网络上基本相同,问题是 相同的代码我这里就是不行,需要一个intent + chooser,  intent.setdata,intent.settype,intent.setdataandtype, 我承认我用c++的思维来认识这几个函数的 ,以为是并列的,实际是覆盖,因此测试了半天,不是不会出选择框,就是无法传递url, 直到今天在人行道前停车给老太太让行,才突然醒悟到,这会不会和网上代码写的 不同,方法是相互覆盖的,一测试,果然,至此,我的移动平台开发顺利毕业。

前前后后搞了接近一个月,移动平台这么点东西,代价太大了,了解也不深,但是至少目前,我对android平台的java搭积木方式开发比较反感的,这样的代码,性能无论如何好不到哪里去,所以只能靠堆硬件啊,说实话,我很不喜欢这样的平台,以后也不想投入太多的精力到android,这个平台的积木一直在更新,甚至是布局和运行框架几个版本也不同,学习成本太高,除了大公司,我觉得个人还是别太投入了 ,我相信有一天,会有一个支持native模式运行的移动平台崛起。

从c++到java+android相关推荐

  1. java/android 设计模式学习笔记(1)--- 单例模式

    前段时间公司一些同事在讨论单例模式(我是最渣的一个,都插不上嘴 T__T ),这个模式使用的频率很高,也可能是很多人最熟悉的设计模式,当然单例模式也算是最简单的设计模式之一吧,简单归简单,但是在实际使 ...

  2. 性能优化之Java(Android)代码优化

    最新最准确内容建议直接访问原文:性能优化之Java(Android)代码优化 本文为Android性能优化的第三篇--Java(Android)代码优化.主要介绍Java代码中性能优化方式及网络优化, ...

  3. 玩转java(Android)注解

    2019独角兽企业重金招聘Python工程师标准>>> 玩转java(Android)注解 1. java标准(原生)注解概览 Java API 中,在java.lang.java. ...

  4. 浅谈Java/Android下的注解

    什么是注解 java.lang.annotation,接口 Annotation,在JDK5.0及以后版本引入. 注解是代码里的特殊标记,这些标记可以在编译.类加载.运行时被读取,并执行相应的处理.通 ...

  5. java Android版_java-Android系统版本

    在我的Moto Maxx& Moto Razr HD(可能是所有Moto设备),"关于电话"设置中有一个条目指出了系统版本.我正在编写一个可从手机中提取此信息的应用程序,但 ...

  6. java aes密钥生成_如何在Java(Android)中生成与.Net中相同的AES密钥?

    我需要从.Net WebService提供的salt和密码生成 Java( Android)中的AES密钥.我需要使用与.net生成的密钥相同的密钥和相同的密码和盐(使用Rfc2898DeriveBy ...

  7. Java/Android引用类型及其使用分析

    Java/Android中有四种引用类型,分别是: Strong reference     - 强引用 Soft Reference        - 软引用 Weak Reference     ...

  8. android 生成泛型对象,java android解析多层含有泛型对象的json数据获取不到泛型类型解析失败解决办法...

    ####问题描述 * java 解析多层含有泛型对象的json数据获取不到泛型类型 * 如果将泛型改成实际的类型就能正常解析 * 如果不改成实际的类型泛型数据被解析成com.google.gson.i ...

  9. android locknow,java – Android DevicePolicyManager lockNow()

    我是Android开发的新手,这就是我开门的原因.我希望应用程序作为服务运行,并监视SMS.如果收到特定的SMS消息,它将锁定电话(就像锁定期限已过期一样).有点像遥控锁. 我使用DevicePoli ...

  10. Java(Android)游戏开发框架LGame-0.2.7发布

    Java(Android)游戏开发框架LGame-0.2.7发布 2010-08-19更新内容: 1.针对Android版增加了多点触摸支持. 2.增加了一组模拟按钮,以Screen实现Emulato ...

最新文章

  1. eplan和西门子plc的对接_玩转西门子全集成自动化之TIA Selection Tool
  2. 006_JDK的Number派生类对Comparable接口的实现
  3. java文件与流_Java文件和流深入
  4. 首度揭秘:腾讯敏捷研发和极速交付破局之道
  5. 验证码之字符的特征提取
  6. jvm系列(二):JVM内存结构
  7. net start zabbix agent 服务没有相应控制功能_一步到位,服务器监控就是这么简单...
  8. cli parser_Java命令行界面(第27部分):cli-parser
  9. leetcode 503. 下一个更大元素 II(单调栈)
  10. python读取大文件太慢_强悍的Python读取大文件的解决方案
  11. SAP-MM-代码大全
  12. 过完双11,我去闲鱼当二道贩子
  13. 汪光焘:中国城市交通问题、对策与理论需求
  14. 千里挑一!玻色量子获金鸡湖创业大赛人工智能赛道冠军
  15. oracle客户端12560,windows下 sqlplus / as sysdba 报ora-12560的终极解决方法
  16. 计算机及其应用本课程,北京08自考计算机及应用(独本)课程设置
  17. 基于JavaWeb的网页版邮箱系统设计与实现
  18. 安卓P 刘海屏的适配
  19. 如何在dw上编写php_怎么在dw打开php项目
  20. 虚拟机无法远程连接阿里云服务器的解决办法

热门文章

  1. 解决报错:soundfile.LibsndfileError: Error opening ‘.wav‘: File contains data in an unknown format.
  2. win7安装解压版mysql_win7安装解压缩版mysql 5.7.19和卸载后重新安装
  3. 程序员如何应对年龄这样的职场瓶颈?
  4. 光标自动定位到输入框
  5. 3.7. Miscellaneous
  6. 解决桌面IE图标无法删除方法
  7. Windows 2003 server 搭建拨号服务器
  8. hydrus1d使用说明_HYDRUS——1D中文说明书.pdf
  9. 怎么判断安卓解锁是否成功
  10. Williamnbsp;T.nbsp;Freeman