Android应用编译时自动生成版本号

  categories:资料  author:

近期有一个工作任务:按照某个规则,给Android应用设置一个在编译时自动生成的versionCode与versionName。

这一点倒是不奇怪,很多正式的应用都有自己的一套版本号管理。市面上什么某某应用几点零,就是这样的一个产物。

我这个任务的难度除了自动生成,还有一个附加条件:在Android项目中编译(通过Android.mk)和在Android Studio中编译(通过build.gradle)时,规则要保持一致。

这样就有意思多了。

versionCode与versionName

Android的APK会自带一个版本描述,这就是versionCode和versionName。其中,versionCode是一个int,应该是一个随着开发而持续增长的值,而versionName是一个String,这是给人看的版本号。

versionName在开发过程中可以起到辨识作用,方便开发工程师与其他团队的人交流,也是用户直接可见的。比如某个问题是某某版本上出现的,某个功能是某某版本添加的。

versionCode在人的圈子里其实没太大作用,但是它是Android系统真正使用的值。在更新时,新的版本versionCode不能比原来的小,否则更新会失败。另外要注意,int是有上限的,不能太乱来。

versionCode和versionName,直接体现在APK中的AndroidManifest.xml文件中。可以通过以下命令查看:

aapt dump badging PATH/TO/YOUR.apk | grep version

aapt是Android Asset Packaging Tool,就是Android应用在命令行的打包工具,SDK里就有。主要作用是把二进制文件打包为APK,也附带了一些相关的查询功能。

修改versionCode和versionName,最简单、直观的方法,就是改源代码中的AndroidManifest.xml。但是,这样就需要频繁修改AndroidManifest.xml,每次版本更新时改一次。如果你希望每次提交的版本号都不一样,那么每次提交都需要密集地修改那两行,这显然是不可取的。

此外,实际上无论是在Android项目内编译,还是在IDE编译,最终都是用aapt来打包。打包时,可以通过设置--version-code--version-name参数,来对这两个字段设值,并且在最终打包时添加到APK的AndroidManifest.xml中。

在Android源码中编译时,如果一个模块没有指定versionCode与versionName,那么将与平台相同。比如在Android Marshmallow (API level 23)中编译,那么versionCode就是23,versionName就是PLATFORM_VERSION,比如6.0.1。

版本号规则

阅读全文

QRcode二维码的数据格式

  categories:资料  author:

来源:http://www.frostsky.com/2012/07/qrcode-data/

QRcode是二维码的一种。QRcode可以存储最多4296个字母数字类型的任意文本。这些文本可以是任何内容,例如,网址、联系信息、电话号码等等,下面会有介绍。

QRcode存储的信息可以被安装有适当软件的光学设备读取。这种设备既可以是专用的QR code读取器也可以是手机。

qrcode frostsky.com二维码可以储存文本信息,但是文本信息可以代表很多的东西,例如二维码可以将URL进行编码,特殊的字符串让解码器知道这是一个URL地址,从而从浏览器打开这个网址。比如右图就是“http://www.frostsky.com”的二维码。

二维码可以保存洞中类型的可操作文本信息,下面将介绍到底二维码可以存储哪些信息。

一、网址URL

二维码最普通的方式就是编译网址,需要注意的是在编译时网址需要有协议,比如“http://”,否则就会被认为是普通的文本详细。 如:http://www.biaodianfu.com/

需要注意的是二维码在编译大写字母是要比编译小写字母更有效,在没有确定你的服务器是否支持大下写通用时,最好不要使用URL大写。

除此之外,针对网址还有数签形式,格式为:MEBKM:TITLE:标点符;URL:http://www.biaodianfu.com/;;

二、E-mail地址

为了识别出来编译的信息为email地址,格式为:MailTO:username@gmail.com ,解码器就或为你创建一个空白邮件。

除此之外还可以添加邮件的内容,具体格式为 MATMSG:TO: username@gmail.com;SUB:Test;BODY:This is a test. ;;

三、手机号码

