2019-08-22 23:52:36 pc943990494 阅读数 146
  • Android平台技术:JNI开发初步

    Android的高度开放性,非常有利于软硬整合,人人都能自由使用Java & C/C++撰写上、中、下层服务,紧密结合硬件,呈现其差异化,创造增值效果。这是一条产业发展的美好之路。Android应用软件几乎都需要Java与C/C++两者并用,才能兼具「力」与「美」,才能实现深度的软硬整合。其幕后的JNI扮演了重要的角色,于此就来介绍JNI及相关的NDK工具。

    11584 人正在学习 去看看 高煥堂

      一个软件公司要想提高公司的软件开发效率,一定会有自己的软件开发平台。今天就和大家分享下一个软件平台的设计思考。
       在设计软件开发平台过程中,为了少走弯路,我们要尽量多往外看一看,吸取一下别人成功的经验,结合自己的实际情况进行设计。在我查看了不少的业界软件开发平台,我把它们分为三类。下面介绍如下三类:

第一类
        该类产品是基于业务对象的业务架构平台,业务对象的配置过程是平台的核心,通过配置业务对象基本完成了整个软件开发过程。业务对象的配置包含对象信息的配置、对象的分类、对象的方法、对象的视图、子对象、对象的属性、对象的页面展示形态等;其中属性的配置包含属性的类型、属性值的约束、属性的页面展示控件、属性之间的依赖等。同一个对象的在不同页面的展现形态通过对象的视图去配置。这类平台淡化了页面的交互配置,而是将页面的展示方案交给对象通过对象展示模板的方案进行配置。
      因此有关页面展示的配置过程并不是特别直观,主要是通过内置的展示模板供用户选择且都被包含在对象的配置过程中,在展现交互层的动态能力偏弱。这种方式虽然不直观,但是由于对象的特征和展示的配置都集中在业务对象上,软件的迭代要更加敏捷一些,因为通过更改对象的配置就可以适应需求的变化。

以下是某产品的对象配置和属性配置的部分截图,提供示意查看。

对象配置界面

属性配置界面


第二类

       在这类平台中,业务对象的配置相对简单,业务对象配置主要包含对象基本信息的录入、子对象的添加,属性部分基本特征的录入,例如数据类型。这类平台中,业务对象的职责主要用来生成数据库表结构和绑定表单及列表。在该平台的的表单创建时,需要指定绑定的业务对象。业务对象的属性与表单的控件进行绑定。当然业务对象在初始绑定表单时特征有个转换的过程,主要是属性的类型会和控件的类型的转换。
       在该类平台中,业务对象及属性配置中,只定义了部分基本的特征。部分其他的复杂的特征例如属性的依赖(如:省和市的依赖)、属性在页面上的显示隐藏在业务对象并没有对应的特征转换。因此需要用户在页面的配置过程中进行相关级联的配置,这种属性依赖在页面上体现为控件之间的级联,保存后为作为页面的配置。然而当用户创建新的页面再绑定该对象时,这种级联无法传递,因为对象本身并没有存储这种级联性。不过这类产品提供了通过页面的复制进行传递这种特性。而在第一类平台中是通过属性之间值的约束进行配置的。在属性之间进行约束的话,具有全局性,即使该对象在不同的页面展示无需再次配置。

以下是第二类产品的部分示意截图:

对象属性的配置界面

表单的配置界面

第三类

第三类软件开发平台,它淡化了业务对象的概念,而是直接将数据库和页面的技术特征展示在配置表单上。它是以数据库域为核心。数据库的字段、特征的变化影响着页面属性、特征的变化。但也提供了在不同的技术域下个性的特征配置的过程。

数据库属性配置界面

页面属性配置界面

