JAVA获取apk包的package和launchable-activity名称(一)
背景:
每次要获取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名称(一)的更多相关文章
- JAVA获取apk包的package和launchable-activity名称(完善成EXE版)
出来混迟早是要还的. 在这一篇中https://www.cnblogs.com/sincoolvip/p/5882817.html,只是简单讲了一下获取apk包的package和launchable- ...
- 查看apk包名package和入口activity名称的方法
ctrl+r 打开CMD窗口 进入sdk-aapt目录 执行命令:aapt dump badging xx.apk 内容太多?不好看,没关系,全部拷出来,ctrl+f,so easy! package ...
- 查看Android应用包名package和入口activity名称
使用android自动化测试工具启动应用时,需要填写被测程序的包名和启动的Activity,以下有两种查看应用包名package和入口activity名称的方法: 方法一:使用aapt //aa ...
- Android开发之查看应用包名package和入口activity名称的方法
使用android自动化测试工具monkeyrunner启动应用时,需要填写被测程序的包名和启动的Activity,以下有两种查看应用包名package和入口activity名称的方法: 方法一:使用 ...
- Android获取APK包名的几种方法
Android获取APK包名的几种方法:1.adb shell pm list package -f | findstr 关键字 #只能获取到包名,主Activity名无法获取到 2.使用aapt-- ...
- Java 获取APK安装程序的包名
Java 获取APK安装程序的包名核心的两个类: ResPackage ApkDecoder package com.temobi.util; import java.io.File; impo ...
- Appium自动化测试3之获取apk包名和launcherActivity后续
接着“Appium自动化测试3之获取apk包名和launcherActivity”章节介绍 测试脚本 1.测试脚本如下: # -*- coding:utf-8 -*- import os, time, ...
- 获取软件的apk包名、查看手机设备名称等
获取软件的apk包名 1.下载aapt,这里使用的是SDK自带的aapt,找到SDK路径下面的aapt.exe,本机路径:E:\downloads\android-sdk_r23.0.2-window ...
- Android自动化学习笔记:获取APK包名的几种方法
---------------------------------------------------------------------------------------------------- ...
随机推荐
- .Net 程序集按需加载机制
在开始本文之前先提两个疑问: 1.一个.Net程序依赖很多的dll,那个他们是在应用程序启动的时候全部把所依赖的动态库全部都加载到应用程序域中的呢还是有选择的加载呢? 2.当应用程序已经启动后我们动态 ...
- java lambda表达式学习笔记
lambda是函数式编程(FP,functional program),在java8中引入,而C#很早之前就有了.在java中lambda表达式是'->',在C#中是‘=>’. 杜甫说:射 ...
- 什么是smarty?
什么是smarty? Smarty是一个使用PHP写出来的模板PHP模板引擎,由PHP.net官方提供 ,它提供了逻辑与外在内容的分离,简单的讲,目的就是要使用PHP程 序员同美工分离,使用的程序员改 ...
- 安装myeclipse10后破解时发现没有common文件夹
今天重新安装了myeclipse10软件,然后在破解的时候发现安装目录下没有common,这是因为以前安装过myeclipse,卸载时没有完全清除,再次安装时,myeclipse会自动找到以前安装的c ...
- 开发错误记录七: Failed to create JVM:error code -4
今天启动Android studio 直接报如下错误: 用 java -verion 发现并不是环境变量没配置好,而是系统分配的内存,没有达到,as 的要求一种是:重启电脑,再启动 就ok 二种是 重 ...
- ETL利器Kettle实战应用解析系列一【Kettle使用介绍】
本系列文章主要索引如下: 一.ETL利器Kettle实战应用解析系列一[Kettle使用介绍] 二.ETL利器Kettle实战应用解析系列二 [应用场景和实战DEMO下载] 三.ETL利器Kettle ...
- [转]js中confirm实现执行操作前弹出确认框的方法
原文地址:http://www.jb51.net/article/56986.htm 本文实例讲述了js中confirm实现执行操作前弹出确认框的方法.分享给大家供大家参考.具体实现方法如下: 现在在 ...
- Shell脚本_启动停止重启sh脚本
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 3 ...
- Linux_Shell_Bash快捷键
来自为知笔记(Wiz)
- Entity Framework在WCF中序列化的问题
问题描述 如果你在WCF中用Entity Framework来获取数据并返回实体对象,那么对下面的错误一定不陌生. 接收对 http://localhost:5115/ReService.svc 的 ...