From d7082a3ce4e4a2dfb147fd43ffa9811c21a7c52c Mon Sep 17 00:00:00 2001 From: AraragiHitagi <542941556@qq.com> Date: Wed, 7 Dec 2022 12:29:01 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=EF=BC=9A=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=E5=B1=9E=E6=80=A7=E5=90=8E=EF=BC=8C=E5=AE=89=E8=A3=85apk?= =?UTF-8?q?=E4=BD=86=E5=B1=9E=E6=80=A7=E5=A4=B1=E6=95=88=E7=9A=84=E9=97=AE?= =?UTF-8?q?=E9=A2=98=EF=BC=8C=E5=B1=9E=E6=80=A7=E7=9A=84=E9=A1=BA=E5=BA=8F?= =?UTF-8?q?=E5=BF=85=E9=A1=BB=E4=BF=9D=E6=8C=81=E4=B8=8D=E5=8F=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 添加给属性插入指定位置的功能 java -jar AXMLEditor.jar -attr -i 标签 唯一标识 属性名 属性值 属性位置 AndroidManifest.xml AndroidManifest_out.xml --- src/cn/wjdiankong/main/Main.java | 94 ++++++++++++++++++-------------- 1 file changed, 54 insertions(+), 40 deletions(-) diff --git a/src/cn/wjdiankong/main/Main.java b/src/cn/wjdiankong/main/Main.java index 6df0e5f..f1f3bbe 100644 --- a/src/cn/wjdiankong/main/Main.java +++ b/src/cn/wjdiankong/main/Main.java @@ -8,22 +8,33 @@ public class Main { - private final static String CMD_TXT = "[usage java -jar AXMLEditor.jar [-tag|-attr] [-i|-r|-m] [ǩ|ǩΨһID||ֵ] [ļ|ļ]"; + private final static String CMD_TXT = "[usage java -jar AXMLEditor2.jar [-tag|-attr] [-i|-r|-m] [标签名|标签唯一ID|属性名|属性值] [输入文件|输出文件]" + + "\n举例说明:" + + "\n 1>插入属性:application的标签中插入android:debuggable=\"true\"属性,让程序处于可调式状态" + + "\n java -jar AXMLEditor2.jar -attr -i application package debuggable true AndroidManifest.xml AndroidManifest_out.xml" + + "\n 2>删除属性:application标签中删除allowBackup属性,这样此app就可以进行沙盒数据备份" + + "\n java -jar AXMLEditor2.jar -attr -r application allowBackup AndroidManifest.xml AndroidManifest_out.xml" + + "\n 3>更改属性:application的标签中修改android:debuggable=\"true\"属性,让程序处于可调式状态" + + "\n java -jar AXMLEditor2.jar -attr -m application package debuggable true AndroidManifest.xml AndroidManifest_out.xml" + + "\n 4>插入标签:因为插入标签时一个标签内容比较多,所以命令方式不方便,而是输入一个需要插入标签内容的xml文件即可。" + + "\n java -jar AXMLEditor2.jar -tag -i [insert.xml] AndroidManifest.xml AndroidManifest_out.xml" + + "\n 5>删除标签:删除android:name=\"cn.wjdiankong.demo.MainActivity\"的标签内容" + + "\n java -jar AXMLEditor2.jar -tag -r activity cn.wjdiankong.demo.MainActivity AndroidManifest.xml AndroidManifest_out.xml"; public static void main(String[] args){ /** - * ʽ - * -i Ӷ - * -r ɾ - * -m ¶ - * -attr - * -tag ǩ - * ԲֱɣǩҪϢ + * 命令格式: + * -i 添加动作 + * -r 删除动作 + * -m 更新动作 + * -attr 属性 + * -tag 标签 + * 属性操作直接输入参数即可,标签操作需要输入信息 */ if(args.length < 3){ - System.out.println("..."); + System.out.println("参数有误..."); System.out.println(CMD_TXT); return; } @@ -33,11 +44,11 @@ public static void main(String[] args){ File inputFile = new File(inputfile); File outputFile = new File(outputfile); if(!inputFile.exists()){ - System.out.println("ļ..."); + System.out.println("输入文件不存在..."); return; } - //ļ + //读文件 FileInputStream fis = null; ByteArrayOutputStream bos = null; try{ @@ -61,7 +72,7 @@ public static void main(String[] args){ doCommand(args); - //дļ + //写文件 if(!outputFile.exists()){ outputFile.delete(); } @@ -84,114 +95,117 @@ public static void main(String[] args){ } public static void testDemo(){ - //ɾһtagɾtagʱָtagƺnameֵΨһȷһtagϢ + //删除一个tag,删除tag时必须指定tag名称和name值,这样才能唯一确定一个tag信息 //XmlEditor.removeTag("uses-permission", "android.permission.INTERNET"); //XmlEditor.removeTag("activity", ".MainActivity"); - //ɾԣҪָԶӦtagƺnameֵȻ + //删除属性,必须要指定属性对应的tag名称和name值,然后就是属性名称 //XmlEditor.removeAttr("activity", ".MainActivity", "name"); //XmlEditor.removeAttr("uses-permission", "android.permission.INTERNET", "name"); - //ӱǩֱxmlüɣҪעϢmanifestıǩapplicationǩĺ + //添加标签,直接在xml中配置即可,需要注意的是配置信息:manifest下面的标签必须在application标签的后面 //XmlEditor.addTag(); - //ԣָǩ + //添加属性,必须指定标签内容 //XmlEditor.addAttr("activity", ".MainActivity", "jiangwei", "fourbrother"); - //ԣֱӲɾӲ + //更改属性,这里直接采用先删除,再添加策略完成 //XmlEditor.modifyAttr("application", "package", "debuggable", "true"); } public static void doCommand(String[] args){ if("-tag".equals(args[0])){ if(args.length < 2){ - System.out.println("ȱٲ..."); + System.out.println("缺少参数..."); System.out.println(CMD_TXT); return; } - //ǩ + //标签 if("-i".equals(args[1])){ if(args.length < 3){ - System.out.println("ȱٲ..."); + System.out.println("缺少参数..."); System.out.println(CMD_TXT); return; } - // + //插入操作 String insertXml = args[2]; File file = new File(insertXml); if(!file.exists()){ - System.out.println("ǩxmlļ..."); + System.out.println("插入标签xml文件不存在..."); return; } XmlEditor.addTag(insertXml); - System.out.println("ǩ..."); + System.out.println("插入标签完成..."); return; }else if("-r".equals(args[1])){ if(args.length < 4){ - System.out.println("ȱٲ..."); + System.out.println("缺少参数..."); System.out.println(CMD_TXT); return; } - //ɾ + //删除操作 String tag = args[2]; String tagName = args[3]; XmlEditor.removeTag(tag, tagName); - System.out.println("ɾǩ..."); + System.out.println("删除标签完成..."); return; }else{ - System.out.println("ǩ..."); + System.out.println("操作标签参数有误..."); System.out.println(CMD_TXT); return; } }else if("-attr".equals(args[0])){ if(args.length < 2){ - System.out.println("ȱٲ..."); + System.out.println("缺少参数..."); System.out.println(CMD_TXT); return; } - // + //属性 if("-i".equals(args[1])){ if(args.length < 6){ - System.out.println("ȱٲ..."); + System.out.println("缺少参数..."); System.out.println(CMD_TXT); return; } - // + //插入属性 String tag = args[2]; String tagName = args[3]; String attr = args[4]; String value = args[5]; - XmlEditor.addAttr(tag, tagName, attr, value); - System.out.println("..."); + int attrIndex = -1; + attrIndex = Integer.parseInt(args[6]); + System.out.println("插入属性的下标:" + attrIndex); + XmlEditor.addAttr(tag, tagName, attr, value, attrIndex); + System.out.println("插入属性完成..."); return; }else if("-r".equals(args[1])){ if(args.length < 5){ - System.out.println("ȱٲ..."); + System.out.println("缺少参数..."); System.out.println(CMD_TXT); return; } - //ɾ + //删除属性 String tag = args[2]; String tagName = args[3]; String attr = args[4]; XmlEditor.removeAttr(tag, tagName, attr); - System.out.println("ɾ..."); + System.out.println("删除属性完成..."); return; }else if("-m".equals(args[1])){ if(args.length < 6){ - System.out.println("ȱٲ..."); + System.out.println("缺少参数..."); System.out.println(CMD_TXT); return; } - //޸ + //修改属性 String tag = args[2]; String tagName = args[3]; String attr = args[4]; String value = args[5]; XmlEditor.modifyAttr(tag, tagName, attr, value); - System.out.println("޸..."); + System.out.println("修改属性完成..."); }else{ - System.out.println("Բ..."); + System.out.println("操作属性参数有误..."); System.out.println(CMD_TXT); return; }