Android开发教程之初识Android App

一、认识Android操作系统

Android最早由安迪•罗宾(Andy Rubin)创办,2007年被Google公司收购,Google公司凭借Android操作系统在智能手机上取得了巨大的成功。

1、Android操作系统的特点

Android操作系统是一个多用户的Linux系统,每一个应用程序都是一个独立的用户。系统默认为每一个应用程序分配一个唯一的Linux用户ID(这个ID只能被系统使用,并且对于应用程序来说,这个ID是未知的)。系统为一个应用程序的所有文件设置了权限,所以,只有分配给这个应用程序的用户ID才可以访问它们。

每一个进程有它主机的虚拟机(VM),所以一个应用程序的代码会独立于其它的应用程序运行。

默认情况下,每一个应用程序在它自己的Linux进程中运行。Android会在一个应用程序的任何一个组件需要被调用的时候启动这个进程。然后,当没有任何组件被调用或者系统需要为其它应用程序回收内存的时候,就关闭这个进程。

通过这种方式,Android系统实现了最少的特权原则。就是说,每一个应用程序,默认都只能调用它所需要的工作组件。这就创造了这样一种非常安全的环境,在这个环境中,一个应用程序不能访问没有被授予其权限的系统部分。

尽管如此,也有很多途径可以让一个应用程序和其它的应用程序共享数据,也可以让一个应用程序去调用系统服务:

-----为两个应用程序分配同一个Linux用户ID是可行的,这样它们就能访问对方的文件。为了节约系统资源,拥有相同用户ID的-------应用程序也可以被运行于相同的Linux进程 并且共享VM(必须用相同的证书签名)。应用程序可以通过请求权限来访问设备数据,例如联系人、SMS信息、可插拔存储(SD卡)、相机、蓝牙、……等等。所有的应用程序权限必须在安装的时候由用户授予。

2、Android程序在系统中的存在方式

开发在Android操作系统上运行应用程序时,Android SDK工具负责编译代码,以及将任意数据并连同相关资源一块打包进一个Android包内,它实际上是一个以.apk为后缀的压缩文件。一个.apk文件中的所有代码就是一个Android应用程序。

在Android设备上安装应用程序就是安装.apk文件。

一旦安装成功,该Android程序就拥有了自己独立的运行沙盒(沙盒是在受限的安全环境中运行应用程序的一种做法,这种做法是要限制授予应用程序的代码访问权限)。

二、理解Android SDK和API版本

每个Android版本都有一个唯一的整数标识,称为API Level。由于用户使用的程序总是早于最新发布的API版本,所以实际的Android应用程序必须确保能在多版本API的环境中都能工作。

1、Android SDK和项目配置

Android SDK为我们提供了API链接库以及用于建立、测试与调试android应用的开发工具的集合。指定Android API版本配置前,要确保已经用Android SDK Manager安装了对应版本的Android SDK。

每个Android应用程序必须正确配置所使用的API级别,有三种:

Target Framework – 使用哪种框架创建应用程序(编译用)。

Minimum Android Version – 指定Android应用程序可使用的最低版本(运行用)。

Target Android Version – 指定Android应用程序试图使用的版本(运行用)。

也可以将三种API设置为相同的值:

将“Target framework”更改为某个API版本,即可拥有该版本的所有API功能。如果希望兼容早期的Android版本,可修改“Minimum Android to target”选项:

上图中的选项表明开发的Android应用程序可以安装在Android 4.4.2到Android 6.0之间所有版本的手机上,即API 19~API 23。但是,虽然可以安装在这些平台上,可并不能保证应用程序都能在这些平台上正常运行。例如,将程序安装到Android 4.4.2(API 19)平台上,可代码中却调用了比API 19更高版本的API,但是却没有对应版本的编译器支撑,那么该程序肯定无法在Android 4.4.2平台上正常运行。因此,这种情况下,必须显式包含运行时检查。例如:

if (Android.OS.Build.Version.SdkInt >= Android.OS.BuildVersionCodes.Lollipop)

{

builder.SetCategory(Notification.CategoryEmail);

}

注:Android.OS.BuildVersionCodes.Lollipop是指Android 5.0)

2、Android API版本对照表

下表列出了各种Android版本及其对应的信息:

从表中可以看出,Android的版本发布非常频繁,有时一年就发布几个版本。如何确保在如此多的版本中仍然能让应用程序可靠地运行?这就是API Level的作用。