在编译手机号码的时候,最好是在手机号码前加上国别好号,比如中国就是“+86”,例如:TEL:+8613800138000

除了编译手机号码以外,还可以编译手机短信,具体示例为:SMSTO:+8613800138000:测试短信;

手机彩信与短信的格式一样,具体为:MMSTO:+8613800138000:测试彩信;

四、个人名片

可以使用vCard(http://en.wikipedia.org/wiki/VCard)格式来使用个人名片。

例如:姓名为孙悟空,地址为花果山,电话为13800138000,邮箱为wukong@huaguoshan.com,具体的格式为:

MECARD:N:孙悟空;ADR:花果山;TEL:+8613800138000;Email:wukong@huoguoshan.com;;

五、地理信息

已编译Google西雅图的办公室的经纬度信息为例,维度为40.71872 ,西经73.98905,经纬度精确到单位到100米。具体格式为:GEO:40.71872,-73.98905,100

QRcode 测试:

Google 提供了QRcode的API,输入以下信息到浏览器地址栏:

http://chart.apis.google.com/chart?cht=qr&chs=100×100&chl=http://www.frostsky.com

即可生成一个二维码。… 阅读全文

Spark standalone分布式安装

  categories:资料  author:

Spark是一个通用的并行计算框架,由UCBerkeley的AMP实验室开发。
Spark和Hadoop有什么不同呢?
Spark是基于map reduce算法实现的分布式计算,拥有Hadoop MapReduce所具有的优点;但不同于MapReduce的是Job中间输出和结果可以保存在内存中,从而不再需要读写HDFS,因此Spark能更好地适用于数据挖掘与机器学习等需要迭代的map reduce的算法。

Spark的适用场景
Spark是基于内存的迭代计算框架,适用于需要多次操作特定数据集的应用场合。需要反复操作的次数越多,所需读取的数据量越大,受益越大,数据量小但是计算密集度较大的场合,受益就相对较小
由于RDD的特性,Spark不适用那种异步细粒度更新状态的应用,例如web服务的存储或者是增量的web爬虫和索引。就是对于那种增量修改的应用模型不适合。
总的来说Spark的适用面比较广泛且比较通用。

一。Spark目前支持多种分布式部署方式

  • Standalone Deploy Mode;
  • Amazon EC2;
  • Apache Mesos;
  • Hadoop YARN。

第一种方式是单独部署,不需要有依赖的资源管理器,其它三种都需要将spark部署到对应的资源管理器上。

除了部署的多种方式之外,较新版本的Spark支持多种hadoop平台,比如从0.8.1版本开始分别支持Hadoop 1 (HDP1, CDH3)、CDH4、Hadoop 2 (HDP2, CDH5)。目前Cloudera公司的CDH5在用CM安装时,可直接选择Spark服务进行安装。

https://spark.apache.org/docs/latest/spark-standalone.html

二。 以1.0.0版本,来看看如何实现Spark分布式集群的安装:

一、Spark 1.0.0需要JDK1.6或更高版本,我们这里采用jdk 1.6.0_31;

二、Spark 1.0.0需要Scala 2.10或更高版本,我们这里采用scala 2.10.3;… 阅读全文

从锦囊妙计想到的28–程序的空间和时间

  categories:资料  author:

前面已经说了很多程序上的事情, 今天会引入一个程序中的两个概念, 这两个概念是非常重要的事情!

1. 程序的空间,    通常是指程序  运行时的 占用空间, 最通俗的说 就是占用内存的情况, 当然也有占用磁盘的空间的情况, 但是考虑到磁盘 空间都比较大, 不会太紧张因此, 空间通常指  内存。  另外若是您到了开发大数据的级别那么磁盘空间就要考虑了, 原因是磁盘空间会有空间同时还有访问时间的问题。

2. 程序的时间, 通常是指  程序运行时  需要的时间, 或者花费的时间。   其实后面还有一个 开发时间, 也就是开发效率的问题。  今天就不说明了。

一。 程序空间和时间的意义

举个例子, 大家都熟悉房地产了, 那么在相同面积上盖的楼越多, 最后能卖出的价格就越多, 这么就是为什么都盖高层的缘故了。

类似的, 若是 卖出的价格相同,   占用的面积越小, 越有意义是吧。… 阅读全文

什么是 Bluetooth 个人区域网 (PAN)

  categories:资料  author:
什么是 Bluetooth 个人区域网 (PAN)

Bluetooth 个人区域网 (PAN) 是一种可让您利用便携式计算机、移动电话和手持设备之间的无线链接创建以太网网络的技术。您可以连接到以下类型的启用 Bluetooth 的设备(这些设备都使用 PAN):个人区域网用户 (PANU) 设备、组式临时网络 (GN) 设备或网络访问点 (NAP) 设备。

下面是有关这些设备中每种设备的功能的详细信息:

  • PANU 设备。 连接到启用 Bluetooth 的 PANU 设备可创建一个包含您的计算机和设备的临时网络。

  • GN 设备。 连接到启用 Bluetooth 的 GN 设备可创建一个包含您的计算机、GN 设备和其他任何与同一 GN 设备连接的 PANU 设备的临时网络。

  • NAP 设备。 连接到启用

阅读全文

从锦囊妙计想到的27–多次叠加操作绘制复杂图形

  categories:资料  author:

前面26介绍了采用应用中间一个辅助数组的办法, 来辅助缓存中间结果, 然后可以绘制复杂的图形, 今天继续这个话题, 看一个在略微复杂一点的输出

先看一下, 输出的图形

如上图, 若是输出这个图形不采用中间缓存的办法, 直接写, 要写大量的if语句, 并且没办法扩展

若是采用上面26中的方法, 就会简单很多

一。 功能分析

图中输出的图形可以为如下情况

如上图, 可以看到一共有3个图形, 最外面的*号构成的图形, 里面蓝色的由空白构成的三角形

最后是一个红色的小矩形。

这三图形叠加到一起构成了一个完整的图形

二。 实现方法研究

1. 采用主函数启动一个功能函数, 在功能函数里面传入必须的参数进行显示

这样当需要扩展时, 仅仅调整参数就可以扩大或者调整输出

2. 采用二维数组存储中间输出的结果

3. 采用一个专用函数输出最外层的带*的大矩形

4. 采用专用函数在中间的输出结果中输出空白函数的三角形

5.采用函数在前面的中间结果的基础上输出小的空白符号的矩形

6. 最后直接输出中间结果的最终结果到计算机屏幕

参考过程如下… 阅读全文

从锦囊妙计想到的26–采用中间辅助方法输出图形

  categories:资料  author:

前面的18~25一直围绕 图形输出进行的说明, 这里仍然继续。

重要的事情, 在说一下, 计算机是个动手的东西, 之所以这么多的输出要做, 就是要给大家一个直接能看到成果, 并且又能动手的东西可以做。

前面仅仅是说明一个方面的输出。 从本文开始陆续添加一些新知识, 包括 数组(Array), 链表(List), 映射(Map)方面的东西到程序中, 通过本文和后面的一些东西, 让大家陆续了解到这些东西的使用。

为了直观了解这些东西的用途, 仍然采用输出图形的办法进行。

看一下, 本文要输出的图形

一。 分析一下功能

上面图形, 我们可以在excel中做出来, 如下图

图形,包括11行, 11列, 在图形的中间有个空心的  三角形出现

如何输出?

在以前,我们都是采用System.out.println(xxx)来进行, 这个语句的特点是必须一次输出, 就是输出后不能修改。

因此若是还用以前的方法, 必须一次性输出结果不能后期处理。 观察上述图形, 若是一次输出,在处理空心图形部分, 会有些复杂。 因此本文不采用原有的方法。… 阅读全文

数据流图(DFD)简介

  categories:资料  author:

软件需求分析的基础:机构化分析方法。

结构化分析方法适用于数据处理类型软件的需求分析。它提供的主要建模工具包括 数据流图、数据字典、机构化英语、判定表、和判定树等。

 

在这里主要说明DFD图的使用和画法。

数据流图(DFD–Data Flow Diagram)作用

指明数据在系统中移动时如何被变换,描述对数据流进行交换的功能和子功能。

DFD图的特性。

抽象性、概括性、层次性。

DFD图的用途。

1)系统分析员用这种工具可以自顶向下分析系统信息流程。

