[android]android下apk的安装过程

编程之家收集整理的这篇文章主要介绍了[android]android下apk的安装过程编程之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

搜索热词

/********************2016年4月23日更新********************************/

知乎:有什么apk分析工具?

拿到了一个apk文件,怀疑不安全,在安装到手机之前,想分析下这个apk有没有恶意行为,或者,反汇编这个文件,求指教应该用什么分析工具?如果可以,最好可以附上可靠的下载链接

 

李洋:

android-apktool 可以把你apk里面的classes.dex转换为jar格式,然后可以使用Java Decompiler 打开这个jar文件,直接可以看到里面class文件反编译的内容

不过如果之前的jar被混淆过得话,反编译之后的内容可能看起来会比较郁闷。

另外,apk里面也可能包含有NDK开发的.so文件,这个就只能用一个支持arm格式的反汇编器来看反汇编之后的汇编代码了。

 

知乎:android项目用eclipse生成apk包,eclipse完成了哪七个步骤?

前两天去面试,面试官问的,小菜表示不知道。当时他提示了一个签名。

 

谢榭:

自问自答吧 呵呵

第一步:打包资源文件生成R.java文件

【输入】Resource文件(就是工程中res中的文件)、Assets文件(相当于另外一种资源,这种资源Android系统并不像对res中的文件那样优化它)、AndroidManifest.xml文件(包名就是从这里读取的,因为生成R.java文件需要包名)、Android基础类库(Android.jar文件

输出】打包好的资源(一般在Android工程的bin目录可以看到一个叫resources.ap_的文件就是它了)、R.java文件(在gen目录中,大家应该很熟悉了)

【工具】aapt工具,它的路径在${ANDROID_SDK_HOME}/platform-tools/aapt(如果你使用的是Windows系统,按惯例路径应该这样写:%ANDROID_SDK_HOME%\platform-tools\aapt.exe,下同)。

第二步:处理AIDL文件生成对应的.java文件(当然,有很多工程没有用到AIDL,那这个过程就可以省了)

【输入】源码文件、aidl文件、framework.aidl文件

输出】对应的.java文件

【工具】aidl工具

第三步:编译Java文件生成对应的.class文件

【输入】源码文件包括R.java和AIDL生成的.java文件)、库文件(.jar文件

输出】.class文件

【工具】javac工具

第四步:把.class文件转化成Davik VM支持的.dex文件

【输入】源码文件包括R.java和AIDL生成的.java文件)、库文件(.jar文件

输出】.class文件

【工具】javac工具

第五步:打包生成未签名的.apk文件

【输入】打包后的资源文件、打包后类文件(.dex文件)、libs文件包括.so文件,当然很多工程都没有这样的文件,如果你不使用C/C++开发的话)

输出】未签名的.apk文件

【工具】apkbuilder工具

第六步:对未签名.apk文件进行签名

【输入】未签名的.apk文件

输出】签名的.apk文件

【工具】jarsigner

第七步:对签名后的.apk文件进行对齐处理(不进行对齐处理是不能发布到Google Market的)

【输入】签名后的.apk文件

输出】对齐后的.apk文件

【工具】zipalign工具

/***************************************************/

1. 先把java文件自动编译成classes文件

 

2. 把classes文件编译和打包成classes.dex文件

 

resources.ap_ : 资源文件生成的映射引用

使用sdk中的这个工具

 

 

3. 把dex文件,资源映射文件,未压缩的资源,清单文件打包成apk

 

4. 给应用程序进行签名

 

debug.keystore : 右键运行时使用这个来进行签名

 

签名信息保存到这里

 

5. 使用adbandroid debug briage)工具上传并安装apk

E:\adt-bundle-windows\sdk\platform-tools>adb install E:\adt-bundle-windows\works

pace\HelloWorld\bin\HelloWorld.apk

 

 

6. apk在手机上的安装过程

拷贝xxx.apk 到 /data/app/xxx-1.apk(系统应用存在/system/app/目录下)

 

在 /data/data 目录下创建文件夹,名称就是包名

 

同时会在/data/system/packages.xml注册文件里面添加纪录

 

<package name="com.example.helloworld" codePath="/data/app/com.example.helloworld-1.apk" nativeLibraryPath="/data/app-lib/com.example.helloworld-1" flags="572998" ft="15302011250" it="15302011475" ut version="1" userId="10048">

sigs count="1"cert index="4" key="1000位的签名" />

</sigsperms package>

 

总结

以上是编程之家为你收集整理的[android]android下apk的安装过程全部内容,希望文章能够帮你解决[android]android下apk的安装过程所遇到的程序开发问题。

如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您喜欢寻找一群志同道合、互帮互助的学习伙伴,可以点击下方链接加入:
编程之家官方1群:1065694478(已满)
编程之家官方2群:163560250(已满)
编程之家官方3群:312128206

相关文章

猜你在找的Android相关文章

/********************2016年4月23日更新********************************/ 知乎:有什么apk分析工具? 拿到了一个apk文件,怀疑不安全,在
/****************2016年4月25日 更新******************************/ 知乎:对于开发者来说,Android 的开发者选项里有哪些实用的功能? 汤涛
/**********************2016年4月23日 更新**************************************/ 知乎:在windows的cmd执行adb she
/*****************2016年4月23日 更新********************************/ 知乎:什么是 7 位元的字符? 英文字符难道不是 8 bit 是一个字
/************************2016年4月23日 更新******************************/ 知乎:android开发中,什么时候进行非空判断? 比如某个
我们的业务代码一般是放在一个新的包下面,这个业务类不能够通过右键run&#160;as&#160;java&#160;application,因为android项目只能运行在手机上的dalvak虚拟机
1. activity代码 package com.tsh.dail; import android.app.Activity; import android.content.Intent; impo
/**************2016年4月23更新*********************/ 相关技术: 知乎:用eclipse做Android开发,新建工程时应如何选择Android的版本? 肥