`

Java之apk 解压、修改、打包、签名(1)--调用工具

阅读更多
场景:
     页面上传APK包及修改的内容(修改文件固定),修改完成后提供下载链接下载。


实现步骤:
1、通过apktool工具,对APK包进行解压及打包(参考:http://showlike.iteye.com/admin/blogs/1686103)

2、文件内容的修改

3、通过JDK的jarsigner对修改后打包的APK进行签名(参考:http://www.tttabc.com/android/keytool-keystore-jarsigner-apk.htm


具体实现:
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;


/**
 * @author showlike
 * @version v1.0 
 * 2012-6-29 下午12:05:10 
 */
public class Test {
	public static void main(String args[]) throws IOException{
		BufferedReader br =null;
		OutputStreamWriter osw =null;
		Process process = null;
		try {
			
			//1----解压
			//apktool路径
			String path = "D:\\My Documents\\Desktop\\apktool-install-windows-r04-brut1";
			//保存路径
			String appPath = "F:\\document\\APK\\new\\";
			File file =new File(path);
			
			process = Runtime.getRuntime().exec("cmd.exe /c apktool d "+appPath+"iGouShop.apk "+appPath+"app",null,file);
			if(process.waitFor()!=0)System.out.println("解压失败。。。");
			
			//2----内容修改
			String targetPath = appPath+"app\\res\\raw\\channel";
			String content="TT201209291653";
			br = new BufferedReader(new InputStreamReader(new FileInputStream(targetPath)));
			while((br.readLine())!=null)
			{
				osw = new OutputStreamWriter(new FileOutputStream(targetPath));  
				osw.write(content,0,content.length());  
				osw.flush();  
			}
			
			//3----打包
			process = Runtime.getRuntime().exec("cmd.exe /c apktool b "+appPath+"app "+appPath+"app.apk",null,file);
			if(process.waitFor()!=0)System.out.println("打包失败。。。");
			
			//4----签名 (文件名称中不能包含空格)
			String jdkBinPath="C:\\Program Files\\Java\\jdk1.6.0_26\\bin";
			File bin =new File(jdkBinPath);
			String cmd = "cmd.exe /c jarsigner -keystore F:\\document\\APK\\sdk.keystore -storepass winadsdk -signedjar "+appPath+"appT.apk "+appPath+"\\app.apk"+" sdk.keystore";
			process = Runtime.getRuntime().exec(cmd,null,bin);
			if(process.waitFor()!=0)System.out.println("签名失败。。。");
		}catch (Exception e)
		{
			e.printStackTrace();
		}finally{
			br.close();
			osw.close();
		}
	}
}
分享到:
评论
2 楼 chishangyang 2015-08-31  
签名的时候需要输入密钥库密码短语,你这是怎么解决的
1 楼 sunsongwen2 2015-03-03  
//3----打包 
            process = Runtime.getRuntime().exec("cmd.exe /c apktool b "+appPath+"app "+appPath+"app.apk",null,file);


您好,可以解释下 "cmd.exe /c apktool b "+appPath+"app "+appPath+"app.apk",null,file 这句话的意思么

相关推荐

    apk打包解包工具

    "apk打包解包工具"是一类用于处理APK文件的实用程序,它们可以帮助开发者进行APK的构建、拆解、修改和重新签名等操作。下面将详细阐述相关知识点: 1. **APK打包**:APK打包过程是将Android应用的所有资源(如Java...

    apk反编译编译签名工具包.rar

    1. 解压“apk反编译编译签名工具包.rar”到本地。 2. 将待处理的APK文件放置在同一目录下。 3. 运行批处理脚本,该脚本会自动执行反编译、编译和签名的流程。 4. 完成后,生成的已签名APK会在指定目录下找到。 这个...

    Java解析apk所需jar包

    - **Apktool**: 尽管不是JAR包,但Apktool是一个流行的开源工具,可以解压、反编译、重新打包APK,其依赖的JAR包如`apktool.jar`可以用于Java项目。 - **dexlib2**或**JD-GUI**: 这些库可以帮助你读取和理解.dex文件...

    apk友盟多渠道打包java实现

    3. **apktool工具**:apktool是一个开源的Android反编译工具,用于解压、修改和重新打包APK。它可以帮助我们修改APK的资源文件,比如XML、图片等,以便添加或替换渠道信息。 4. **aapt工具**:aapt是Android Asset ...

    android apk 反编译win系统下工具

    它能解析APK中的资源文件(如XML布局、图片等),并将其转换为人类可读的形式,同时也可以重新打包和签名APK,从而实现对原应用的修改和定制。 1. **Apktool的安装与配置** 在Windows环境下,首先需要下载Apktool...

    jar或者APK安装签名源程序

    `jar`或`apk`安装签名源程序涉及到两个主要工具:`jarsigner`和`apksign`,以及可能用到的自定义签名工具如`SignJarUtil`。 首先,`jarsigner`是Java SDK中的一个命令行工具,用于对`.jar`文件进行数字签名。签名的...

    APK反编译工具

    这会将APK解压到指定的`output_directory`,其中包含了所有的资源文件和DEX文件。 4. **查看资源文件**: 在反编译后的目录中,你可以找到`res`目录,里面包含了应用的所有资源,如布局文件(XML)、图片、字符串等...

    apk翻遍工具集合

    5. **修改与打包**:对源代码或资源进行修改后,使用Apktool重新打包,并使用签名工具重新签名APK,以便在设备上安装。 需要注意的是,反编译行为可能涉及法律问题,特别是未经许可对他人软件进行反编译。因此,在...

    mac 版apk反编译工具

    如果你想重新打包并签名APK,可以使用`apktool b`命令。 除了jd-gui和apktool,压缩包中还提到了`apktool.jar`,这是apktool的可执行JAR文件,用于在命令行中运行apktool命令。`aapt`(Android Asset Packaging ...

    IPA转apk超级工具

    IPA转apk工具的工作原理主要是解压IPA文件,提取其中的.app文件,然后使用特定的方法将其转换为Android可识别的Dalvik虚拟机(DEX)格式,同时处理资源文件和清单文件以适应Android环境。最后,将所有内容重新打包...

    mac 系统的 apk 反编译工具

    3. **apktool**:这是一个强大的APK反编译工具,可以解压APK,反编译XML文件,以及重新打包和签名。它特别适用于解析资源文件、布局、图片和其他非Java代码部分。 下面是使用这些工具进行APK反编译的步骤: 1. **...

    APK最新反编译工具2018

    5. 如有修改,使用apktool重新打包并签名,生成新的APK。 请注意,虽然这些工具对学习和研究APK的结构非常有用,但未经授权的反编译和修改可能涉及侵犯软件知识产权,因此在使用时应遵守相关法律法规。在合法范围内...

    APK 反编译工具和文档

    - **Frida**:动态代码插桩工具,可以在运行时查看和修改APK的行为,适合分析运行时的逻辑和函数调用。 2. **反编译步骤**: - **提取APK**:使用解压工具将APK文件解压成ZIP格式。 - **解析资源**:使用Apktool...

    Apk反编译工具包

    1. **解压APK**:使用任何常规的压缩工具(如7-Zip或WinRAR)将APK文件解压成一个文件夹。 2. **使用apktool**:运行Apktool命令,解析APK的资源文件,如`apktool d your.apk -o output_folder`,这会在output_...

    OkAPKtools(APK反编译、编译、签名利器)

    通常,用户需要先下载并解压工具,然后按照工具提供的指引,选择待处理的APK文件,进行反编译、修改、编译和签名等操作。对于复杂的应用场景,网上还有许多详细的使用教程和社区讨论可供参考。 6. **注意事项** ...

    APK逆向工具, Android逆向助手

    1. **提取APK**:使用文件管理器或命令行工具将APK文件解压为ZIP格式。 2. **反编译DEX**:使用dex2jar将`.dex`文件转换为`.jar`,然后用JD-GUI或Procyon查看源代码。 3. **资源解包**:用Apktool分析并解包资源文件...

    apk出包脚本.zip

    在Android应用开发中,"apk出包脚本.zip" 提供了一个使用Python进行自动化反编译、修改参数、签名和重新打包APK的过程。这个流程是开发者为了提高效率,减少手动操作而创建的自动化工具链。以下是这个过程涉及的关键...

    apktool apk反编译工具

    使用`apktool d <apk_file>`命令,将APK解压到当前目录下,生成一个与APK同名的目录,其中包含反编译后的文件。 3. **查看反编译结果:** 进入生成的目录,你可以看到`res`目录下的资源文件和`smali`目录下的...

    APK 反编译工具

    APK 反编译工具是Android开发者或者逆向工程师常用的一种技术手段,它允许我们查看、修改甚至重新打包APK应用。在这个过程中,涉及到的主要工具有apktool、dex2jar和jd-gui。 首先,我们要了解APK的结构。APK是...

Global site tag (gtag.js) - Google Analytics