android菜鸟学习笔记16----Android项目打包安装过程(Run as Android Application)
右击项目名称,Run as Android Appication之后,Android项目打包安装过程:
1.打包生成.apk文件:
1)把源码中的.java文件编译生成.class文件
2)将所有的.class文件通过dex.bat生成为classes.dex文件
3)生成资源索引表文件 resources.ap_
4)将项目的配置文件Manifest.xml转换为二进制文件
5)使用debug.keystore对整个项目进行打包签名,如果有配置ANDROID_SDK_HOME这个环境变量来存放模拟器的话,debug.keystore就在该目录的.android目录下。若没有配置,一般放在了C:\Users\用户名\.android目录下。
2.将生成的.apk文件加载到模拟器中:
默认放置到/data/local/tmp中
3.安装加载到模拟器中的apk文件:
1)把/data/local/tmp/xxx.apk文件,剪切到/data/app/目录下,并重命名一般是变为XXX-1.apk或者XXX-2.apk
2)在/data/data/文件夹下以包名创建一个文件夹, 用于存储当前程序的数据
3)在/data/system/packages.xml和/data/system/packages.list文件中分别添加一条记录,以便于系统管理该应用。
查看具体过程,可以通过新建一个项目,然后Run as Android Application来查看,如下:
新建一个android项目,名为011launch_process:

注意到,此时bin下面只有一个res目录,而res此时也是空的
此时打开File Explorer视图:(window ->show view->other中找到)
注意/data/local/tmp目录,此时为空

然后右击项目名称,Run as Android Application:

此时,bin目录中多出了很多文件
而且,如果注意观察/data/local/tmp目录,会发现多出来一个文件,然后又消失了

然后进入到/data/app/,会发现这个目录下多出了一个文件,然后一直都存在着。

而且,/data/data/下多出了一个与项目包名相同的目录

将/data/system/packages.xml和/data/system/packages.list导出,然后查看内容:
packages.xml中多出下面package节点:
<package name="cn.csc.launch_process" codePath="/data/app/cn.csc.launch_process-1.apk" nativeLibraryPath="/data/data/cn.csc.launch_process/lib" flags="0" ft="14e6b736328" it="14e6b737636" ut="14e6b737636" version="1" userId="10049"> <sigs count="1"> <cert index="1" /> </sigs> <perms /> </package>
packages.list中多出下面一行:
cn.csc.launch_process 10049 1 /data/data/cn.csc.launch_process
以上,就是Run as Android Application的完整过程。
android菜鸟学习笔记16----Android项目打包安装过程(Run as Android Application)的更多相关文章
- android菜鸟学习笔记17----Android数据存储(一)文件读写
假如有如下需求,要求能够记录用户输入的用户名和密码,下次登录时,能直接获取之前保存的用户名密码,并在相应的EditText中显示. 要保存用户输入的数据,最先想到的应该就是文件读写了. 通过对andr ...
- android菜鸟学习笔记7----android布局(二)
3.FrameLayout:帧布局 如同Flash或者photoshop中图层的概念,在上面的图层遮盖下面的图层,没被遮到的地方仍然显示出来. 右击res/layout,然后在弹出的菜单中选择new, ...
- android菜鸟学习笔记15----Android Junit测试
Android中的Junit测试与Java Junit测试有所不同,不能简单的使用标注…… 假设写了一个MathUtils类,有两个静态方法: public class MathUtils { pub ...
- android菜鸟学习笔记2----关于adb
adb : android debug bridge android调试桥 路径:adt-bundle目录/sdk/platform-tools/adb.exe 常见的adb命令: adb devic ...
- android菜鸟学习笔记8----Activity(一)
Activity是android应用程序中重要的组件之一,常听到的android四大组件是Activity.Service.BroadcastReceiver和ContentProvider.它间接继 ...
- android菜鸟学习笔记1----环境搭建
Step1 JDK安装及配置: 1.下载并安装JDK: 根据自己系统情况,选择安装相应的JDK版本 当前系统:64位WIN8,内存8G 选择了Java SE 8u45 即JDK 1.8.0_45,可以 ...
- Android开发学习笔记-自定义组合控件的过程
自定义组合控件的过程 1.自定义一个View 一般来说,继承相对布局,或者线性布局 ViewGroup:2.实现父类的构造方法.一般来说,需要在构造方法里初始化自定义的布局文件:3.根据一些需要或者需 ...
- android菜鸟学习笔记4----android项目结构
src: 应用程序源代码存放目录 gen: 自动生成的目录,目录中存放所有由Android开发工具自动生成的文件. 目录中最重要的就是R.java文件. 这个文件由Android开发工具自动产生的.A ...
- android菜鸟学习笔记29----Android应用向用户发送提示信息的方式总结
常见的向用户发送提示信息的方式有3种,分别为: 1)发送Toast信息 2)弹出对话框 3)发送通知 总结如下: 方式1:发送Toast信息: 这种方式最简单,在之前的学习中多次使用过.Toast是在 ...
随机推荐
- 搭建https本地服务器:如何得到被所有客户端认可的ssl证书
https,作为http的加密版,作用还是很大的:能够提升网站搜索权重,让你的网站更安全,而且如果你的网站没有使用https的话,将无法作为移动设备原生应用的api接口.可见掌握为网站启用https的 ...
- python-re之中文匹配
#coding=utf-8 import re import chardet#检测网页编码形式的模块 p = re.compile(r'\d+') print p.findall('one1two2t ...
- (6)python tkinter-容器、子窗体
Frame f = tkinter.Frame(width=380, height=270, bg='white').pack() LabelFrame f = tkinter.LabelFrame( ...
- UVA 10827 Maximum sum on a torus 最大矩阵和
题目链接:UVA - 10827 题意描述:给出一个n*n矩阵,把第一行和最后一行粘一起,把第一列和最后一列粘一起,形成一个环面,求出这个环面中最大的矩阵和. 算法分析:首先复制n*n这个矩阵,形成由 ...
- dede实战系统:更换成kindEditor编辑器
最近由于项目需要,在搞dedeCMS,发现dede自带的ckEditor在word粘贴这方面做得不是很好,从word上面直接ctrl+V的内容跟wrod上面的表现样式相差很大,客户很不爽(因为是编辑的 ...
- apache服务器日志及重启方法
进入 lamp安装目录 ./ctlscript.sh restart 重启 实时查看日志 tail -f error_log 查看日志方法 404 及某天的方法cat access_log_201 ...
- ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock'
原因:找不到mysql.sock文件 解决方法: 1 找到mysql.sock文件位置 echo "show variables" | mysql | grep "soc ...
- MongoDB 快速入门
本作品由Man_华创作,采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可.基于http://www.cnblogs.com/manhua/上的作品创作. MongoDB No ...
- .NET实现爬虫
前几天看到一个.NET Core写成的爬虫,有些莫名的小兴奋,之前一直用集搜客去爬拉勾网的招聘信息,这个傻瓜化工具相当于用HTML模板页去标记DOM节点,然后在浏览器窗口上模拟人的浏览行为同时跟踪节点 ...
- PHP如何识别系统语言或浏览器语言
preg_match('/^([a-z\-]+)/i', $_SERVER['HTTP_ACCEPT_LANGUAGE'], $matches); $lang = $matches[1]; switc ...