GVKun编程网logo

如何使用新的apk升级prevoius apk而不会丢失android中未知资源apk的先前数据

16

最近很多小伙伴都在问如何使用新的apk升级prevoiusapk而不会丢失android中未知资源apk的先前数据这两个问题,那么本篇文章就来给大家详细解答一下,同时本文还将给你拓展Androidad

最近很多小伙伴都在问如何使用新的apk升级prevoius apk而不会丢失android中未知资源apk的先前数据这两个问题,那么本篇文章就来给大家详细解答一下,同时本文还将给你拓展Android adb安装apk时提示Invalid APK file的问题、android apk 自我保护技术-加密apk、Android Apktool APK文件反编译、重编译、Android APK反编译 apktool使用教程等相关知识,下面开始了哦!

本文目录一览:

如何使用新的apk升级prevoius apk而不会丢失android中未知资源apk的先前数据

如何使用新的apk升级prevoius apk而不会丢失android中未知资源apk的先前数据

如何使用新的apk在真实设备中丢失之前的apk数据来升级Android应用程序?

最佳答案
AndroidManifest.xml中有一个versionCode元素.这是一个整数,每个新版本的值都应该增加.因此,此整数的值越高,您的应用版本就越新.因此,要使用apk更新您的应用,您应该将此数字增加1并重新编译您的应用并使用生成的apk来安装您的应用,就像通常那样.数据将自动保存.这是hockeyapp更新beta测试版应用程序的方式.

Android adb安装apk时提示Invalid APK file的问题

Android adb安装apk时提示Invalid APK file的问题

今天在使用adb命令安装apk时,无法安装成功,进入到android sdk 下的platform_tools下也是无法安装成功:

先贴一下我的调用过程

xu:~ xiaokai$ adb devices
List of devices attached
0123456789ABCDEF device

xu:~ xiaokai$ adb shell
shell@T36DH_CM3:/ $ pm install /Users/xiaokai/Downloads/app-release.apk 
 pkg: /Users/xiaokai/Downloads/app-release.apk
Failure [INSTALL_FAILED_INVALID_URI]
1|shell@T36DH_CM3:/ $ adb install /Users/xiaokai/Downloads/app-release.apk 
Invalid APK file: /Users/xiaokai/Downloads/app-release.apk
255|shell@T36DH_CM3:/ $ exit
xu:~ xiaokai$ adb install /Users/xiaokai/Downloads/app-release.apk 
[100%] /data/local/tmp/app-release.apk
 pkg: /data/local/tmp/app-release.apk
Success

adb devices

首先调用了adb devices,查看有没有可用的手机,`0123456789ABCDEF device`说明有可用的手机,

adb shell

然后进入手机,安装apk,

pm install /Users/xiaokai/Downloads/app-release.apk

发现出现问题,

exit

退出前手机 ,进入root目录

adb install /Users/xiaokai/Downloads/app-release.apk

进行安装,发现安装成功,网上查了一下,下面这篇文章介绍了一些这方面的问题

补充上面文章:adb安装apk报错Failure [INSTALL_FAILED_INVALID_URI]

今天在使用adb命令安装一个apk时,遇到一个问题,记录如下:

1、下载了一个demo.apk,放在D:\A_Download目录下。

2、手机连上电脑,开启USB调试权限。然后在电脑端启动cmd,输入以下命令:

C:\Users\leon>adb devices
List of devices attached
0123456789ABCDEF device

可以看出,手机已经成功连上。

3、输入adb shell命令,进入shell模式。然后使用install命令安装上述apk文件。但是提示失败:

C:\Users\leon>adb shell
shell@android:/ $ install D:\A_Download\demo.apk
BusyBox v1.20.2-jb bionic (2012-11-25 17:47 +0100) multi-call binary.

Usage: install [-cdDsp] [-o USER] [-g GRP] [-m MODE] [SOURCE]... DEST

Copy files and set attributes

 -c Just copy (default)
 -d Create directories
 -D Create leading target directories
 -s Strip symbol table
 -p Preserve date
 -o USER Set ownership
 -g GRP Set group ownership
 -m MODE Set permissions

分析了一下,原来是忘记使用pm前缀(关于install命令要加pm前缀的分析,请参见另一篇文章:安卓adb命令中pm工具的作用及用法详解)。于是修改命令:

shell@android:/ $ pm install D:\A_Download\demo.apk
 pkg: D:A_Downloaddemo.apk
Failure [INSTALL_FAILED_INVALID_URI]

仍然提示失败!