2)可在图上画出需要计算机处理的部分。

3)根据数据存贮,进一步作数据分析,向数据库库设计过渡。

4)根据数据流向,定出存取方式。

5)对应一个处理过程,用相应的语言、判定表等工具表达处理方法。

DFD图的优缺点。

1)总体概念强,每一层都明确签掉“干什么”,“需要什么”,“给出什么”

2)可以反映出数据的流向和处理过程。

3)由于自顶向下分析,容易及早发现系统各个部分的逻辑错误,也容易修正。

4)容易与计算机处理相对照。

5)不直观,一般都要咋作业流程分析的基础上加以概括、抽象、修正来得到。

6)如果没有计算机系统的帮助,人工绘制会太麻烦,工作量较大。

数据流图的画法。

具体参考: https://baike.baidu.com/item/%E6%95%B0%E6%8D%AE%E6%B5%81%E5%9B%BE

另外, 也可以参考: https://wenku.baidu.com/view/74deb16b580216fc700afdb4.html

 

1、数据流图的定义

简称DFD,它从数据传递和加工角度,以图形方式来表达系统的逻辑功能、
数据在系统内部的逻辑流向和逻辑变换过程,是结构化系统分析方法的主要表达工具及用于表示软件模型的一
种图示方法。
数据流图是结构化分析方法中使用的工具,它以图形的方式描绘数据在系统中流动和处理的过程,由于它只反映
系统必须完成的逻辑功能,所以它是一种功能模型。在结构化开发方法中,数据流图是需求分析阶段产生的结果。

