背景: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