经过反复的分析,我认为应该是因为adb命令下,无法识别windows目录信息导致。也就是说,adb命令无法识别此处的“D:\A_Download\demo.apk”目录。也正是因为这样,所以它给出的失败原因是INVALID_URI。

为了解决这个问题,其实办法很简单,只要退出adb shell的环境就好。于是输入exit命令回退到windows的cmd环境下,然后使用adb install命令,果然就成功了。

shell@android:/ $ exit

C:\Users\leon>adb install D:\A_Download\demo.apk
[100%] /data/local/tmp/demo.apk
 pkg: /data/local/tmp/demo.apk
Success

当然,上述思路只是我自己想当然的,必须验证一下是否真是这么回事。怎么验证呢?

如上所述,根据我的猜测,上述安装方式之所以会失败,是因为adb环境无法识别windows系统的目录格式。所以,如果我们提前把文件拷贝到手机中,然后再进入adb shell环境并install,免去shell环境识别windows目录格式的步骤,应该就能成功。

于是,我直接在cmd环境下把apk文件push到手机中,然后进入adb shell环境,运行pm install命令,果然成功了!

C:\Users\leon>adb push D:\A_Download\demo.apk sdcard/demo.apk
[100%] sdcard/demo.apk

C:\Users\leon>adb shell
shell@android:/ $ cd sdcard/
shell@android:/sdcard $ pm install demo.apk
 pkg: demo.apk
Success

所以,总之一句话,adb shell环境下,系统无法识别windows的目录格式,要么就退回到cmd环境下,要么就提前把windows的文件拷贝到手机中。类似的问题就不会再出现了!

搞定,收工!

以上这篇Android adb安装apk时提示Invalid APK file的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。

您可能感兴趣的文章:
  • adb通过wifi连接android设备流程解析
  • Android adb命令中pm工具的作用及用法说明
  • python中adb有什么功能
  • Android user版通过adb_enable开启adb 调试 不提示对话框的流程分析
  • 详解adb shell 常用命令
  • Android PC端用ADB抓取指定应用日志实现步骤
  • python+adb命令实现自动刷视频脚本案例
  • 详解android adb常见用法

android apk 自我保护技术-加密apk

android apk 自我保护技术-加密apk