总结分析和扩展

       上述三类软件平台都为软件开发提供了一定的便捷,但是他们的设计理念却有着一定的差异。第一类平台所有的配置都集中在业务对象,通过对象的配置解决所有的问题。第二类平台在业务对象上有着粗略的配置,更多细节复杂配置体现在页面的配置上。而在第三类中,直接从技术出发,由数据库的配置影响页面的配置,允许部分页面的配置再次更改,理念更加技术化。
       而在设计一个平台时,首先需要定位平台的客户目标,是开发人员?还是业务人员?还是有一定开发能力的业务人员?是一个人完成整个过程?还是多人协同完成整个过程?定位不同必然平台设计的思路也会有差异。很显然,上面我介绍的这三类平台都是由一个人进行完成整个软件配置过程。
       其次我们需要清楚软件只是业务的体现方式,软件是实现业务的一种工具,在没有软件的年代,我们通过文字、图片、口述交流来表达业务,而在有了软件后,使得表达业务更加的方便。因此我们要明白,业务才是软件的本质,业务的特征才是决定软件的核心设计。有了软件后,软件本身也会衍生出一些软件本身的特征,例如软件采用的编程语言、软件的界面形式等。
        软件的生命周期有不同角色的人参与,从调研到开发再到运维。在这里我主要分为业务和技术两种角色。业务人员进行对软件进行业务建模,技术人员对技术建模的产物进行加工和技术特征的补充。
       在一个软件中我们首先要能够区分哪些是业务决定的哪些是技术决定的,换句话说哪些是业务特征哪些是技术特征。业务特征往往可以引导和制约技术特征的值,业务和技术特征的区分可以让不同的人参与进来,业务精通的人参与业务特征的配置中,技术精湛的人参与技术特征的补充。因此区分哪些是由业务决定的,哪些是由技术决定的格外重要。
       下面的列表是对一些常见的特征之间的映射关系。

属性业务特征 对应技术特征
数据类型 控件类型
属性依赖 级联控件
非空 必填
密码 密码控件
唯一性 数据验重
可变性 不可修改
多值 控件类型
格式规则 填写约束
范围规则 填写约束

 

 

 

 

 

 

 

 

 

 

        对一个特征的看法不同的人有不同的看法,例如级联有人说是技术的,有人说是业务的。在判断特征域的归属时,我给大家的建议是如果这个特征没有软件、没有技术也能表达的话那么他就是业务的。

 

 

2018-07-14 22:51:53 jakera 阅读数 3784
  • Android平台技术:JNI开发初步

    Android的高度开放性,非常有利于软硬整合,人人都能自由使用Java & C/C++撰写上、中、下层服务,紧密结合硬件,呈现其差异化,创造增值效果。这是一条产业发展的美好之路。Android应用软件几乎都需要Java与C/C++两者并用,才能兼具「力」与「美」,才能实现深度的软硬整合。其幕后的JNI扮演了重要的角色,于此就来介绍JNI及相关的NDK工具。

    11584 人正在学习 去看看 高煥堂

      一直想把毕业设计开源出来,到了今天也是时候了。由于题目是老师指导而成的,鉴于表达对老师的敬意,也以老师给的题名作为本篇的题目。感谢项老师的指导,我的设计非常顺利,也拿到很满意的成绩。

       本社交软件基于Android开发平台进行软件设计,以Android StudioAndroid SDK作为软件开发工具,Git作为版本控件工具。以科大讯飞平台为语音识别及文本转换作为语音识别以及文本转换为语音支持平台,以图灵机器人作为智能应答机器人,以有道翻译作为翻译支持平台。以极光平台作为用户管理、即时通讯、推送平台

       其中涉及到许多云平台的集成:1、科大讯飞    2、极光平台  3、百度图片识别 

                                                    4、图灵机器人 5、有道翻译

      依赖了许多的库:1、RecyclerView 2、Okhttp3

                                3、cardView  4、gson  5、picasso 6、FFmpeg

      自定义的View:  1、圆角头像  2、按住说话

      当然还有数据库操作、Sharedpreference等等。

      涉及面非常广,代码方面不建议过多参考,由于当时对Android的理解有限,所以有些设计未免存在缺陷,毕竟是一个学生的作品。

       Github传送门  (点击下载)

       下面是软件界面截图:

启动页面消息页面聊天页面

好友列表看看我的

