JAVA获取apk包的package和launchable-activity名称(一)

背景:java

每次要获取apk包的package和launchable-activity名称都须要运行doc命令,感受好浪费感情,由于常常记不住经常的路径,但又不想把aapt设置为环境变量app

我这个工具分几步的:工具

一、JAVA代码输出package和launchable-activity名称名称优化

二、把此JAVA封装成EXE,虽然我技能太浅,但我仍是想尝试一下spa

三、这个EXE可以上人本身上传apk包,而后点击输出package和aunchable-activity按扭,就能出现相应的值code

目前是第1步,也完善了几个本身之前没用过的API:blog

package pc.driver.util.com.cn;
import java.io.BufferedReader;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Base {
    //File dir 是在哪一个盘执行,String command cmd的命令
    public static void runCMD(String command,File dir){
        InputStream is =null;
        Process process=null;
        try {
            process =Runtime.getRuntime().exec(command, null, dir);//执行doc命令
            //后面的全部操做便是读取这个命令的输出结果
            is = process.getInputStream();//获取执行CMD命令后的信息
            BufferedReader reader =new BufferedReader(new InputStreamReader(is));
            String line =null;
            StringBuffer sb =new StringBuffer();
            while((line = reader.readLine())!=null){
                sb.append(line);
            }
            //截取package字符串
            Pattern p =Pattern.compile("package: name(.*?)versionCode");
            Matcher m =p.matcher(sb);
            List<String> list=new ArrayList<String>();
            while(m.find()){
                list.add(m.group(1));
            }
            for (String str : list) {
                System.out.println("package"+str);
            }
            
            //截取acvitity字符串,以launchable-activity: name开头,  label结尾 获取中间字符串内容
            Pattern p1 =Pattern.compile("launchable-activity: name(.*?)  label");
            Matcher m1 =p1.matcher(sb);
            List<String> list1=new ArrayList<String>();
            while(m1.find()){
                list1.add(m1.group(1));
            }
            for (String str1 : list1) {
                System.out.println("activity"+str1);
            }
            
        } catch (IOException e) {
            e.printStackTrace();
        } finally{
            try {
                process.getOutputStream().close();
                is.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
            
        }
    }
    public static void main(String[] args) {
        Scanner dir = new Scanner(System.in);
        System.out.println("输入aapt目录:");
        String aapt_dir=dir.next();
        System.out.println("输入apk全路径:");
        String apk_dir=dir.next();
        
       String command=aapt_dir+" dump badging " +apk_dir;
         runCMD(command); } }

 

后来再看,为了使用方便,优化了一下字符串

连接:https://pan.baidu.com/s/18PPJIVLZYT-XjQm-TfETlQ
提取码:s8eh
get

相关文章
相关标签/搜索