如何再linux下运行apk程序

如何再linux下运行apk程序,第1张

Linux上的软件少得可怜,要是能够直接运行安卓程序,那将是意见很酷的事情。方法原理:首先这个方法不需要开启安卓虚拟机,是直接在Linux上运行的。 谷歌在很早之前提出了archon的方案,能够直接在PC端运行安卓app,但是并不是很完善,所以不保证所有app可运行,请自测。后来deepin对其进行了加强,在此感谢深度团队。部分为转载内容,再次感谢原作者。理论基于Debian的系统都可以,本人基于Linux mint17.3,其他Linux发行版请自行测试。一、安装运行环境首先要安装chrome浏览器,可到 http://www.google.cn/chrome/browser/desktop/index.html 下载在我提供的资源网址中,选择环境包文件夹安装 archon-integration*.deb 和 deepin-archon*.deb即可二、安装安卓app1.安装打包好的安卓app的deb包直接在我提供的资源网址中,选择Android-apps文件夹下的对应安卓app的安装包即可也可以到网址: http://packages.deepin.com/deepin/pool/non-free/a/ 下载对应的安卓app安装包2.直接运行apka.下载测试的安卓apk程序,请尽量下载Pad版本;b.解压apk程序,终端执行:/usr/lib/node_modules/chromeos-apk/chromeos-apk --archon -t --scale --name "Android App" xxx.apk ##xxx.apk为被解压的apk文件名c.测试运行,终端执行:/lastore/framework/myarchon/archonrun --silent-launch --load-and-launch-app=被解压apk程序的完整路径如果想一部到位,仅仅是测试的,也可以下载环境包中的Android.sh.zip 解压出 Android.sh运行android.sh xx.apk即可看到软件运行情况。

APK是Android Package的缩写,即Android安装包(apk)。

APK是类似Symbian Sis或Sisx的文件格式。通过将APK文件直接传到Android模拟器或Android手机中执行即可安装。apk文件和sis一样,把android sdk编译的工程打包成一个安装程序文件,格式为apk。

APK文件其实是zip格式,但后缀名被修改为apk,通过UnZip解压后,可以看到Dex文件,Dex是DalvikVM executes的简称,即Android Dalvik执行程序,并非Java ME的字节码而是Dalvik字节码。Android在运行一个程序时首先需要UnZip,然后类似Symbian那样直接,和Windows Mobile中的PE文件有区别。

格式定义

在Android平台中dalvik

vm的执行文件被打包为apk格式,最终运行时加载器会解压然后获取编译后的androidmanifest.xml文件中的permission分支相关的安全访问,但仍然存在很多安全限制,如果你将apk文件传到/system/app文件夹下会发现执行是不受限制的。安装的文件可能不是这个文件夹,而在androidrom中,系统的apk文件默认会放入这个文件夹,它们拥有着root权限。

文件结构

1.

META-INF\

(注:Jar文件中常可以看到);

2.

res\

(注:存放资源文件的目录)

3.

AndroidManifest.xml

(注:程序全局配置文件)

4.

classes.dex

(注:Dalvik字节码);

5.

resources.arsc

(注:编译后的二进制资源文件)。

如果一定要安装在linux有二种方法:

1.

在linux下先安装虚拟机;

2.

在linux下安装模拟器;

然后在虚拟机或模拟器中安装该apk文件

2、反编译过程

1)反编译出资源文件

使用apktool工具,进入apktool所在的目录下,使用如下的命令:

./apktool d ./xxx.apk(apk所在的路径)

d表示decode,在当前目录下就会生成一个名为xxx的目录,里面就是反编译出来的各种资源文件,其中res表示资源文件,smali表示源代码,不过是字节码,不能直接查看。

以本人的实验为例子,如下图所示:

此时会在当前目录下生成一个目录app-debug。

2)源代码的反编译

a)因为apk文件其实是使用zip进行打包压缩生成的文件,所以先把xxx.apk文件改名为xxx.zip文件,并对其进行解压。

b)进入解压后的目录,其中有一个classes.dex文件,这个文件就是java文件编译再通过dx工具打包而成的,源代码就包含在这个文件中。

c)把前一步生成的文件classes.dex复制到dex2jar工具的根目录中,并使用如下命令对其进行反编译:

./dex2jar.sh d classes.dex

就会在当前目录下生成一个classes_dex2jar.jar文件

d)点击打开jdgui工具,这是一个图形化的工具,然后打开上上述的classes_dex2jar.jar文件就可以看到apk对应的源代码。

对于本人的实验如下:


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/7249201.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-03
下一篇 2023-04-03

发表评论

登录后才能评论

评论列表(0条)

保存