⑴ java 解压缩 APK 并重新局部替换文件后打包 怎么弄
你是想要反编译别人的apk吧,apk里res里的文件都是编译过,你根本不能直接修改。
去用apktool这个工具,能反编译和重新编译。只不过再编译后的apk需要重新签名
⑵ 怎么样把 apk 转为java
需要工具:
1、dex2jar-0.0.7.11-SNAPSHOT(其他版本也行)
2、jd-gui
把apk应用包,用解压缩软件打开,解压出classes.dex
然后把classes.dex放到dex2jar-0.0.7.11-SNAPSHOT的目录下,即和bin同一目录
然后打开命令提示符,进入到dex2jar-0.0.7.11-SNAPSHOT,执行命令dex2jar.bat classes.dex
会生成一个classes_dex2jar.jar文件
然后用jd-gui打开classes_dex2jar.jar文件(里面都是class文件)
你就可以看到源代码了
file-->save all sources可以导出java文件。
⑶ java解析apk包名以及版本号时报错,java.util.zip.ZipError。请问这是什么问题啊只有在正式服务器会出现
java解析apk包名以及版本号时报错,java.util.zip.ZipError
引入的jar包不对,或者你的压缩文件不标准。
一般就会报这个错误。
关于上面英语的翻译:
Key features(主要特性):Create, Add, Extract, Update, Remove files from a Zip file(针对ZIP压缩文件创建、添加、抽出、更新和移除文件)
Read/Write password protected Zip files(读写有密码保护的Zip文件)
Supports AES 128/256 Encryption(支持AES 128/256算法加密)
Supports Standard Zip Encryption(支持标准Zip算法加密)
Supports Zip64 format(支持zip64格式)
Supports Store (No Compression) and Deflate compression method(支持Store(非压缩)和Deflate压缩方法---不太明白)
Create or extract files from Split Zip files (Ex: z01, z02,...zip)(针对分块zip文件创建和抽出文件)
Supports Unicode file names(支持Unicode编码文件名)
Progress Monitor(进度监控)
⑷ 如何动态加载android的so文件,如何压缩apk尺寸
您好,很高兴为您解答。
一、 工具集介绍 (项目地址: https://github.com/liyuming1978/NativeLibCompression)
安卓压缩工具集提供了一个极为简洁的方法,能够比安卓原有的Zip提供更高压缩比的存储应用内的so文件 (后期版本还可以支持压缩动态加载的jar包,以及游戏资源文件),同时提供了应用内网络更新下载压缩文件的方法,使得应用可以将部分so存储到云端,减小应用的尺寸。
压缩原理: 压缩工具会把所有的so使用LZMA算法压缩到assert目录,应用在第一次启动的时候,会解压到应用的私有目录下
二、 工具集组成
工具集为一个安装程序,建议安装在默认路径下,安装在program files下在win7可能有读写权限的问题导致一些异常
安装后,你可以看见4个目录,此目录内都含有源码。
安装后的四个目录如下
其中 ApkLibComrepss 为java命令行程序的源码,在此目录的bin子目录中,你可以找到ApkCompress.jar ,使用这个文件可以把一个普通的apk文件转换为压缩的apk文件
CompressDemo为一个样例代码,你可以参考这个代码知道如何整合压缩的SDK。
DecRawso是压缩的SDK,你的开发工程需要引用这个SDK,并进行一些源码上的修改,才能整合压缩的功能
RawsoCreator为windows下的转换工具, 这个工具一般无需使用, 仅仅在调试和二次开发压缩SDK的时候使用。
三、 如何整合压缩SDK
打开CompressDemo,我们以这个工程为例子讲解如何整合压缩SDK
1. 首先需要引入DecRawso工程
2. 然后需要在你的工程内最初始的地方调用DecRawso.NewInstance。在此demo工程内,是在MainActivity.java的OnCreate内调用了此方法, 此方法是创建了一个解压的唯一实例。注意:此方法是异步的,所以你可以传入一个handler接受异步解码完成的消息,如果同时传入参数showProgress=true,SDK内会产生一个进度对话框以阻塞主进程。不推荐使用DecRawso.NewInstance(mContext,null,false);的方式,此方式不接受任何消息,且无进度对话框,解压会在后台自动完成,并且在应用第一次load so的时候阻塞直到后台解压完成。所以如果阻塞时间过长,可能会导致应用无响应。
3. 修改load so文件的方法:所有的System.loadlibrary(***)改为 System.load(DecRawso.GetInstance().GetPath(“***"));
新版本, 这步可以省略了,sdk会修改system的libaray加载路径,一般情况下,系统升级不会出问题 (非正规代码,小概率会随android升级修改新的代码),如果方便的话,还是采用System.load(DecRawso.GetInstance().GetPath(“***"))
经过这几个简单的步骤,压缩的SDK已经整合到工程内了。
四、 如何压缩发布APK
使用ApkCompress.jar压缩发布APK。 此工具为命令行工具。一般的此命令使用方式为:在命令行运行ComPressApk.jar-a C:/my/test.apk -k c:/key *** ### alias -x86http://www.test.com (也可以运行 java –jarComPressApk.jar )
-a 后面跟apk路径名, 可以不是全路径
-k 后面是签名文件[key storepasskeypass alias name] ,key可以不是全路径名 (name 如果不写, 默认就是CERT)
-x86 表示需要存储x86库文件在云端, 后面跟以http://开头的链接,最后实际的存储位置应该为 http://www.test.com/cloudrawso_x86
命令执行完以后, 会生成test_CompressAlign.apk. 这个apk就是压缩后的apk
五、 开发模式和压缩模式
为了方便开发,在实现开发的过程中(修改了源码支持压缩后),也可以不压缩so,apk也可以正常运行,压缩的SDK内部会自动判断是否有压缩包, 如果没有压缩包,则加载的路径恢复成android默认的路径。所以最方便的开发是,先整合代码,在开发过程中和原来一样开发(不压缩),在发布的时候才压缩apk
六、 X86和ARM库混合调用
在实现开发过程中,可能会有某些第三方库确实没有x86版本,通常情况下ISV并不在x86目录下放置arm的第三方库,那么在实际运行过程中会导致缺库现象的发生。在缺库的情况下,压缩的SDK会在x86设备上自动解压arm的压缩包,避免缺库现象的发生。(只有真正加载了缺失的库才是缺库,库文件不一致并不一定就是缺库)
但是显然这样会导致运行的低效率,如果在第三方so和x86的库完全没有相互引用的情况下(也就是说这些库都是java层使用JNI调用的,在native层没有相互调用),可以拷贝arm的第三方库到x86目录下,这样就不会出现缺库的情况。当然这种情况会导致arm库多余的拷贝,在以前的zip压缩情况下,会使得压缩包变大,但是在新的LZMA压缩情况下,库大小完全不会增大,因为LZMA压缩由于字典比较大,能够尽可能的压缩关联的几个文件,如果文件完全相同,LZMA的压缩会和单个文件基本一致。
如若满意,请点击右侧【采纳答案】,如若还有问题,请点击【追问】
希望我的回答对您有所帮助,望采纳!
~ O(∩_∩)O~
⑸ java怎样获取apk文件icon图标
java获取apk文件icon图标的方法步骤如下:
1、解压apk,apk实际上是zip压缩档。
2、解析AndroidManifest.xml文件,解析application节点,获取android:icon属性,得到图标资源文件名。
3、图标资源大多数位于/drawable-hdpi目录下。
4、尝试读取png或者jpg格式,如果还读取不到,那就按照没有图标处理。
⑹ 修改apk解压和反编译有什么区别
你好!
APK就是个压缩包,里面有已经编译好的Java伪指令(二进制的,但是是伪指令)和图片、声音、布局等“资源”。
而反编译,则是把Java的伪指令还原成Java的代码(人类看得懂的玩意儿)。后者能彻底修改别人的程序。
我的回答你还满意吗~~
⑺ 如何反编译Apk得到Java源代码
具体步骤: 1.首先将apk文件后缀改为RAR并解压。 2.解压rar文件,得到其中的classes.dex文件 3.我们需要用到dex2jar 把dex文件转为jar文件。 3.1把解压得到的classes.dex文件放入dex2jar.bat 所在目录 ) 3.2打开DOS命令行,进入dex2jar所在目录,运行 dex2jar.bat classes.dex 生成 classes_dex2jar.jar 4.最后用jd-gui.exe打开生成的classes_dex2jar.jar我们就能开到应用的源代码了。
⑻ 如何反编译Apk得到Java源代码
1.下载反编译工具
需要下载四个工具:dex2jar、JD-GUI、apktool、apktool-install-windows-r05-ibot
dex2jar:将apk中的classes.dex转化成Jar文件。
JD-GUI:反编译工具,可以直接查看Jar包的源代码。
apktool:反编译工具,通过反编译APK中XML文件,直接可以查看。
apktool-install-windows-r05-ibot:辅助windows批处理工具。
下载地址:
dex2jar:http://code.google.com/p/dex2jar/downloads/list
JD-GUI:http://code.google.com/p/innlab/downloads/lis
apktool:http://code.google.com/p/android-apktool/downloads/list
工具截图:
2.解压缩APK包
apk文件也是一种常见的zip,常用的压缩软件就可轻松地解压apk文件。用压缩软件将apk文件中的文件解压到一个文件夹中,得到APK中的资源包括XML文件和classes.dex文件,classes.dex就是java文件编译再通过dx工具打包而成的。
解压截图:
3.反编译dex文件
解压apk文件后,你会发现res目录的图片没有加密,但java源码编译成了一个classes.dex文件,无法用普通的反编译class文件的方法来处理,dex2jar可以将dex文件转换成普通的jar包。
解压下载的dex2jar,把解压后的文件夹放到系统盘跟目录中并把这个目录加到系统path变量中,就可以直接用:dex2jar.bat或dex2jar.sh转换dex文件了。
DOS行命令如下:dex2jar.bat xx\classes.dex(xx是classes.dex文件所在的路径)。
将在同目录得到普通jar包:classes_dex2jar.jar,就可以用处理普通jar包的方法来反编译这个jar包得到原文件。
编译截图:
生成jar文件的截图如下:
4.反编译jar包
得到jar包后,下载自已喜欢的反编译工具,推荐使用JD-GUI,有比较简单的图形界面,可以反编译单个class文件,也可以反编译jar包,比较方便。
打开压缩文件JD-GUI,运行jd-gui.exe,打开上面生成的jar包,即可看到源代码了。
截图如下:
5.反编译xml文件
打开解压的res\layout目录,有很多xml文件,如果你想看下作者是如何设计界面的,你会很失望,因为你看到的是一大堆乱码!这个时候我们需要用到的是apktool。
具体操作方法:将下载的apktool和apktool-install-windows-r05-ibot两个包解压到同一个文件夹下,这个文件夹有三个文件:aapt.exe,apktool.bat,apktool.jar。把这个文件夹也放到系统盘的根目录中并把这个目录加到path变量中。以HelloWord.apk为例:
在DOS命令行中输入:apktool d xx\HelloWord.apk HelloWord得到HelloWord文件夹,此文件夹中的xml文件就是编译好的可以正常查看的文件。
这样就得到了可以得到编译的源码和XML资源。
注意:文件的路径中最好不要出现中文!
http://jingyan..com/article/dca1fa6fbe140ef1a4405212.html
⑼ 怎么用java编写一个程序实现从android中的apk文件包得到.dex文件
直接解压缩apk文件就行。。
把apk文件改成rar后缀,解压缩就能看到dex文件了啊