使用命令对APK包签名
生成key store库
keytool -genkeypair -alias crazyit -keyalg RSA -validity 400 -keystore crazyit.jks
- -genkeypair:指定生成数字证书
- -alias:指定生成数字证书的别名
- -keyalg:生成数字证书的算法,RSA
- -validity:生成数字证书有效期
- -keystore:数字证书存储路径
按照指令输入一些配置,此时会生成未签名APK包
- 使用jarsigner命令对未签名APK包进行签名
jarsigner -verbose -keystore crazyit.jks -signedjar
helloworld_crazyit.apk app_relese_unaligned.apk crazyit
- -verbose:指定生成详细输出
- -keystore:数字证书的存储路径
- -singedjar:3个参数分别为:签名后的APK包、未签名的APK包、数字证书的别名
android四大组件
- Activity:负责与用户交互的组建,setContentView(View或者布局管理资源)显示指定组件
Service:通常位于后台运行,有自己独立的生命周期
BroadcastReceiver:广播消息接收器,监听事件源是组件
- 实现BroadcastReceiver子类
- 重写onReceive(Context context, Intent intent)
- 其他组件通过sendBroadcast(),sendStickyBroadcast(),sendOrderedBroadcast()发送广播信息
- 如果该BroadcastReceiver子类也对该send出的消息“感兴趣”(使用IntentFilter[意图过滤器]配置),BroadcastReceiver的onReceiver()方法将会被触发
- 通常用两种方式来注册该组件
- 1、Java代码中Context.registReceiver()注册
- 2、AndroidMainfest.xml中使用
<receiver.../>
4.contentProvider:应用之间数据交换,实现以下抽象方法:
- insert(Uri, ContentValue)向contentProvider插入数据
- delete(Uri, ContentValue)删除ContentProvider指定数据
- update(Uri, ContentValue, String, String[])更新指定数据
- query(Uri, String[], String, String)
Intent和IntentFilter
Intent封装了当前组件需要启动或者触发的目标组件的信息,Activty,Servise,BroadcastReceiver组件之间通信都以Intent为载体
显式Intent:指明要启动或者触发的组件名
隐式Intent:指明要启动或者触发的组件需要满足声明条件,须解析出它的条件,再查找出符合条件的组件,启动或者触发它,组件通过IntentFilter来声明自己能处理那些Intent
AndroidManifest.xml清单文件
P30,一些元素和配置所代表的意思
权限说明
1、声明运行该应用程序本身所需要的权限
在manifest…下添加子元素uses-permission..
2、声明调用该应用所需的权限
在组件元素下添加子元素uses-permission…声明调用该程序所需的权限