经过了忙碌的一周终于有时间静下来写点东西了,我们继续介绍android apk防止反编译技术的另一种方法。前两篇我们讲了加壳技术(http://my.oschina.net/u/2323218/blog/393372)和运行时修改字节码(http://my.oschina.net/u/2323218/blog/396203),如果有不明白的可以查看我的博客的前两篇中关于这两种技术的介绍。接下来我们将介绍另一种简单适用的防止apk反编译的技术-伪加密。

 

一、伪加密技术原理

     我们知道android apk本质上是zip格式的压缩包,我们将android应用程序的后缀.apk改为.zip就可以用解压软件轻松的将android应用程序解压缩。在日常生活或者工作中,我们通常为了保护我们自己的文件在进行压缩式都会进行加密处理。这样的方法对于android apk同样适用。原理很简单,在zip的文件格式中有一个位用来标示该zip压缩文件中的文件是否被加密,我们只要找到该标志位将其置1就可以实现我们的目的。而android的包安装服务(PackageManagerService)在进行apk安装时并不关心这个加密位(暂时我们就这么叫它吧)可以进行正常的安装并且也不会影响apk的运行。

 

二、zip文件格式

      zip的文件格式通常有三个部分组成:压缩文件源数据、压缩目录源数据、目录结束标识。这三个部分中和我们说的加密位有关的是压缩目录源数据部分,我们接下来详细介绍这一部分。

压缩目录源数据部分记录着所有的压缩目录源数据。其结构如下:

Central directory file header

 

Offset

Bytes

Description[18]

 0

4

Central directory file header signature =0x02014b50

核心目录文件header标识=(0x02014b50)

 4

2

Version made by

压缩所用的pkware版本

 6

2

Version needed to extract (minimum)

解压所需pkware的最低版本

 8

2

General purpose bit flag

通用位标记

10

2

Compression method

压缩方法

12

2

File last modification time

文件最后修改时间

14

2

File last modification date

文件最后修改日期

16

4

CRC-32

CRC-32算法

20

4

Compressed size

压缩后大小

24

4

Uncompressed size

未压缩的大小

28

2

File name length (n)

文件名长度

30

2

Extra field length (m)

扩展域长度

32

2

File comment length (k)

文件注释长度

34

2

Disk number where file starts

文件开始位置的磁盘编号

36

2

Internal file attributes

内部文件属性

38

4

External file attributes

外部文件属性

42

4

Relative offset of local file header. This is the number of bytes between the start of the first disk on which the file occurs, and the start of the local file header. This allows software reading the central directory to locate the position of the file inside the ZIP file.

本地文件header的相对位移。

46

n

File name

目录文件名

46+n

m

Extra field

扩展域

46+n+m

k

File comment

文件注释内容

 

该结构中的General purpose bit flag部分的第0位如果置1,标识该压缩包被加密;置为0标识该压缩包没有被加密。

 

三、具体实施

我们可以利用ZipCenOp.jar这个jar包对apk进行加密和解密操作(也有用python实现这个操作的这里我们不做介绍)。

(1)对apk进行加密

加密后,我们用解压缩软件进行解密会看如下的提示信息:

 

用apktool进行反编译会提示如下的错误信息:

  

加密后apk是可以正常的安装和运行的。

 

(2)对apk进行解密

 

解密对我们来说没有多大的用途,只是了解一下。

 

      根据上面的讲述相信大家对apk的伪加密技术有了一定的了解,不过这种方法对于android 4.2.x版本及以后系统已经不适用了它会拒绝这种加密apk的安装。下一篇我们将讲解另一种android apk防止反编译技术,期待大家的捧场。

感谢您的阅读,期待下次与您见面:

如果对这篇讲的技术有任何疑问及想要获得这篇文章讲的技术的工具,第一时间获得文章更新,每天发布一篇技术大牛的原创文章,更多技术信息分享

欢迎关注个人微信公众平台:程序员互动联盟,扫一扫下方二维码或搜索微信号coder_online即可关注,在线帮您解决技术难点,给大牛直接出难题。

 

Android Apktool APK文件反编译、重编译

Android Apktool APK文件反编译、重编译

一、参考文章

  • https://www.jianshu.com/p/37f6e5b50aaa
  • https://blog.csdn.net/qq_32452623/article/details/54291412
  • https://blog.csdn.net/linchaolong/article/details/51146492

二、Apktool下载与使用

  • 下载地址:https://ibotpeaches.github.io/Apktool/
  • 注意:确保本机已经安装 JAVA 8 以上

1.下载后,如果是带版本号的apktool 2.4.1.jar为例,更名为apktool.jar;

2.打开cmd进入目标文件夹,使用以下命令进行反编译;

apktool d -f <apk_path> -o <outfile_path>
栗子:
java -jar apktool.jar d -f HKService1.apk -o TEST

3.输出如下;

    TEST输出文件夹;

 

Android APK反编译 apktool使用教程

Android APK反编译 apktool使用教程

下载apktool:https://ibotpeaches.github.io/Apktool/install/

根据文档操作下载,命名等


工具介绍:

apktool  

     作用:主要查看res文件下xml文件、AndroidManifest.xml和图片。(注意:如果直接解压.apk文件,xml文件打开全部是乱码)

dex2jar

     作用:将apk反编译成Java源码(classes.dex转化成jar文件)

jd-gui

     作用:查看APK中classes.dex转化成出的jar文件,即源码文件


资源文件的反编译

安装方法:

win7:把上面两个文件都放到C://Windows下面

mac:

将上面下载的apktool.jar和apktool拷贝到/usr/local/bin

cp apktool.jar apktool /usr/local/bin

root权限:

chmod +x /usr/local/bin apktool.jar apktool

terminal运行apktool,出现版本号,代表,安装成功。

用法:

win7: 运行CMD,进入比如app-release.apk所在目录,然后运行apktool d app-release.apk就可以了,默认解压的文件就在app-release.apk所在目录

mac:terminal运行到apk目录,然后运行apktool d app-release.apk就可以了,默认解压的文件就在app-release.apk所在目录

 


java代码的反编译

dex2jar下载: https://sourceforge.net/projects/dex2jar/files/

JD-GUI下载:http://jd.benow.ca/

  1. 将apk 变成zip,解压出来,将需要反编译的dex文件(这里是classes.dex)复制到 dex2jar 解压目录下
  2. 打开命令行进入 d2j-dex2jar.bat 文件所在目录,输入命令 d2j-dex2jar.bat classes.dex
  3. 此时可以看到目录中多出了classes-dex2jar.jar文件
  4. 双击运行 jd-gui.exe 文件,将jar文件拖到工作区即可打开

今天关于如何使用新的apk升级prevoius apk而不会丢失android中未知资源apk的先前数据的讲解已经结束,谢谢您的阅读,如果想了解更多关于Android adb安装apk时提示Invalid APK file的问题、android apk 自我保护技术-加密apk、Android Apktool APK文件反编译、重编译、Android APK反编译 apktool使用教程的相关知识,请在本站搜索。

本文标签: