day_01 android 简介,基础架构

2017-12-01  本文已影响0人  123yuan123

1.安卓系统架构

分4层结构

1. application:应用程序;用Java开发

2.application frame:应用程序框架;用Java和jni开发(Java native interface)

3. libraries +android runtime dvm : 函数库和虚拟机层 ; c/c++

4. linux kernel driver :linux内核驱动层; c

2.java和android虚拟机的不同

jvm :sum

dvm :google 版权问题。

jvm : java 虚拟机; 基于栈架构,栈是内存上的一个空间,执行指令操作需要向Cpu寻址后执行。 执行的是多个.class文件。

dvm : dalvik 虚拟机;基于寄存器架构;寄存器是Cpu的一个组成部分,可以直接执行指令操作,无需寻址。执行的是一个.dex文件。

3.android工程目录结构

.java文件调用组件 : R.drawable.icon .xml文件调用组件 : @/drawable/icon

1.src :代码目录

2.gen:自动生成的文件都在该目录,不要修改; R文件,对资源文件的一个引用索引

3.android 核心jar包和第三方jar包

4.assets : 资产目录,一般存放应用程序所使用 的一些工具,数据

5.libs

6.bin : 程序编译打包过程中产生的文件都在该目录

7.res: 资源目录

drawable:图片资源

layout: 布局

menu:菜单

values: dimens 长度资源 strings 字符串 style 样式资源

4..Android的打包过程

使用工具 javac                dx.bat                                                                aapt               签名认证(jarsigner.exe)

.java---------->.class ---------->.dex(androidmanifest.xml,res ,assets)----------->.apk------------->finish apk-

adb.exe

------>devices

5.ADB指令练习

adb运行的端口是5037

adb: 建立android设备与电脑之间的链接

配置环境变量: C:\kaifa\adt-bundle-windows-x86_64_20140101\sdk\platform-tools

adb指令:

1.adb devices : 列出当前电脑所连接的android设备

2.adb push pc_filepath phone_filepath;将电脑端文件推送到手机端

3.adb pull phone_filepath pc_filepath;将手机端文件拉到电脑端

4.adb install [-r] apkfilepath ;安装应用到手机上 , -r 代表强制安装

5.adb uninstall packagename;卸载应用

6.adb kill-server 关闭adb服务链接

7.adb start-server 开启adb服务链接

8.netstat -oan 5037 对应的 Pid

9.adb shell :进入手机linux环境下

10. adb shell + logcat: 查看手机打印的日志信息

11. adb shell + ls -l : 查看手机目录结构

12.如果当前电脑链接多台android设备,要执行adb操作时需要指定操作的是哪台设备。 adb -s 设备序列号;

例如: adb -s emulator-5554 uninstall com.itheima.helloworld

6.应用代码--拨号器

publicclassMainActivityextendsActivity {

protectedvoidonCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

// 获得组件ID

finalEditTextphone_number=(EditText)findViewById(R.id.phone_number);

Button call_bt=(Button)findViewById(R.id.call_number);

//绑定监听事件使用匿名内部类进行实现接口

call_bt.setOnClickListener(newOnClickListener() {

@Override

publicvoidonClick(View v) {

//获取文本框内的内容,在内部类中使用外部类的成员时,成员必须是final

String number=phone_number.getText().toString().trim();

//判断内容不能为空

if(TextUtils.isEmpty(number))

{

//输出提示信息

Toast.makeText(MainActivity.this,"不能为空", 1).show();

return;

}

//拨打电话时需要创建一个意图对象

Intent in=newIntent().setAction(Intent.ACTION_CALL);

//注意冒号

in.setData(Uri.parse("tel:"+number));

//开启意图

startActivity(in);

}

});

}

}

上一篇下一篇

猜你喜欢

热点阅读