背景:

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

我这个工具分几步的:

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

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

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

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

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

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 基础【11】@注解

    1.注解简介 JDK 1.5 中引入的 java.lang.annotation 包提供注解编程支持,可以让类在编译.类加载.运行时被读取,并执行相应的处理. 在 Java EE应用的时候,总是免不了 ...

  2. 以HTML为表现的日志记录组件

    日志搬家:http://www.loogn.net/blog/Article.aspx?id=21 关于日志记录,如果你不想随用随写,又不想用log4net的话,也许你可以了解一下这个! 我也是个很懒 ...

  3. express-partials与express4.x不兼容问题

    在express中设置view engine为html,express-partials会导致语法不正确,其实只要做一行代码的改动就可以 function renderer(ext){ if(ext[ ...

  4. Matlab和simulink数据的保存和读取

    文件的存储 MATLAB支持工作区的保存.用户可以将工作区或工作区中的变量以文件的形式保存,以备在需要时再次导入.保存工作区可以通过菜单进行,也可以通过命令窗口进行. 1. 保存整个工作区 选择Fil ...

  5. matlab 中randn randi rand randsrc的用法以及区别

    1,rand 生成均匀分布的伪随机数.分布在(0~1)之间 主要语法:rand(m,n)生成m行n列的均匀分布的伪随机数                      rand(m,n,'double') ...

  6. 虚拟机VirtualBox 5.1.0|VBOX

    Oracle VM VirtualBox是一款免费.开源的虚拟机软件,现属于Oracle旗下产品.可以安装Windows.Linux.IBM OS/2.Solaris.BSD等操作系统,具有远端桌面协 ...

  7. Day Seven(Beta)

    站立式会议 站立式会议内容总结 331 今天: 1)阅读html 5+文档 未来走h5路线 2)restful,未来开发接口 3)h5+demo运行 4)get 代码:a||(a=as); 5)js ...

  8. Kernel Methods (2) Kernel function

    几个重要的问题 现在已经知道了kernel function的定义, 以及使用kernel后可以将非线性问题转换成一个线性问题. 在使用kernel 方法时, 如果稍微思考一下的话, 就会遇到以下几个 ...

  9. NPOI导入,导出

    概述 NPOI 是 POI 项目的 .NET 版本.POI是一个开源的Java读写Excel.WORD等微软OLE2组件文档的项目.NPOI 可以在没有安装 Office 或者相应环境的机器上对 WO ...

  10. jQ1.5中的事件系统(低版本的事件系统)

    jQ的一个个版本事系统都在修正着bug和不断优化, 而且看了事件系统对事件的兼容更加熟悉, 更加了解jQ内部的事件机制. 因为jQ对事件系统引入了事件命名空间,事件的代理, 事件的手动触发,事件描述等 ...