28
28
/**
29
29
* The ClassyShark API usually used by build & continues integration toolchains
30
30
*/
31
- public class API {
31
+ public class Shark {
32
+
33
+ private File archiveFile ;
34
+
35
+ private Shark (File archiveFile ) {
36
+ this .archiveFile = archiveFile ;
37
+ }
38
+
39
+ public static Shark with (File archiveFile ) {
40
+ return new Shark (archiveFile );
41
+ }
32
42
33
43
/**
34
- *
35
- * @param archive jar/apk
36
44
* @param className class name to generate such as "com.bumptech.glide.request.target.BaseTarget"
37
45
* @return
38
46
*/
39
- public static String getGeneratedClass (File archive , String className ) {
47
+ public String getGeneratedClass (String className ) {
40
48
String result ;
41
- ContentReader loader = new ContentReader (archive );
49
+ ContentReader loader = new ContentReader (archiveFile );
42
50
loader .load ();
43
51
44
52
Translator translator =
45
- TranslatorFactory .createTranslator (className , archive ,
53
+ TranslatorFactory .createTranslator (className , archiveFile ,
46
54
loader .getAllClassNames ());
47
55
try {
48
56
translator .apply ();
@@ -55,68 +63,61 @@ public static String getGeneratedClass(File archive, String className) {
55
63
}
56
64
57
65
/**
58
- *
59
- * @param archive jar/apk
60
66
* @return list of class names
61
67
*/
62
- public static List <String > getAllClassNames (File archive ) {
63
- ContentReader loader = new ContentReader (archive );
68
+ public List <String > getAllClassNames () {
69
+ ContentReader loader = new ContentReader (archiveFile );
64
70
loader .load ();
65
71
return loader .getAllClassNames ();
66
72
}
67
73
68
74
/**
69
- *
70
- * @param apk apk
71
75
* @return manifest
72
76
*/
73
- public static String getManifest (File apk ) {
74
- if (!apk .getName ().endsWith (".apk" )) {
77
+ public String getManifest () {
78
+ if (!archiveFile .getName ().endsWith (".apk" )) {
75
79
return new String ();
76
80
}
77
81
Translator translator =
78
- TranslatorFactory .createTranslator ("AndroidManifest.xml" , apk );
82
+ TranslatorFactory .createTranslator ("AndroidManifest.xml" , archiveFile );
79
83
translator .apply ();
80
84
return translator .toString ();
81
85
}
82
86
83
87
/**
84
- *
85
- * @param apk apk
86
88
* @return all methods
87
89
*/
88
- public static List <String > getAllMethods (File apk ) {
89
- if (!apk .getName ().endsWith (".apk" )) {
90
+ public List <String > getAllMethods () {
91
+ if (!archiveFile .getName ().endsWith (".apk" )) {
90
92
return new LinkedList <>();
91
93
}
92
- List <String > allMethods = DexMethodsDumper .dumpMethods (apk );
94
+ List <String > allMethods = DexMethodsDumper .dumpMethods (archiveFile );
93
95
return allMethods ;
94
96
}
95
97
96
98
/**
97
- *
98
- * @param apk apk
99
99
* @return all strings from all string tables
100
100
*/
101
- public static List <String > getAllStrings (File apk ) {
102
- if (!apk .getName ().endsWith (".apk" )) {
101
+ public List <String > getAllStrings () {
102
+ if (!archiveFile .getName ().endsWith (".apk" )) {
103
103
return new LinkedList <>();
104
104
}
105
105
106
- List <String > allStrings = DexStringsDumper .dumpStrings (apk );
106
+ List <String > allStrings = DexStringsDumper .dumpStrings (archiveFile );
107
107
return allStrings ;
108
108
}
109
109
110
110
public static void main (String [] args ) {
111
111
File apk =
112
- new File ( "/Users/bfarber/Desktop/Scenarios/4 APKs/"
112
+ new File ("/Users/bfarber/Desktop/Scenarios/4 APKs/"
113
113
+ "com.google.samples.apps.iosched-333.apk" );
114
+ Shark shark = Shark .with (apk );
114
115
115
- System .out .println (API . getGeneratedClass ( apk ,
116
- "com.bumptech.glide.request.target.BaseTarget" ));
117
- System .out .println (API .getAllClassNames (apk ));
118
- System .out .println (API .getManifest (apk ));
119
- System .out .println (API .getAllMethods (apk ));
120
- System .out .println (API .getAllStrings (apk ));
116
+ System .out .println (
117
+ shark . getGeneratedClass ( "com.bumptech.glide.request.target.BaseTarget" ));
118
+ System .out .println (shark .getAllClassNames ());
119
+ System .out .println (shark .getManifest ());
120
+ System .out .println (shark .getAllMethods ());
121
+ System .out .println (shark .getAllStrings ());
121
122
}
122
123
}
0 commit comments