Izzat Bahadirov
b254a997b5
Fixed the count of map_items in map_list.
2012-12-28 17:22:35 -08:00
Izzat Bahadirov
0e3a7a36d1
Helper method to get map_item name. Useful when dumping stats.
2012-12-28 17:22:30 -08:00
Ben Gruver
7dff6ada5e
Add tests for DexWriter (and fixes to DexWriter, to make said tests pass)
2012-12-28 16:37:41 -08:00
Ben Gruver
9a90c5560c
Refactor DexWriter to write to a generic OutputStream
2012-12-28 16:28:35 -08:00
Izzat Bahadirov
9393c08e36
Using tempBuf when writing encoded floats and doubles. Otherwise, output dex file gets corrupted.
2012-12-27 19:19:38 -08:00
Izzat Bahadirov
fcd1286d41
Added support for getting dex file stats: checkum, signature, map.
2012-12-27 19:19:32 -08:00
Izzat Bahadirov
8aef982e0c
Add support for writing header_item
2012-12-27 19:18:40 -08:00
Izzat Bahadirov
085cfce948
Add support for writing map_item
2012-12-27 19:18:34 -08:00
Izzat Bahadirov
e68daf22aa
Add support for writing class_def_items and class_data
2012-12-26 20:40:35 -08:00
Izzat Bahadirov
f3c33259dd
Add support for writing code_items
2012-12-26 20:24:25 -08:00
Izzat Bahadirov
56c7adde03
ExceptionHandlers are now stored in a List rather than a Set. Order matters.
2012-12-26 20:18:15 -08:00
Izzat Bahadirov
03411559cf
Setting an index in iterator correctly.
2012-12-26 20:18:15 -08:00
Ben Gruver
0856f098c0
Make sure elements are sorted by name when building an annotation in smali
2012-12-25 21:13:08 -08:00
Ben Gruver
b34b329f1d
Use guava rather than google-collections
2012-12-25 20:26:03 -08:00
Ben Gruver
c1023018d9
Use java.lang.Object as the superclass of an unresolvable class while deodexing
2012-12-25 20:05:51 -08:00
Ben Gruver
ebd1b0e9c1
Ensure class permissions are valid when resolving a field while deodexing
2012-12-25 18:04:28 -08:00
Ben Gruver
3952733b85
Return an offset of 0 for an empty annotation directory item
2012-12-11 23:37:24 -08:00
Ben Gruver
650d426c12
Ensure class permissions are valid when resolving a virtual method while deodexing
2012-12-09 16:18:19 -08:00
Ben Gruver
85e27f8ee0
Update version to 1.4.2
2012-11-19 01:15:54 -08:00
Ben Gruver
9a9a664af2
Add support back for jumbo instructions
...
Support for these is no longer controlled by the api, but rather
by the -J option.
2012-11-19 01:06:42 -08:00
Ben Gruver
03935b392e
Use the new virtual table logic for api >= 17
2012-11-18 23:55:10 -08:00
Ben Gruver
280b97e995
Add support for writing debug_info_items
2012-11-18 19:00:22 -08:00
Ben Gruver
4ffbfa2e71
Initial commit of writer functionality
...
It's not fully functional yet, but the structure is there, and it's
got most item types
2012-11-18 14:33:32 -08:00
Ben Gruver
22c3185bb7
Major cleanup of the interface and library in general
2012-11-17 17:51:36 -08:00
Ben Gruver
bea9627ed7
Change the nomenclature from CodeOffset to CodeAddress for absolute code positions
2012-11-16 22:54:14 -08:00
Ben Gruver
cb5cf3d6c0
Delete the MethodPrototype interface
2012-11-16 22:53:03 -08:00
Ben Gruver
85b3146224
Use final and a private constructor for non-instantiable classes
2012-11-16 22:35:12 -08:00
Ben Gruver
d71c98f6b9
Return the correct register count in ImmutableMethodImplementation
2012-11-12 23:03:18 -08:00
Ben Gruver
2d7e111135
Add sorted interface and immutable implementations
2012-11-12 22:55:06 -08:00
Ben Gruver
ddf2021942
Add @Nonnull for ImmutableListConverter methods
2012-11-12 22:25:15 -08:00
Ben Gruver
60ca2ce0ae
Add base implementations of Annotation and AnnotationElement
2012-11-12 22:25:15 -08:00
Ben Gruver
8f14d3641c
Make StringReference and TypeReference implement CharSequence
2012-11-12 22:25:11 -08:00
Ben Gruver
c6e54994a7
Use collections of annotations, not lists.
2012-11-12 22:20:39 -08:00
Ben Gruver
07cf2064e6
Fix logic that determine if an immutable list needs to be copied
2012-11-12 22:20:39 -08:00
Ben Gruver
12b970ed4d
Use collections instead of lists for variable size "lists" in the dex file
...
Only things that can be accessed in the dex file in a random access manner
should be exposed as a list. If the list must be read sequentially, it is
exposed in the interface as a Collection if the size is available up-front
or as an Iterable if the size can only be determined by iterating over the
list.
2012-11-12 22:20:33 -08:00
Ben Gruver
65d969c23b
Rename VariableSizeIterator to VariableSizeLookaheadIterator
...
This improves the implementation, and is now used for debug info
2012-11-11 12:49:38 -08:00
Ben Gruver
b26b492fcc
Get rid of BaseAnnotation
2012-11-10 21:04:31 -08:00
Ben Gruver
e27e44bee3
Refactor EnumEncodedValue to use a field reference
2012-11-10 17:36:16 -08:00
Ben Gruver
b76e75c8bc
Implement hashCode and equals for encoded values
2012-11-10 17:33:28 -08:00
Ben Gruver
ff9eb9fa61
Remove the unnecessary abstract methods from the base reference implementations
2012-11-10 16:21:30 -08:00
Ben Gruver
f7823c4fe1
Add MethodPrototype interface
2012-11-10 16:03:43 -08:00
Ben Gruver
b7b15efc03
Replace BasicMethodParameter with TypeReference
2012-11-10 13:30:07 -08:00
Ben Gruver
f81150ad43
Implement hashCode and equals for references
2012-11-10 13:08:06 -08:00
Ben Gruver
4060490e85
Get rid of old commented code block for methods in ClassDefinition
2012-11-09 23:56:13 -08:00
Ben Gruver
98eede2ce1
Don't write default field values for static final fields that are set in <clinit>
2012-11-09 23:55:15 -08:00
Ben Gruver
60631f684f
Detect static final fields that are set in the static initializer
2012-11-09 23:55:12 -08:00
Ben Gruver
987cdc3e0e
Sort the classes before disassembling
2012-11-09 22:54:39 -08:00
Ben Gruver
42b6dc3e37
Minor cleanup of synthetic accessor code
2012-11-09 22:34:20 -08:00
Ben Gruver
3563a20427
Fix invalid cast in ImmutableInstruction20t
2012-11-09 21:16:55 -08:00
Ben Gruver
2b8845bb24
Re-implement SyntheticAccessorResolver
2012-11-09 21:16:51 -08:00