apk执行linux命令 apk执行shell命令

linux apktool怎么使用APKTool是GOOGLE提供的APK编译工具,能够反编译及回编译apk , 同时安装反编译系统apk所需要的framework-res框架,清理上次反编译文件夹等功能 。需要java支持 。
常见命令:
【apk执行linux命令 apk执行shell命令】decode
该命令用于进行反编译apk文件,一般用法为
apktool d file.apk dir
file.apk代表了要反编译的apk文件的路径,最好写绝对路径 , 比如C:\MusicPlayer.apk
dir代表了反编译后的文件的存储位置,比如C:\MusicPlayer
如果你给定的dir已经存在,那么输入完该命令后会提示你,并且无法执行,需要你重新修改命令加入-f指令
apktool d –f file.apk dir
这样就会强行覆盖已经存在的文件
build
该命令用于编译修改好的文件,一般用法为
apktool b dir
这里的dir就是刚才你反编译时输入的dir(如C:\MusicPlayer),输入这行命令后 , 如果一切正常,你会发现C:\MusicPlayer内多了2个文件夹build和dist,其中分别存储着编译过程中逐个编译的文件以及最终打包的apk文件 。
install
install-framework命令用于为APKTool安装特定的framework-res.apk文件,以方便进行反编译一些与ROM相互依赖的APK文件 。
如何在APK程序里执行linux命令常有很多命令可以通过串口终端输入 , 得到结果 , 在程序中,通常我们需要得到某些命令的结果,在代码中执行命令 , 并将结果返回 。
有两个类:CommandHelper.java和CommandResult.java第一个类用于处理命令,第二个则用于返回一个结果
package com.example.task_aidl;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class CommandHelper {
//default time out, in millseconds
public static int DEFAULT_TIMEOUT;
public static final int DEFAULT_INTERVAL = 1000;
public static long START;
public static CommandResult exec(String command) throws IOException, InterruptedException {
Process process = Runtime.getRuntime().exec(command);//创建一个字进程,并保存在process对象中
CommandResult commandResult = wait(process);
如何流畅得在所有linux发行版上跑android的apk程序Android的底层是Linux内核,因此在shell环境下可以运行Linux命令,尤其是经过root处理的android系统,基本上可以通过调用Linux命令完全控制手机,下面的RootCmd.java代码可以实现运行Linux外部命令 。
packagemy.android.code;importandroid.os.Environment;importdalvik.annotation.Signature;importjava.io.BufferedReader;importjava.io.DataInputStream;importjava.io.DataOutputStream;importjava.io.File;importjava.io.FileReader;importjava.io.InputStream;importjava.io.OutputStream;importjava.util.Vector;publicfinalclassRootCmd{//执行linux命令并且输出结果protectedstaticVectorexecRootCmd(StringparamString){VectorlocalVector=newVector();
try{ProcesslocalProcess=Runtime.getRuntime() 。
exec(“su”);
//经过Root处理的android系统即有su命令OutputStreamlocalOutputStream=localProcess.getOutputStream();
DataOutputStreamlocalDataOutputStream=newDataOutputStream(localOutputStream);
InputStreamlocalInputStream=localProcess.getInputStream();
DataInputStreamlocalDataInputStream=newDataInputStream(localInputStream);
Stringstr1=String.valueOf(paramString);
Stringstr2=str1+“\n”;localDataOutputStream.writeBytes(str2);
localDataOutputStream.flush();
Stringstr3=localDataInputStream.readLine();
localVector.add(str3);
localDataOutputStream.writeBytes(“exit\n”);
localDataOutputStream.flush();
localProcess.waitFor();

推荐阅读