来源:蜘蛛抓取(WebSpider)
时间:2018-07-13 18:12
标签:
华为手机p20
经过核实后将会做出处理,感谢您为社区和谐做出贡献。
请选择删除原因
确定推荐该回答?
卸载软件时出现 没法打开此安装包 请确认该程序包存在 未找到该软件的安装路径 该软件是8.0.0.1. 这是啥
这是你点了在线注册见意在下载Corel Painter IX 5 真正简体中文版 里面有注册机 以下是自己安装时归纳的步骤: 1.双击setup.exe安装 2.安装完会弹出一个在线注册界面,不管关了它 3.运行程序,在弹出的注册页面点第二个&立刻注册&-&&电话注册& 4.打开&Corel Painter IX.5 毨傌机.exe&(如果双击后没反应,右点-&属性-&兼容性,钩选下面的&禁用视觉样式&,确定) 5.注册也许你下载过安卓程序结尾是***.apk的软件,这个就是我们安卓系统的电子产品的安装程序包,通过手机或者数据线连接电脑在线安装的游戏或者一些应用,下面就让我们来了解一下什么是apk吧!
APK是Package的缩写,即Android安装包(apk)。
通过将APK文件直接传到Android模拟器或Android手机中执行即可安装。
APK文件其实是zip格式,但后缀名被修改为apk,通过UnZip解压后,可以看到Dex文件,Dex是Dalvik VM executes的全称,即Android Dalvik执行程序,并非Java ME的字节码而是Dalvik字节码。
apk的结构:
1. META-INF\ (注:Jar文件中常可以看到);
2. res\ (注:存放资源文件的目录) ;
3. AndroidManifest.xml (注:程序全局配置文件) ;
4. classes.dex (注:Dalvik字节码);
5. resources.arsc (注:编译后的二进制资源文件)。
Android在运行一个程序时首先需要UnZip,然后类似Symbian那样直接,和Windows Mobile中的PE文件有区别。
Android是一个基于Java的开发环境,它是一种与广被接受的 Java极为类似,而且也比C++容易的多的开发语言,这将一种移动开发的规范。Google也在API文档的书写和样例的提供上做了很出色的工作。
其实再要深入了解apk的构做,必须学会C++和Java等的课程,对一位普通用户简单解释来说apk就是与电脑的exe功能类似,是一个打包了的安装程式。
来自 社区电脑版
好冷清啊。
来自 社区手机版
我又学习进步了。谢谢楼主。
来自 社区手机版
呵呵,,≥μ≤& &&&
& && && && && && &&&∞
来自 社区手机版
来自 社区手机版
24小时全国服务热线
400-678-9688
公众号:vivo智能手机
生活号:vivo智能手机
公众号:vivo智能手机
生活号:vivo智能手机
保存二维码安卓的APK安装包里都有些什么?
我的图书馆
安卓的APK安装包里都有些什么?
apk其实就是一个压缩文件,把它的文件扩展名改成zip格式之后可以直接解压,今天,我们拆开一个安卓应用的安装包,看看里面到底都有些什么。我们开刀的小白鼠是微软的待办事项应用——Microsoft To-Do。▲因为apk是个压缩文件,所以直接把它的扩展名改为zip即可。将安装包解压后,我们可以看到里面的一些文件夹和文件:应用程序所有的代码、资源和配置文件都在里面,我们来一个一个看。一、/assets通常这个文件夹里存放的是一些静态文件,比如说明文档或者字体文件,我们以Microsoft To-Do的安装包为例,它的/assets目录下有个名为fonts的子目录,打开它,我们可以看到三个ttf格式的字体文件。当然了,不同类型应用的安装包,它/assets里面包含的资源也是不同的,比如有些浏览器应用的/assets目录下有很多html格式的文件,这些文件用旗鱼浏览器可以直接打开:二、/META-INF通常这个文件夹里存放的是安装包的签名证书和安装包中所有文件哈希值的计算结果。应用程序的安装包在打包的时候,每个文件都会经过校验计算,计算结果就存放在/META-INF里,我们可以直接使用文本编辑器来打开后缀名为MF和SF的记录这些文件校验计算结果的文件:在我们安装一个应用的时候,系统会首先根据/META-INF里的文件校验结果来核实安装包中文件的正确性和完整性,目的是确保安全,避免用户安装到遭受过病毒感染的或者被恶意篡改过的应用程序。这个文件夹下的RSA格式的文件是开发者对该应用程序进行签名的签名证书文件,你若玩过塞班系统,那应该对这个词并不陌生,这也是为了保证应用程序和系统的安全,签名文件不是纯文本格式,不过当我们用文本编辑器打开它时,可以在乱码中零散地看到Microsoft Corporation字样。三、/resres是resource的缩写,里面存放的是应用程序的资源文件,比如图片素材和布局文件,这个文件夹下有很多子目录,其中,以anim开头的文件夹,通常里面存放的是应用程序的动画效果资源;以color开头的文件夹,通常里面存放的是应用程序的各种颜色值;以drawable开头的文件夹,通常里面存放的是应用程序的图片或图形资源;有些以drawable开头的文件夹在结尾会跟着诸如hdpi、xhdpi这样表示解析度的字符,目的是适配不同分辨率的屏幕。我们来进入一个以drawable开头的文件夹,可以看到里面有png和webp格式的图片,其中,webp格式的图片可以用旗鱼浏览器打开:以layout开头的文件夹,通常里面存放的是应用程序的界面布局文件;以mipmap开头的文件夹,Microsoft To-Do在里面存放了应用图标。四、/AndroidManifest.xmlAndroidManifest.xml是一个单独的文件,里面包含很多信息,比如应用程序的包名、数据权限、接口权限、版本信息、安装参数等等,另外,它还可以声明应用程序的每一个组件及其属性,声明应用程序所申请的权限、进程,声明显示模式等等,AndroidMainfest.xml里面包含的信息太多了,单独为它开一篇文章都不为过。这是一个非常重要的文件,它的名称是固定的,不能随意修改。五、/classes.dex这是可在安卓的Dalvik虚拟机中直接运行的字节码,是由JAVA的源代码经过复杂的编译形成的,和传统的.class文件相比,dex文件的运行效率更高。六、/lib虽然Microsoft To-Do的安装包中不包含这个文件夹,不过它在其他安卓应用程序安装包中的出镜率还是挺高的,通常这个文件夹中会存放一些应用程序依赖的库,一般以.so结尾。你可能会问了,你带我把apk拆开了,可是里面的东西有好多都看不了啊,打开以后是乱码,有什么用啊?不要着急,请接着往下看。七、安卓应用的反编译是的,安卓应用安装包里的很多文件中的内容我们是不能直接看到的,比如Microsoft To-Do应用,它里面的xml文件和dex文件用文本编辑器打开以后显示的是乱码,如果你想愉快地看到这些文件的真身,那就需要对它的安装包进行反编译。要对安卓应用进行反编译,我们需要做一下准备:环境准备:安装JAVA:官网地址:https://www.java.com/zh_CN/如何判断你的JAVA是否安装成功了呢?很简单,打开命令提示符,输入命令:java回车,如果显示如下:那就说明JAVA安装成功了。工具准备:apktool:https://pan.baidu.com/s/1kVOEWtTdex2jar:https://pan.baidu.com/s/1jIqQZBKjd-gui:https://pan.baidu.com/s/1kVG7wub在开始之前我们先来说说这三个工具是干啥的。apktool的作用是把apk中那些直接打开之后显示为乱码的xml文件翻译成明文;dex2jar的作用是将classes.dex转化为.jar文件;jd-gui的作用是查看.jar文件中的源代码。我们开始吧。首先,我们新建一个文件夹(任何位置都可以,答主把文件夹建在了桌面上),然后把我们下载好的三个工具扔进去;解压那两个zip格式的压缩包到当前文件夹;接着把你要处理的apk文件扔到这个文件夹中的某个地方,答主的做法是在这个文件夹里再建了一个名为apk的文件夹,把apk文件扔到了apk文件夹里:准备工作至此完成,我们开始翻译xml。打开命令提示符,cd进你刚刚新建的存放着那三个工具的目录,以答主的电脑为例,则是输入命令:cd C:\Users\Lenovo\Desktop\apktools接着,输入命令:java -jar apktool_2.0.1.jar d -f [apk文件所在位置.apk] -o MMTS然后回车。以答主的为例,则是输入:java -jar apktool_2.0.1.jar d -f C:\Users\Lenovo\Desktop\apktools\apk\todo.apk -o MMTS如果一切顺利的话,将显示如下:这时,你来到你那三个工具所在的文件夹,你会看到里面新增了一个文件夹,名为MMTS,打开它,你就会看到你想要的东西:我们来尝试打开一个xml文件:很好,这次终于不是乱码了。接着我们来反编译应用程序的java源代码。我们来到存放那三个工具的文件夹,打开里面的dex2jar-2.0文件夹,把apk包中的classes.dex扔进去。打开命令提示符,cd进dex2jar-2.0所在目录;输入命令:d2j-dex2jar classes.dex回车。如果一切顺利的话,将显示如下:这时,我们回到dex2jar-2.0文件夹,可以看到一个新生成的名为classes-dex2jar.jar的文件,这就是我们需要的文件。我们来到存放那三个工具的文件夹,打开里面的jd-gui-windows-1.4.0文件夹,双击jd-gui.exe来运行jd-gui。依次点击File-Open file,选择我们刚刚得到的classes-dex2jar.jar,打开它,你就能看到应用程序的JAVA源代码了。需要注意的是,有些应用,它的class是被混淆过的(比如Microsoft To-Do,如下图):里面的类文件名称和方法名称都采取了a、b、c…这样的命名方式。这样做为了防止反编译,不过就算这样,我们通过反编译得到的源代码也不是不能看。
[转]&[转]&[转]&[转]&[转]&[转]&
喜欢该文的人也喜欢23 条评论分享收藏感谢收起赞同 1添加评论分享收藏感谢收起写回答后使用快捷导航没有帐号?
其他登录方式
—— 新手入门 ——
—— 智友精华 ——
查看: 11488|回复: 178
在线时间10509 小时最后登录阅读权限180UID1933937注册时间积分25953精华57
主题帖子 金币1557 元 智豆1421 点
本帖最后由 Ry09iu 于
19:03 编辑
今天楼主来跟大家讲点有内容的姿势,讲讲apk中的资源及其调用问题,内容倒不算难,有兴趣的筒子们来学习下吧
apk内的资源无非就是style drawablecolor dimen 等等之类的资源,这些都存在于apk反编译的res文件夹下,res下还有个values文件夹。这个是resourses.arsc反编译出来的目录,它与res目录本身是同级关系。(也可以理解为路径是一致的)
就是说,在调用时,调用res目录的文件与values里的资源语法上是一样的引用路径。
在res/drawable目录下的图片aaa.png的调用语句是@drawable/aaa,调用values内 drawables.xml中项目名为bbb的值,调用语句格式一样是@drawable/bbb,说明res目录与values的同级性。
资源的类型又分为多种,分类方法也不同。按照资源所处的位置分为本身资源和系统框架资源,本身资源存在于本身apk中,系统框架资源存在于系统的资源框架。
即:framework-res.apk(注意,有的ROM中还有副框架)
还有种分法:即文件资源与value资源。
文件资源:例如res目录中drawable下的图片
value资源:例如values目录下某个xml中定义的项目(例如color类的RGB色值)。
19:00 上传
注意:每个资源都有唯一一个对应的资源名称,并且在apk回编译过程中会为每个资源创建一个唯一的资源id,此id值存在于values下的publics.xml内。一般情况下,在xml中调用资源都是引用的资源的资源名称,在smali里调用资源一般引用资源id。
对于文件类资源就是文件名。(注意:****.9.png这个资源的资源名不是****.9而是****,这是由于.9图的特殊性。例如aaa.9.png的资源名是aaa),对于value资源来说就是&res_type name=&****&&*****&/res_type&& &前一个***的内容就是资源名。后一个****是资源值。
例如:&dimen name=&background_application_manage_item_operation_width&&80.0dip&/dimen&复制代码res_type就是资源类型(第一种分法),这里资源类型是dimen型。background_application_manage_item_operation_width就是资源的名称了,80.0dip就是资源值。
apk在调用某个资源时语法都是“@包名:目录/资源名”,当调用本身资源时,包名以及后面的“:”直接省略。调用系统资源时包名用android,即@android:目录/资源名
可能大家就疑问了,那调用的既不是内部资源也不是系统资源怎么办呢?看上面,语句格式 “@包名:目录/资源名”,那么如果你想调用一个第三方apk的资源就是这种调用方法!
可能着让你你很欣喜,急于去尝试了。但你发现...你失败了...原因是什么?看下面附件的内容
游客,查看隐藏内容请或一键去隐藏
那么原因找到了,一般的apk资源设置了读写保护而且没有和系统共用share_userid,并且签名还不一致,导致不能直接用@包名:目录/资源名这种方法直接调用其他apk资源。那么...你想调用其他的...自己去开发apk吧....别的没办法了...........
说到上面的语法提到了包名,包名就是作为识别apk应用唯一性的依据,包名定义在AndroidManifest.xml中,一般是package=******,*****即为包名。
当你安装相同的apk的不同版本时为什么新版本会自动替换旧版本?原因就是检测到了包名相同,后来的apk会替换之前的。
在顺便说一下这个过程的原理。
我们都知道安装到手机的apk都在/data/app目录下,那么看一下这里面apk文件的特点...发现名称都被命名成了com.****.*****.*****-1获得com.****.*****.*****-2这种,有的不是com开头,其实都一样,除掉最后面的-1或-2,其实这个就是apk的包名!!!
虽然你安装之前文件名不是包名,但安装过程中系统已经自动读取包名并且把他重命名到apk文件名,并且把apk内的.so移到对应目录,并生成外部dex等等。首次安装会在文件名后面默认加-1。即com.****.*****.*****-1这种。如果你安装新版的时候呢?
替换过程是这样的,它首先会保持原来的程序的运行,并安装新版,一切过程相同,只是一开始安装程序检测到含有相同包名的apk存在,这会使本次安装的一个地方产生变化,即apk命名时,变成com.****.*****.*****-2了,这样安装好了新版之后,在结束掉****.****.****.***-1这个程序的进程。并切换到-2.(有的可能只是结束-1,不会启动-2。)这样就完成apk升级了。在然后再升级呢?会命名-1,这样就在-1和-2之间循环了。所以你看到/data/app下包含-1和-2都有,一般木有-3.....—_—!!
游客,查看隐藏内容请或一键去隐藏
楼主很赞!赏波666
打赏排行榜
楼主共收获打赏:
?靓??╯若打赏
虚位以待打赏
虚位以待打赏
查看更多打赏排行榜
技术达人,奖励奉上
总评分:&金币 + 5&
在线时间29 小时最后登录阅读权限20UID注册时间积分406精华0
, 积分 406, 距离下一级还需 294 积分
主题帖子 金币1624 元 智豆479 点
支持楼主,在智友社区我只看好你!
在线时间63 小时最后登录阅读权限20UID注册时间积分198精华0
, 积分 198, 距离下一级还需 2 积分
主题帖子 金币236 元 智豆111 点
你说我是打宽牌酱油还是海天酱油还是李锦记酱油呢???
在线时间441 小时最后登录阅读权限35UID4698159注册时间积分1301精华0
, 积分 1301, 距离下一级还需 499 积分
主题帖子 金币10778 元 智豆962 点
谢谢楼主分享
在线时间2 小时最后登录阅读权限20UID注册时间积分105精华0
, 积分 105, 距离下一级还需 95 积分
主题帖子 金币685 元 智豆549 点
看看& &&&兔兔
在线时间149 小时最后登录阅读权限20UID注册时间积分542精华0
ツマラナイ
, 积分 542, 距离下一级还需 158 积分
主题帖子 金币1517 元 智豆447 点
感谢分享~~~~~~~~
在线时间50 小时最后登录阅读权限20UID注册时间积分398精华0
, 积分 398, 距离下一级还需 2 积分
主题帖子 金币900 元 智豆443 点
不错不错不错
在线时间0 小时最后登录阅读权限20UID注册时间积分363精华0
, 积分 363, 距离下一级还需 37 积分
主题帖子 金币620 元 智豆203 点
呵呵哈哈哈
在线时间117 小时最后登录阅读权限20UID注册时间积分181精华0
, 积分 181, 距离下一级还需 19 积分
主题帖子 金币335 元 智豆50 点
谢谢分享……
在线时间14 小时最后登录阅读权限20UID注册时间积分231精华0
, 积分 231, 距离下一级还需 169 积分
主题帖子 金币2647 元 智豆2323 点
谢谢分享,
ATX破晓勋章
申请勋章—请下载智友客户端—我—勋章下申请
ATX新月勋章
申请勋章—请下载智友客户端—我—勋章下申请
ATX龙腾勋章
申请勋章—请下载智友客户端—我—勋章下申请
ATX导师勋章
申请勋章—请下载智友客户端—我—勋章下申请
ATX打杂勋章
申请勋章—请下载智友客户端—我—勋章下申请
ATX风雅勋章
申请勋章—请下载智友客户端—我—勋章下申请
ATX预备队勋章
申请勋章—请下载智友客户端—我—勋章下申请
安智C团队勋章
申请勋章—请下载智友客户端—我—勋章下申请
FIUI内测勋章
申请勋章—请下载智友客户端—我—勋章下申请
FIUI合作开发组勋章
申请勋章—请下载智友客户端—我—勋章下申请
申请勋章—请下载智友客户端—我—勋章下申请
Flyme适配团队
申请勋章—请下载智友客户端—我—勋章下申请
手机 笔记本 血糖仪 USB声卡 耳机