数据流程图包括:
a.指明数据存在的数据符号,这些数据符号也可指明该数据所使用的媒体。
b.指明对数据执行的处理的处理符号,这些符号也可指明该处理所用到的机器功能。… 阅读全文

从锦囊妙计想到的25–输出一个稍复杂的图形的编程过程

  categories:儿童计算机  author:

前面介绍了很多屏幕输出的东西, 其中在23中还介绍了, java开发环境的安装, java项目的创建, 具体的参照前面23的文章, 特别是里面的gif动画演示的过程

本文承接前面的23来输出一个略微复杂点的 图形。

本文目标:

1. 熟悉java的集成开发环境

2. 熟悉java的语言本身

3. 继续熟悉总分总的 分析问题,解决问题的思想(其实就是面向过程的 模块化编程思想)

还是先看看 , 本文要输出的图形

一。 任务分析(工作分析, 需求分析都可以)

上面图形, 同前面的一个  及其相似, 因此我们可以用类似的手法进行处理

如下图

本任务可以分解我   输出红色区域, 和输出绿色区域两个子任务,

然后红色区域还是 一行一行的输出,  在每输出一行的前面先输出 空白, 然后输出*

在输出 下面绿色的部分的时候, 也是要 一行一行的输出, … 阅读全文

java入门

  categories:资料  author:

Java 教程

Java 是由Sun Microsystems公司于1995年5月推出的高级程序设计语言。

Java可运行于多个平台,如Windows, Mac OS,及其他多种UNIX版本的系统。

本教程通过简单的实例将让大家更好的了解JAVA编程语言。

Java 在线工具

JDK 1.6 在线中文手册


我的第一个 JAVA 程序

以下我们通过一个简单的实例来展示 Java 编程,创建文件 HelloWorld.java(文件名需与类名一致), 代码如下:

实例

public class HelloWorld { public static void main(String[] args) { System
阅读全文


快乐成长 每天进步一点点      京ICP备18032580号-1