图片识别 注册登陆个人资料


       个人的建议是下载下来,把程序在自己的电脑里跑起来,然后在这个基础上去优化代码逻辑,比如说,在数据库的设计上,有诸多的不合理,如果能够进行优化,当然是能学到不少的东西。另外,在离线信息的处理上,我并没有真正做处理,这里也是一个学习的方向。另外一个,聊天内容目前只做了语音和文本,没有表情,位置、视频等等,从这些做进一步的改进也是非常棒的,甚至红包、朋友圈功能等等。当然也可以从优化入手,分析其内存的占用情况,网络的访问合不合理等等,进行优化,也是一种交流学习的大好机会,欢迎这些同学和我交流,说不定能把它完善成一个有用的项目。

      不得不说的是,完成这个项目的过程是漫长的,前后花了近两个月的时间,提交了58次代码。而又是令人兴奋的,是我毕业前验证自己自学成果的见证,也是我个人到目前为此由个人从头搭建成而的最为完善的一个项目。也是非常感谢实习公司给了我非常宽限的花习时间,还有同学兼同学一起勉励做设计的那段时光,大家每天都在为自己的项目添光加彩的日子,真是非常地怀念。

       欢迎交流学习,共勉~

2010-08-02 08:59:13 iteye_13493 阅读数 19
  • Android平台技术:JNI开发初步

    Android的高度开放性,非常有利于软硬整合,人人都能自由使用Java & C/C++撰写上、中、下层服务,紧密结合硬件,呈现其差异化,创造增值效果。这是一条产业发展的美好之路。Android应用软件几乎都需要Java与C/C++两者并用,才能兼具「力」与「美」,才能实现深度的软硬整合。其幕后的JNI扮演了重要的角色,于此就来介绍JNI及相关的NDK工具。

    11584 人正在学习 去看看 高煥堂

关于平台软件导航栏目的设计:

当我们设计平台软件主界面时,希望像IDE一样能够在主界面直观的展示业务操作历史和业务操作
流程手册,以便我们的用户能够更好的使用平台软件。

 

比如定义收藏夹等功能。如果你的平台软件是CS模式的,你可以使用包装页面的方式!

 

 

2019-02-10 10:31:58 weixin_42739423 阅读数 908
  • Android平台技术:JNI开发初步

    Android的高度开放性,非常有利于软硬整合,人人都能自由使用Java & C/C++撰写上、中、下层服务,紧密结合硬件,呈现其差异化,创造增值效果。这是一条产业发展的美好之路。Android应用软件几乎都需要Java与C/C++两者并用,才能兼具「力」与「美」,才能实现深度的软硬整合。其幕后的JNI扮演了重要的角色,于此就来介绍JNI及相关的NDK工具。

    11584 人正在学习 去看看 高煥堂

本文是写给未入行或刚入行的伙伴,希望没有做过大型平台开发的朋友对平台的开发有一个感性的认识,消除对大型项目开发的恐惧感,一个平台项目的整体流程大概是什么样子,分享下真实的开发流程
1软件设计
1.1沟通了解需求,形成文字需求文档
1.2.编写设计文档
1.3.设计思维图
1.4.绘制流程图
1.5.绘制UI设计图
1.6.设计数据库表结构
1.7.编写协议
1.8.细分工作任务与时间节点

2.开发:
2.1.生成建表语句,生成POJO
2.2.根据POJO生成后台代码
2.3.业务细节实现

3.软件质量
3.1代码走查
3.2评审
3.3软件测试
分享些常用的免费工具软件freemind,viso,EZDML,codehelper.generator
一个软件项目到开发人员开发其实工作已经进行了一部分,开发人员是将思想和设计实现的过程,就算是一个大型的平台项目,业务细分之后都是增删改查,未接触或者刚入行的朋友也不必害怕,代码评审阶段很短,但很重要,绝大部分时间都被开发业务占据,评审是提高软件质量和开发水平的重要环节

2019-05-04 09:24:06 lzp_k2 阅读数 174
  • Android平台技术:JNI开发初步

    Android的高度开放性,非常有利于软硬整合,人人都能自由使用Java & C/C++撰写上、中、下层服务,紧密结合硬件,呈现其差异化,创造增值效果。这是一条产业发展的美好之路。Android应用软件几乎都需要Java与C/C++两者并用,才能兼具「力」与「美」,才能实现深度的软硬整合。其幕后的JNI扮演了重要的角色,于此就来介绍JNI及相关的NDK工具。

    11584 人正在学习 去看看 高煥堂
没有更多推荐了,返回首页