背景:

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

我这个工具分几步的:

1、JAVA代码输出package和launchable-activity名称名称

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

3、这个EXE能够上人自己上传apk包,然后点击输出package和aunchable-activity按扭,就能出现相应的值

目前是第1步,也完善了几个自己以前没用过的API:

  1. package pc.driver.util.com.cn;
  2. import java.io.BufferedReader;
  3. import java.io.File;
  4. import java.io.IOException;
  5. import java.io.InputStream;
  6. import java.io.InputStreamReader;
  7. import java.util.ArrayList;
  8. import java.util.List;
  9. import java.util.regex.Matcher;
  10. import java.util.regex.Pattern;
  11. public class Base {
  12. //File dir 是在哪个盘执行,String command cmd的命令
  13. public static void runCMD(String command,File dir){
  14. InputStream is =null;
  15. Process process=null;
  16. try {
  17. process =Runtime.getRuntime().exec(command, null, dir);//执行doc命令
  18. //后面的所有操作即是读取这个命令的输出结果
  19. is = process.getInputStream();//获取执行CMD命令后的信息
  20. BufferedReader reader =new BufferedReader(new InputStreamReader(is));
  21. String line =null;
  22. StringBuffer sb =new StringBuffer();
  23. while((line = reader.readLine())!=null){
  24. sb.append(line);
  25. }
  26. //截取package字符串
  27. Pattern p =Pattern.compile("package: name(.*?)versionCode");
  28. Matcher m =p.matcher(sb);
  29. List<String> list=new ArrayList<String>();
  30. while(m.find()){
  31. list.add(m.group(1));
  32. }
  33. for (String str : list) {
  34. System.out.println("package"+str);
  35. }
  36.  
  37. //截取acvitity字符串,以launchable-activity: name开头, label结尾 获取中间字符串内容
  38. Pattern p1 =Pattern.compile("launchable-activity: name(.*?) label");
  39. Matcher m1 =p1.matcher(sb);
  40. List<String> list1=new ArrayList<String>();
  41. while(m1.find()){
  42. list1.add(m1.group(1));
  43. }
  44. for (String str1 : list1) {
  45. System.out.println("activity"+str1);
  46. }
  47.  
  48. } catch (IOException e) {
  49. e.printStackTrace();
  50. } finally{
  51. try {
  52. process.getOutputStream().close();
  53. is.close();
  54. } catch (IOException e) {
  55. e.printStackTrace();
  56. }
  57.  
  58. }
  59. }
  60. public static void main(String[] args) {
  61. 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);
  62.  
  63. }
  64. }

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

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

JAVA获取apk包的package和launchable-activity名称(一)的更多相关文章

  1. JAVA获取apk包的package和launchable-activity名称(完善成EXE版)

    出来混迟早是要还的. 在这一篇中https://www.cnblogs.com/sincoolvip/p/5882817.html,只是简单讲了一下获取apk包的package和launchable- ...

  2. 查看apk包名package和入口activity名称的方法

    ctrl+r 打开CMD窗口 进入sdk-aapt目录 执行命令:aapt dump badging xx.apk 内容太多?不好看,没关系,全部拷出来,ctrl+f,so easy! package ...

  3. 查看Android应用包名package和入口activity名称

    使用android自动化测试工具启动应用时,需要填写被测程序的包名和启动的Activity,以下有两种查看应用包名package和入口activity名称的方法: 方法一:使用aapt    //aa ...

  4. Android开发之查看应用包名package和入口activity名称的方法

    使用android自动化测试工具monkeyrunner启动应用时,需要填写被测程序的包名和启动的Activity,以下有两种查看应用包名package和入口activity名称的方法: 方法一:使用 ...

  5. Android获取APK包名的几种方法

    Android获取APK包名的几种方法:1.adb shell pm list package -f | findstr 关键字 #只能获取到包名,主Activity名无法获取到 2.使用aapt-- ...

  6. Java 获取APK安装程序的包名

     Java 获取APK安装程序的包名核心的两个类:  ResPackage ApkDecoder  package com.temobi.util; import java.io.File; impo ...

  7. Appium自动化测试3之获取apk包名和launcherActivity后续

    接着“Appium自动化测试3之获取apk包名和launcherActivity”章节介绍 测试脚本 1.测试脚本如下: # -*- coding:utf-8 -*- import os, time, ...

  8. 获取软件的apk包名、查看手机设备名称等

    获取软件的apk包名 1.下载aapt,这里使用的是SDK自带的aapt,找到SDK路径下面的aapt.exe,本机路径:E:\downloads\android-sdk_r23.0.2-window ...

  9. Android自动化学习笔记:获取APK包名的几种方法

    ---------------------------------------------------------------------------------------------------- ...

随机推荐

  1. Java:反射

    初识Java反射机制: 从上面的描述可以看出Java的反射机制使得Java语言可以在运行时去认识在编译时并不了解的类/对象的信息,并且能够调用相应的方法或修改属性的值.Java反射机制的核心就是允许在 ...

  2. Bootstrap系列 -- 3. 段落

    一. 段落基本用法 1. 段落使用<p>标签 2. 段落全局使用font-size=14px字体 ..... 更多请使用Firefox 查看 <p> 华盛顿大学和清华大学共同在 ...

  3. 用户 'IIS APPPOOL\***' 登录失败

    用户 'IIS APPPOOL\DefaultAppPool' 登录失败. 我在windows8中安装了iis之后添加了我做的网站打开之后提示用户 'IIS APPPOOL\DefaultAppPoo ...

  4. tomcat设置端口号和默认webapp

    tomcat一下载,解压之后webapps目录下自带几个webapp: * docs文档:这是一个静态页面集,不用启动tomcat也可以阅读 * examples样例 * hostmanager主机管 ...

  5. [cross domain] four approachs to cross domain in javascript

    four approachs can cross domain in javascript 1.jsonp 2.document.domain(only in frame and they have ...

  6. 基本数据类型-列表_元组_字典_day4

    一.列表(list)书写格式:[] #通过list类创建的 li = [1, 12, 9, ", 10, ],"庞麦郎"], "ales", True ...

  7. 由 excel 转换为 markdown,及收获

    由 excel 转换为 markdown,及收获 1 问题 构建之法(现代软件工程)东北师大站[http://www.cnblogs.com/younggift/]的每周学生作业成绩,执行教学团队[h ...

  8. Node.js项目目录介绍

    新建的项目结构应该是这样 bin:项目的启动文件,也可以放其他脚本. node_modules:用来存放项目的依赖库. public:用来存放静态文件(css,js,img). routes:路由控制 ...

  9. Velocity教程【转】

    原文:http://blog.csdn.net/qq_25237663/article/details/52262532 Velocity是一个基于Java的模板引擎,通过特定的语法,Velocity ...

  10. mysql优化基础

    唯一索引(unique index)强调唯一,就是索引值必须唯一. create unique index [索引名] on 表名 (列名);alter table 表名 add unique ind ...