3、API级别和自定义库

当创建Android Libraries项目时,应该让开发的库函数能应用于各种版本的API,因此一般不需要设置最低级别的API和最高级别的API,而是应遵循以下的最佳做法:

引用某个版本的API时,要确保应用程序运行的API版本不低于所引用的版本。为其他安卓应用程序设计自定义的库函数时,要为该应用程序设置需要的最低API级别。

总之,要确保开发的库函数使用尽可能少的API,以便让所设计的库适用范围更广。

三、在Debug模式下调试应用程序

1、在模拟器中调试Android应用程序

由于模拟器启动较慢,所以无论是C#开发还是Java开发,最好的办法都是先将模拟器启动起来,然后再调试。

一般使用VS2015在Debug模式下用模拟器调试。由于调试模式下默认包含了可适用于多种CPU型号的调试信息,所以Debug模式下生成的.apk文件比较大。

2、在真机上调试Android应用程序

也可以直接在真机上调试应用程序,只需要通过USB将手机连接到电脑上即可,此时在调试选项中会自动出现手机型号。

四、部署应用程序到真机

Debug模式下调试完成后,先改为Release模式,然后将其发布到真机上(真机不再包含调试信息,此时生成的.apk文件会小很多)。

当然,也可以通过压缩扩展库进一步减少.apk文件的大小。比如第3章百度应用程序中调试环境下.apk文件较大,将.jar包分开后就会显著减少.apk文件的大小。

要将你的程序发布到手机上,需要先查看你手机上的Android操作系统版本,确保你编写的应用程序使用的编译器版本和你手机操作系统的版本一致。

下面以手机的Android操作系统版本为4.4.4为例,说明将你用C#编写的应用程序发布到手机上运行的具体实现步骤。

发布前,先将项目属性改为API Level 19(与手机的4.4.4版本对应),如下图所示:

然后选择下面介绍的两种办法之一发布即可。

1、第1种办法

先将【Debug】模式改为【Release】模式(这一步很重要,否则无法发布),然后选择主菜单的【工具】à【Android】à【Publish Android Application】,如下图所示:

在弹出的发布窗口中,选择【Create New KeyStore】,输入【Password】,单击【Next】,然后输入别名(Alias)、口令(Password)、你编写的程序有效年数(Validity years)、你的姓名(First and Last Name)等信息:

单击【Next】,输入发布的目标文件夹,应用程序文件名,然后单击【Create】,它就会自动在目标文件夹下创建PhonewordApp-Aligened.apk文件。

注意:要确保手机的【应用程序设置】勾选了“允许未知来源的应用程序”。

将发布生成的PhonewordApp-Aligened.apk文件拷到你的手机上,然后双击安装、运行。

用这种方式发布的应用程序也可以在Android应用商店中销售。

2、第2种办法

先将【Debug】模式改为【Release】模式(这一步很重要,否则无法发布)。

鼠标右击项目名,然后选择【Export Android Package】,如下图所示:

此时它就会自动在Release文件夹下生成多个.apk文件。

根据你的手机类型,将生成的某个匹配的PhonewordApp-Signed.apk文件(在项目的Release文件夹下)拷到你的手机上,然后双击安装、运行。

