首先要安装 Android SDK 和Eclipse 插件:
所需开发环境:
JDK 5 或 JDK 6 (仅有JRE不够)
Eclipse 3.5 (galileo)
下载ADT 的Eclipse 插件
http://dl.google.com/android/ADT-0.9.5.zip
安装 Eclipse 插件 (ADT)
启动 Eclipse,选择 Help > Install New Software,在出现的对话框里,点击Add按钮,在对话框的name一栏输入“ADT”, 然后点击Archive...,浏览和选择已经下载的ADT插件压缩文件。
点击 OK.。返回可用软件的视图,你会看到这个插件,然后选择Developer Tools (会选中下面的“Android Developer Tools”和 “Android Editors“),点击 Next,最后重启 Eclipse。
下载Android SDK:
http://dl.google.com/android/android-sdk_r18-windows.zip
下载完SDK后,把.zip文件解压到你电脑上合适位置。启动 Eclipse,选择window->preferences,在打开的视图左边点击android,在右边的SDK Location中选择Android SDK所在位置。
1、打开Eclipse,新建项目(点击FileNewroject),在项目列表中展开Android目录,选择Android Project,如下图:
2、点击”finish”即可完成项目的创建,创建后的项目已经是一个可运行的Android应用,我们可以通过下面方式运行此应用:
点击工具栏上手机形状的虚拟设备管理器(简称“AVD“)
3、在打开的虚拟设备管理器中创建一个虚拟手机:
http://www.cnhonkerarmy.com/data/attachment/album/201210/27/213634ivr6rskdgaq6ig8i.png
4、在项目上右键点击run as Android application,三、Android应用程序架构src/ java原代码存放目录
gen/ 自动生成目录
gen 目录中存放所有由Android开发工具自动生成的文件。目录中最重要的就是R.java文件。 这个文件由Android开发工具自动产生的。Android开发工具会自动根据你放入res目录的xml界面文件、图标与常量,同步更新修改R.java文件。正因为R.java文件是由开发工具自动生成的,所以我们应避免手工修改R.java。R.java在应用中起到了字典的作用,它包含了界面、图标、常量等各种资源的id,通过R.java,应用可以很方便地找到对应资源。另外编绎器也会检查R.java列表中的资源是否被使用到,没有被使用到的资源不会编绎进软件中,这样可以减少应用在手机占用的空间。
res/ 资源(Resource)目录
在这个目录中我们可以存放应用使用到的各种资源,如xml界面文件,图片或数据。具体请看ppt下方备注栏。
AndroidManifest.xml 功能清单文件
这个文件列出了应用程序所提供的功能,在这个文件中,你可以指定应用程序使用到的服务(如电话服务、互联网服务、短信服务、GPS服务等等)。另外当你新添加一个Activity的时候,也需要在这个文件中进行相应配置,只有配置好后,才能调用此Activity。
default.properties 项目环境信息,一般是不需要修改此文件。
res/drawable 专门存放png、jpg等图标文件。在代码中使用getResources().getDrawable(resourceId)获取该目录下的资源。
res/layout 专门存放xml界面文件,xml界面文件和HTML文件一样,主要用于显示用户操作界面。
res/values 专门存放应用使用到的各种类型数据。不同类型的数据存放在不同的文件中,如下:
· strings.xml 定义字符串和数值,在Activity中使用getResources().getString(resourceId) 或getResources().getText(resourceId)取得资源。它的作用和struts中的国际化资源文件一样。
<?xml version="1.0" encoding="UTF-8"?>
<resources>
<string name=“itcast”>****</string>
</resources>
· arrays.xml 定义数组。
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string-array name="colors">
<item>red</item>
<item>yellow</item>
<item>green</item>
<item>blue</item>
</string-array>
</resources>
· colors.xml 定义颜色和颜色字串数值,你可以在Activity中使用getResources().getDrawable(resourceId) 以及getResources().getColor(resourceId)取得这些资源。例子如下:
<?xml version="1.0" encoding="UTF-8"?>
<resources>
<color name="contents_text">#ff000000</color>
</resources>
· dimens.xml 定义尺寸数据,在Activity中使用getResources().getDimension(resourceId) 取得这些资源
<?xml version="1.0" encoding="UTF-8"?>
<resources>
<dimen name="key_height">50dip</dimen>
</resources>
· styles.xml 定义样式。
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="itcastText" parent="@style/Text">
<item name="android:textSize">18px</item>
<item name="android:textColor">#008</item>
</style>
</resources>
res/anim/ 编译成帧动画的XML文件。
res/xml/ 在Activity中使用getResources().getXML()读取该目录下的XML资源文件。
res/raw/ 该目录下的文件将直接被复制到设备上。编译软件时,这些数据不会被编译,它们被直接加入到程序安装包里。 为了在程序中使用这些资源,你可以调用getResources().openRawResource(ID) , 参数ID形式:R.raw.somefilename。
安卓7.0可以安装xposed框架吗
Xposed框架安装器是一款可以在不修改APK的情况下影响程序运行(修改系统)的框架服务,基于它可以制作出许多功能强大的模块,且在功能不冲突的情况下同时运作。(需root权限)工具/原料一台root过的安卓手机(测试机为motog,安卓4.44)Xposed框架安装器安装包方法/步骤1Xposed框架安装器和其他安卓软件一样,将安装包安装到手机。下图箭头所指的就是该神器。2打开该软件,如下图所示。点击管理框架模块。进入后如下图2所示,点击安装/更新。出现图3的画面,授权即可。出现图4画面,点击确定即可。手机会重新启动。(不同的手机或系统版本会有少许不同)3重启后进入管理框架模块会出现下图所示。目前激活下面出现数字。说明Xposed框架安装器已经安装成功。4目前我手机上用到的模块是绿色守护和重力工具箱。(模块建议在百度上搜索下载,安装方法和普通软件一样)这两个模块安装后,打开激活应用模块,或出现下图1所示。两个模块后面有一个小方框,点击后会出现一个对号,如图2.然后重启手机。5重启后点击模块重力工具箱(图1GravityBox),出现下图2画面,说明已经安装成功。关于GravityBox这个美化神器会在下一个经验中讲解。若果你觉得还不错,请支持我。谢谢。图一的电池图标就是美化后的效果。这只是它功能的冰山一角。END注意事项小米系统手机勿装,会无限重启.安装各模块后需要在此应用内启用,并重启系统该框架暂时不支持art模式。
回答不容易,希望能帮到您,满意请帮忙采纳一下,谢谢 !
android 数据库框架哪个好
xutils 。
android中的orm框架,一行代码就可以进行增删改查;
支持事务,默认关闭;
可通过注解自定义表名,列名,外键,唯一性约束,NOT NULL约束,CHECK约束等(需要混淆的时候请注解表名和列名);
支持绑定外键,保存实体时外键关联实体自动保存或更新;
自动加载外键关联实体,支持延时加载;
谁有安卓7.0的xposed框架,和详细安装方法
方法/步骤 1、Xposed 框架安装器和其他安卓软件一样,将安装包安装到手机。下图箭头所指的就是该神器。 2、打开该软件,如下图所示。点击管理框架模块。进入后如下图2所示,点击安装/更新。出现图3的画面,授权即可。出现图4画面,点击确定即可。手机会重新启动。(不同的手机或系统版本会有少许不同) 3、重启后进入管理框架模块会出现下图所示。目前激活下面出现数字。说明Xposed 框架安装器已经安装成功。 4、目前我手机上用到的模块是绿色守护和重力工具箱。(模块建议在百度上搜索下载,安装方法和普通软件一样)这两个模块安装后,打开激活应用模块,或出现下图1所示。两个模块后面有一个小方框,点击后会出现一个对号,如图2.然后重启手机。 5、重启后点击模块重力工具箱(图1 GravityBox),出现下图2画面,说明已经安装成功。关于GravityBox这个美化神器会在下一个经验中讲解。若果你觉得还不错,请支持我。谢谢。图一的电池图标就是美化后的效果。这只是它功能的冰山一角。
如何使用Android系统自带的***服务框架
如何使用Android系统自带的***服务框架:
一、基本原理
在介绍如何使用这些新增的API之前,先来说说其基本的原理。
Android设备上,如果已经使用了***Service框架,建立起了一条从设备到远端的***链接,那么数据包在设备上大致经历了如下四个过程的转换:
1)应用程序使用socket,将相应的数据包发送到真实的网络设备上。一般移动设备只有无线网卡,因此是发送到真实的WiFi设备上;
2)Android系统通过iptables,使用NAT,将所有的数据包转发到TUN虚拟网络设备上去,端口是tun0;
3)***程序通过打开/dev/tun设备,并读取该设备上的数据,可以获得所有转发到TUN虚拟网络设备上的IP包。因为设备上的所有IP包都会被NAT转成原地址是tun0端口发送的,所以也就是说的***程序可以获得进出该设备的几乎所有的数据(也有例外,不是全部,比如回环数据就无法获得);
4)***数据可以做一些处理,然后将处理过后的数据包,通过真实的网络设备发送出去。为了防止发送的数据包再被转到TUN虚拟网络设备上,***程序所使用的socket必须先被明确绑定到真实的网络设备上去。
二、代码实现
要实现Android设备上的***程序,一般需要分别实现一个继承自Activity类的带UI的客户程序和一个继承自***Service类的服务程序。
申明权限
要想让***程序正常运行,首先必须要在AndroidManifest.xml中显式申明使用“android.permission.BIND_***_SERVICE”权限。
客户程序实现
客户程序一般要首先调用***Service.prepare函数:
Intent intent = ***Service.prepare(this); if (intent != null) { startActivityForResult(intent, 0); } else { onActivityResult(0, RESULT_OK, null); }
目前Android只支持一条***连接,如果新的程序想建立一条***连接,必须先中断系统中当前存在的那个***连接。
同时,由于***程序的权利实在太大了,所以在正式建立之前,还要弹出一个对话框,让用户点头确认。
***Service.prepare函数的目的,主要是用来检查当前系统中是不是已经存在一个***连接了,如果有了的话,是不是就是本程序创建的。
如果当前系统中没有***连接,或者存在的***连接不是本程序建立的,则***Service.prepare函数会返回一个intent。这个intent就是用来触发确认对话框的,程序会接着调用startActivityForResult将对话框弹出来等用户确认。如果用户确认了,则会关闭前面已经建立的***连接,并重置虚拟端口。该对话框返回的时候,会调用onActivityResult函数,并告之用户的选择。
如果当前系统中有***连接,并且这个连接就是本程序建立的,则函数会返回null,就不需要用户再确认了。因为用户在本程序第一次建立***连接的时候已经确认过了,就不要再重复确认了,直接手动调用onActivityResult函数就行了。
在onActivityResult函数中,处理相对简单:
protected void onActivityResult(int request, int result, Intent data) { if (result == RESULT_OK) { Intent intent = new Intent(this, My***Service.class); ... startService(intent); } }
如果返回结果是OK的,也就是用户同意建立***连接,则将写的,继承自***Service类的服务启动起来就行了。
当然,也可以通过intent传递一些别的参数。
服务程序实现
服务程序必须要继承自android.net.***Service类:
public class My***Service extends ***Service ...
***Service类封装了建立***连接所必须的所有函数,后面会逐步用到。
建立链接的第一步是要用合适的参数,创建并初始化好tun0虚拟网络端口,这可以通过在***Service类中的一个内部类Builder来做到:
Builder builder = new Builder(); builder.setMtu(...); builder.addAddress(...); builder.addRoute(...); builder.addDnsServer(...); builder.addSearchDomain(...); builder.setSession(...); builder.setConfigureIntent(...); ParcelFileDescriptor interface = builder.establish();
可以看到,这里使用了标准的Builder设计模式。在正式建立(establish)虚拟网络接口之前,需要设置好几个参数,分别是:
1)MTU(Maximun Transmission Unit),即表示虚拟网络端口的最大传输单元,如果发送的包长度超过这个数字,则会被分包;
2)Address,即这个虚拟网络端口的IP地址;
3)Route,其实这里并不是用来修改Android设备上的路由表,而是用来改iptables的NAT表,只有匹配上的IP包,才会被转发到虚拟端口上去。如果是0.0.0.0/0的话,则会将所有的IP包都通过NAT转发到虚拟端口上去;
4)DNS Server,就是该端口的DNS服务器地址;
5)Search Domain,就是添加DNS域名的自动补齐。DNS服务器必须通过全域名进行搜索,但每次查找都输入全域名太麻烦了,可以通过配置域名的自动补齐规则予以简化;
6)Session,就是要建立的***连接的名字,它将会在系统管理的与***连接相关的通知栏和对话框中显示出来;
7)Configure Intent,这个intent指向一个配置页面,用来配置***链接。它不是必须的,如果没设置的话,则系统弹出的***相关对话框中不会出现配置按钮。
最后调用Builder.establish函数,如果一切正常的话,tun0虚拟网络接口就建立完成了。并且,同时还会通过iptables命令,修改NAT表,将所有数据转发到tun0接口上。
这之后,就可以通过读写***Service.Builder返回的ParcelFileDescriptor实例来获得设备上所有向外发送的IP数据包和返回处理过后的IP数据包到TCP/IP协议栈:
// Packets to be sent are queued in this input stream. FileInputStream in = new FileInputStream(interface.getFileDescriptor()); // Packets received need to be written to this output stream. FileOutputStream out = new FileOutputStream(interface.getFileDescriptor()); // Allocate the buffer for a single packet. ByteBuffer packet = ByteBuffer.allocate(32767); ... // Read packets sending to this interface int length = in.read(packet.array()); ... // Write response packets back out.write(packet.array(), 0, length);
ParcelFileDescriptor类有一个getFileDescriptor函数,其会返回一个文件描述符,这样就可以将对接口的读写操作转换成对文件的读写操作。
每次调用FileInputStream.read函数会读取一个IP数据包,而调用FileOutputStream.write函数会写入一个IP数据包到TCP/IP协议栈。
这其实基本上就是这个所谓的***Service的全部了,是不是觉得有点奇怪,半点没涉及到建立***链接的事情。这个框架其实只是可以让某个应用程序可以方便的截获设备上所有发送出去和接收到的数据包,仅此而已。能获得这些数据包,当然可以非常方便的将它们封装起来,和远端***服务器建立***链接,但是这一块***Service框架并没有涉及,留给应用程序自己解决。
还有一点要特别解释一下,一般的应用程序,在获得这些IP数据包后,会将它们再通过socket发送出去。但是,这样做会有问题,程序建立的socket和别的程序建立的socket其实没有区别,发送出去后,还是会被转发到tun0接口,再回到程序,这样就是一个死循环了。为了解决这个问题,***Service类提供了一个叫protect的函数,在***程序自己建立socket之后,必须要对其进行保护:
protect(my_socket);
其背后的原理是将这个socket和真实的网络接口进行绑定,保证通过这个socket发送出去的数据包一定是通过真实的网络接口发送出去的,不会被转发到虚拟的tun0接口上去。
好了,Android系统默认提供的这个***框架就只有这么点东西。
最后,简单总结一下:
1)***连接对于应用程序来说是完全透明的,应用程序完全感知不到***的存在,也不需要为支持***做任何更改;
2)并不需要获得Android设备的root权限就可以建立***连接。所需要的只是在应用程序内的AndroidManifest.xml文件中申明需要一个叫做“android.permission.BIND_***_SERVICE”的特殊权限;
3)在正式建立***链接之前,Android系统会弹出一个对话框,需要用户明确的同意;
4)一旦建立起了***连接,Android设备上所有发送出去的IP包,都会被转发到虚拟网卡的网络接口上去(主要是通过iptables,使用NAT转发过来的);
5)***程序可以通过读取这个接口上的数据,来获得所有设备上发送出去的IP包;同时,可以通过写入数据到这个接口上,将任何IP数据包插入系统的TCP/IP协议栈,最终送给接收的应用程序;
6)Android系统中同一时间只允许建立一条***链接。如果有程序想建立新的***链接,在获得用户同意后,前面已有的***链接会被中断;
7)这个框架虽然叫做***Service,但其实只是让程序可以获得设备上的所有IP数据包。通过前面的简单分析,应该已经感觉到了,这个所谓的***服务,的确可以方便的用来在Android设备上建立和远端服务器之间的***连接,但其实它也可以被用来干很多有趣的事情,比如可以用来做防火墙,也可以用来抓设备上的所有IP包。
如何实现自己的Android MVP框架
实现Android MVP框架
一个经典的 Android MVC 框架项目的代码结构
MVP减负activity ,承担了 view 层和 controller 层的工作
View 层的 ActivityActivity 里包含: View 层的对外接口 MainView, P层 Presenter
对外接口 MainView 文件
P层代码
文件
DataManager.java
TaskDataSource.java
TaskDataSourceImpl.java
TaskDataSourceTestImpl.java
Android 版方案
通过新建子线程进行IO读写获取数据
以主线程的 Looper 将结果通过传回主线程进行渲染和展示。
Android 系统上的 Xposed 框架中都有哪些值得推荐的模块
GravityBox 超强劲的界面修改应用,CyanogenMod有的功能它都有,甚至还更全面。(GravityBox [KK] kitkat版本)(GravityBox [JB] jelly bean版本)XuiMod 可以更改特效什么的。(XuiMod | Xposed Module Repository)Greenify(又名绿色守护 (Greenify))『绿色守护』帮助你甄别那些对系统全局性能和耗电量有不良影响的应用程序,并通过独特的『绿色化』技术,阻止它们消耗您的电池电量,占用您的宝贵内存。经过『绿色化』工艺处理的应用,在您没有主动启动它们的时候,无法『偷偷』运行,而在您正常启动它们时仍然拥有完整的功能和体验,正如iPhone应用那样!AppOpsXposed 这个是专门给4.4的,可以解除Google 对Ops权限管理接口的封锁,还可以在app 详情界面的action bar 上添加一个导向Ops 的按钮。(AppOpsXposed)BootManager 开机自启动进程管理,反正我是不会去用360什么的。(BootManager | Xposed Module Repository)InstagramDownloader 下载Instagram上你中意的照片,推荐给Instagram的死忠粉。(Instagram Downloader)Tinted Status Bar 利用它搭配 Thyrus KitKat Light UI 主题能玩出很不错的花样(Tinted Status Bar [BETA])效果图如下=================2014年2月12号电脑课补充=======================XHaloFloatingWindow 是一款桌面漂浮空间,自定义后可以在桌面快速的开启应用。(XHaloFloatingWindow)XBlast Tools(原Status Bar Clock Color Mod)能够在不修改apk 的情况下允许你改变颜色的状态栏和通知栏时钟颜色。(XBlast Tools for above Android 4.0.3+)Immerse Me 可以强迫所有app 进入扩展桌面模式 (Immerse Me | Xposed Module Repository)=================2014年3月19号电脑课补充=======================XPrivacy 优秀的权限管理,不过4.3+用Ops 的朋友们可以无视。(XPrivacy | Xposed Module Repository)DisableCriticalBatteryShutdown 可以阻止系统在低电量时自动关机,榨干你的电池,不过记得保存数据!!!!(DisableCriticalBatteryShutdown)LBE Security Master - Translation International 这个是送给LBE安全大师的用户的,为LBE提供了更多语言翻译(虽然发在这里貌似没啥用)(LBE Security Master)XForceEnter 强制使用键盘回车键来打开Hangouts 中的emoji 表情键盘(XForceEnter | Xposed Module Repository)=================2014年4月19号在家里补充=======================YouTube AdAway 可以去除YouTube 里的广告(推荐给墙外用户)(YouTube AdAway)NoSafeVolumeWarning 去除耳机插入时候的音量警报,在部分国外地区可能会违反当地法律,不推荐给有小孩的知友使用(NoSafeVolumeWarning)Remove Moto G Second SIM icons 花钱买了一部Moto G 结果被双卡的两个信号栏喷了一脸狗血有木有!!!这个模块可以隐藏Moto G 的第二个信号栏(Remove Moto G Second SIM icons)显示全部
利益相关:我是所介绍的插件的开发者。UTwitterAPI | Xposed Module Repository 让你设备里几乎所有Twitter客户端可以用上API。因为打开之后就一个设置对话框,两个设置项,所以应该不需要介绍太多……Utwitterapi 有红领巾帮我写好了教程。
swipeback
分享几个我现在常用的吧。 去广告 MinMinGuard 权限管理 Xprivacy 禁止低电量自动关机 DisableCriticalBatteryShutdown //这个多数情况下还是蛮实用的 休眠省电 Greenify 开机自启管理 BootManager 下载instagram照片和视频 InstagramDownloader Mi-tools // 最大程度最小成本修改MIUI
tinted status bar 可以修改状态栏颜色 契合app的主色调 看起来舒服点我觉得
AppSettings 可以解决aosp的相机禁止旋屏后不能旋屏的问题 修改一些DIPGravityBox 自己探索吧 我用这个来禁止锁屏状态栏下拉并在状态栏添加网速显示XuiMod可以更改特效什么的
1. 强烈推荐原生拨号T9,是greenify的作者编写的。注意:激活重启后,还要要清除拨号软件的数据并重启,才有效。http://repo.xposed.info/module/com.oasisfeng.smartdial.chinese
2. Gravity Box 必备佳品,综合多个rom的特点
目前使用的是:app settingswanam xposed绿色守护(付费版)
1:Xprivacy这个可以虚拟设备信息来欺骗app(灰常赞啊)2:SNC用它可以设置其他号码来欺骗app(又是欺骗)
我也来提几个:Shadowsocks ***模式用户可以使用***Dialog Xposed Module,作用就是在连接shadowsocks时的确认对话框里自动选择信任。XPrivacy这个真的很赞,禁用某些app的权限的方式是模拟一个假的结果返回欺骗之。
android系统 主要有哪几部分?
Android的系统架构和其操作系统一样,采用了分层的架构。Android分为四个层,从高层到低层分别是应用程序层、应用程序框架层、系统运行库层和Linux内核层。
一、应用程序
Android会同一系列核心应用程序包一起发布,该应用程序包包括客户端,SMS短消息程序,日历,地图,浏览器,联系人管理程序等。所有的应用程序都是使用JAVA语言编写的。
二、应用程序框架
开发人员也可以完全访问核心应用程序所使用的API框架。该应用程序的架构设计简化了组件的重用;任何一个应用程序都可以发布它的功能块并且任何其它的应用程序都可以使用其所发布的功能块(不过得遵循框架的安全性)。同样,该应用程序重用机制也使用户可以方便的替换程序组件。
三、系统运行库
Android 包含一些C/C++库,这些库能被Android系统中不同的组件使用。它们通过 Android 应用程序框架为开发者提供服务。
四、Linux内核层
Android内核是基于Linux 内核的修改的内核版本,它提供了用于支持Android平台的设备驱动。
转载请注明出处51数据库 » 安卓软件框架图 如何开发android应用框架
巧木露琪亚












