右击项目名称,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)的更多相关文章

  1. android菜鸟学习笔记17----Android数据存储(一)文件读写

    假如有如下需求,要求能够记录用户输入的用户名和密码,下次登录时,能直接获取之前保存的用户名密码,并在相应的EditText中显示. 要保存用户输入的数据,最先想到的应该就是文件读写了. 通过对andr ...

  2. android菜鸟学习笔记7----android布局(二)

    3.FrameLayout:帧布局 如同Flash或者photoshop中图层的概念,在上面的图层遮盖下面的图层,没被遮到的地方仍然显示出来. 右击res/layout,然后在弹出的菜单中选择new, ...

  3. android菜鸟学习笔记15----Android Junit测试

    Android中的Junit测试与Java Junit测试有所不同,不能简单的使用标注…… 假设写了一个MathUtils类,有两个静态方法: public class MathUtils { pub ...

  4. android菜鸟学习笔记2----关于adb

    adb : android debug bridge android调试桥 路径:adt-bundle目录/sdk/platform-tools/adb.exe 常见的adb命令: adb devic ...

  5. android菜鸟学习笔记8----Activity(一)

    Activity是android应用程序中重要的组件之一,常听到的android四大组件是Activity.Service.BroadcastReceiver和ContentProvider.它间接继 ...

  6. android菜鸟学习笔记1----环境搭建

    Step1 JDK安装及配置: 1.下载并安装JDK: 根据自己系统情况,选择安装相应的JDK版本 当前系统:64位WIN8,内存8G 选择了Java SE 8u45 即JDK 1.8.0_45,可以 ...

  7. Android开发学习笔记-自定义组合控件的过程

    自定义组合控件的过程 1.自定义一个View 一般来说,继承相对布局,或者线性布局 ViewGroup:2.实现父类的构造方法.一般来说,需要在构造方法里初始化自定义的布局文件:3.根据一些需要或者需 ...

  8. android菜鸟学习笔记4----android项目结构

    src: 应用程序源代码存放目录 gen: 自动生成的目录,目录中存放所有由Android开发工具自动生成的文件. 目录中最重要的就是R.java文件. 这个文件由Android开发工具自动产生的.A ...

  9. android菜鸟学习笔记29----Android应用向用户发送提示信息的方式总结

    常见的向用户发送提示信息的方式有3种,分别为: 1)发送Toast信息 2)弹出对话框 3)发送通知 总结如下: 方式1:发送Toast信息: 这种方式最简单,在之前的学习中多次使用过.Toast是在 ...

随机推荐

  1. 迷宫问题(DFS,BFS)

    /******************************** 啊哈!算法 深度优先搜索算法 迷宫问题 输入: 5 4 0 0 1 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 ...

  2. CSU 1777: 大还是小?【模拟/后导0】

    293419 roniking 1777 Accepted 2032 0 C++ 2000 2018-04-03 19:21:25 Description 输入两个实数,判断第一个数大,第二个数大还是 ...

  3. Linux系统日常运维-修改IP地址

    分享下高手写的很好的文章 IP地址.子网掩码.网络号.主机号.网络地址.主机地址 step 0: check the iptables.selinux service iptables iptable ...

  4. luogu P2949 [USACO09OPEN]工作调度Work Scheduling

    题目描述 Farmer John has so very many jobs to do! In order to run the farm efficiently, he must make mon ...

  5. MAC(Linux)升级Openssl

    系统上一般默认安装的是0.9.8版本的Openssl,不能满足需要.这时候就要重新安装Openssl. 上官网下载新版openssl:https://www.openssl.org/source/ 解 ...

  6. workflow engine Ruote初体验之三(条件与美元符号)

    条件 我们可以用:if和:unless公共属性来进行条件判断,或者使用if,given,once或者equals(已经过时)关键字. 使用:if属性: 1 cursor do 2 participan ...

  7. 使用charles远程调试iOS移动应用

    做iOS移动应用很多开发者会喜欢抓网络发包.回包来联调服务端借口以及定位其他网络问 题.如果在Windows系统可以使用fiddler来做iOS的远程代理,只要fiddler所在系统与iOS设备同时连 ...

  8. 【spring boot】12.spring boot对多种不同类型数据库,多数据源配置使用

    2天时间,终于把spring boot下配置连接多种不同类型数据库,配置多数据源实现! ======================================================== ...

  9. Linux命令之basename 命令

        用途 返回一个字符串参数的基本文件名称. 语法 basename String [ Suffix ] 描述 basename 命令读取 String 参数,删除以 /(斜杠) 结尾的前缀以及任 ...

  10. 为什么要点两下才能删除一个li节点 原来是空白节点作怪

    奇怪吧,下面的代码居然要点两次button才能删除一个li节点: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional// ...