用这种方式发布的应用程序只能直接在真机上运行,无法在Android应用商店中销售。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • 怎么发布打包并发布自己的Android应用(APP)

    第一步,在Eclipse中选择需要打包的项目,然后右键--选择Export,会弹出一个打包的提示框,如下图所示. 按Next之后,会继续出现一个提示框,这里你可以选择自己需要打包的项目(默认是刚才选中的)如下图: 按Next之后,会弹出一个关于"Keystore"的提示,选择"Create new Keystore",并浏览.选择签名文件要保存的路径, (关于Keystore的原理.作用等这里暂时不细说,请大家发布前务必保存好该签名文件,非常重要的.) 如下图所示:

  • Android界面设计(APP设计趋势 左侧隐藏菜单右边显示content)

    相关文章android popwindow实现左侧弹出菜单层http://www.jb51.net/article/33533.htm 移动App设计的13大精髓http://www.jb51.net/article/33534.htm 这文章讲述了2013年未来的移动APP设计趋势,感觉挺有道理的.wp8的平面界面设计已经取得很大的成功,很多应用也都是采取相同的设计如zaker,还有类似本文要展示的左侧导航菜单右边显示主要内容的设计,通过menu菜单或者左右拖动可以弹出左侧导航菜单,国内的应用

  • 通过Html网页调用本地安卓(android)app程序代码

    一.通过html页面打开Android本地的app 1.首先在编写一个简单的html页面 复制代码 代码如下: <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> <a h

  • Android笔记之:App应用之启动界面SplashActivity的使用

    当前比较成熟一点的应用基本上都会在进入应用之显示一个启动界面.这个启动界面或简单,或复杂,或简陋,或华丽,用意不同,风格也不同.下面来观摩几个流行的应用的启动界面. 1. 货比三家以腾讯qq,新浪weibo,UC浏览器,游戏神庙逃亡等7个应用为例,比比看:(我认为最精美的界面应该是qq2012,虽然只有一张图,基本的应用名称,版本,图标这些信息都有,但是看着舒服,觉得美.) 2. 元素启动界面的本意是以友好用户界面来掩饰后台缓冲加载,让用户用平和等待的心情进入正常应用界面.但是因为启动界面是放在

  • Android获取应用程序名称(ApplicationName)示例

    MainActivity如下: 复制代码 代码如下: package cn.testapplicationname; import android.os.Bundle; import android.widget.TextView; import android.app.Activity; import android.content.pm.ApplicationInfo; import android.content.pm.PackageManager; /** * Demo描述: * 获取应

  • Android App调试内存泄露之Cursor篇

    最近在工作中处理了一些内存泄露的问题,在这个过程中我尤其发现了一些基本的问题反而忽略导致内存泄露,比如静态变量,cursor关闭,线程,定时器,反注册,bitmap等等,我稍微统计并总结了一下,当然了,这些问题这么说起来比较笼统,接下来我会根据问题,把一些实例代码贴出来,一步一步分析,在具体的场景下,用行之有效的方法,找出泄露的根本原因,并给出解决方案. 现在,就从cursor关闭的问题开始把,谁都知道cursor要关闭,但是往往相反,人们却常常忘记关闭,因为真正的应用场景可能并非理想化的简单.

  • 一看就懂的Android APP开发入门教程

    工作中有做过手机App项目,前端和android或ios程序员配合完成整个项目的开发,开发过程中与ios程序配合基本没什么问题,而android各种机子和rom的问题很多,这也让我产生了学习android和ios程序开发的兴趣.于是凌晨一点睡不着写了第一个android程序HelloAndroid,po出来分享给其他也想学习android开发的朋友,这么傻瓜的Android开发入门文章,有一点开发基础的应该都能看懂. 一.准备工作 主要以我自己的开发环境为例,下载安装JDK和Android SD

  • Android获取手机型号/系统版本号/App版本号等信息实例讲解

    MainActivity如下: 复制代码 代码如下: package cn.testgethandsetinfo; import android.os.Bundle; import android.text.TextUtils; import android.widget.TextView; import android.app.Activity; import android.content.Context; import android.content.pm.PackageInfo; imp

  • Android 避免APP启动闪黑屏的解决办法(Theme和Style)

    前几天Boss就反应说,机器每次启动程序都会闪一下黑屏,这个客户不接受.没办法,只能想想怎么解决,最后找到了下面的方法.闪黑屏的原因主要是我们启动Activity的时候,需要跑完onCreate和onResume才会显示界面.也就是说需要处理一些数据后,才会显示.按照这种思路,是不是我把初始化的工作尽量减少就可以避免黑屏?事实是,就算你onCreate啥都不做,仍然会闪一下黑屏,因为初始化解析界面时需要一定时间.下面是解决办法:1.自定义Theme 复制代码 代码如下: 设置背景图Theme<s

  • Android中利用App实现消息推送机制的代码

    1.消息推送机制 服务器器端需要变被动为主动,通知客户一些开发商认为重要的信息,无论应用程序是否正在运行或者关闭. 我想到了一句话:don't call me,i will call you! qq今天在右下角弹出了一个对话框:"奥巴马宣布本拉登挂了...",正是如此. 自作聪明,就会带点小聪明,有人喜欢就有人讨厌. 2.独立进程 无论程序是否正在运行,我们都要能通知到客户,我们需要一个独立进程的后台服务. 我们需要一个独立进程的后台服务. 在androidmanifest.xml中注

随机推荐