Commit Graph

1351 Commits

Author SHA1 Message Date
jamestut
52a44776df Skip additional payload data of TYPE chunk
Some APKs' arsc has additional payload data (like TYPE 8 chunks and/or padding) in the TYPE chunk. After the ARSCDecoder read such kind of chunk, it acts erratically. Most of the time, it just stops parsing the ARSC, therefore, some resources are not decoded because they are not in the apktool's resources' spec table.
2016-09-18 00:13:19 +07:00
Connor Tumbleson
4c93cb7b69
add test for TYPE_DYNAMIC_ATTRIBUTE 2016-09-17 09:48:01 -04:00
Connor Tumbleson
2db9a2b63f
update internal aapt to API 24
- android-7.0.0_r1 tag
2016-09-15 09:16:05 -04:00
Connor Tumbleson
bdfc28c20f
add support for TYPE_DYNAMIC_ATTRIBUTE 2016-09-15 08:36:25 -04:00
Benjamin Adolphi
db35f54af6 Pass minimum api level to smali library
When apktool creates a DexBuilder class, it creates it without specifying a minimum api level. This causes the DexBuilder class to assume api level 20 by default. This is not ideal since in some cases, the concrete minimum api level is required.

One such case is in smali's DexWriter class which implements a workaround for a bug in Dalvik that was fixed in Android 4.2 (https://code.google.com/p/android/issues/detail?id=35304) that causes apps that call the Method.getParameterAnnotations api to crash in some cases (see bug report for more details). The workaround that smali implements is only triggered if the minimum api level is below 17 (Android 4.2). But since apktool effectively sets the minimum api level to 20, this code is never triggered causing apktool to create apk files that crash on devices below Android 4.2.

This change passes the minimum api level to the smali library.
2016-09-15 00:31:32 +02:00
Connor Tumbleson
7801a4bbf2
don't compress mkv/webm 2016-08-24 08:44:24 -04:00
Connor Tumbleson
67d80a133f
Ignore the unknown 4 bytes in Android N 2016-08-24 07:56:09 -04:00
Connor Tumbleson
64644a1242
update internal framework to API 24 (Nougat Final Preview) 2016-08-19 08:25:48 -04:00
Connor Tumbleson
76eb39b8c6
Add passing unit-test for #1298 2016-08-10 09:24:48 -04:00
Connor Tumbleson
67fd3a6cb2
start new dev cycle (2.2.1-SNAPSHOT) 2016-08-10 09:23:46 -04:00
Connor Tumbleson
c6c62d2b7a
version bump (2.2.0) 2016-08-07 10:59:00 -04:00
Connor Tumbleson
00abedfa06
Check for null parent references to prevent crash
- fixes #745
2016-08-06 12:46:45 -04:00
Connor Tumbleson
bada6441ec
don't edit the original Manifest
- use dummy copy and restore original after build
2016-08-06 09:45:18 -04:00
Connor Tumbleson
d0baa841eb
Add support for getting literal values for references in android:scheme
- side affect of using public.xml to get constant resource ids
 - fixes #1097
2016-08-06 08:31:58 -04:00
Connor Tumbleson
0e0f8b0dee
force encoding to UTF8
- pulled from #1277
2016-08-06 08:03:04 -04:00
Connor Tumbleson
567907b187
Create fake names to prevent abuse from duplicate key names
- fixes #894
2016-08-06 07:57:19 -04:00
Connor Tumbleson
6e509695eb
Patch newest AndroResGuard format 2016-08-06 07:56:17 -04:00
Connor Tumbleson
e1dd436854 Merge pull request #1297 from amorris13/issue_1166
Use Guava's LittleEndianDataInputStream.
2016-08-05 19:41:27 -04:00
Anthony Morris
e23eb9cf6b Use Guava's LittleEndianDataInputStream.
This replaces the custom LittleEndianDataInputStream with
guava's implementation. To do this, I had to fix ExtDataInput
to better handle the case where skipBytes doesn't skip all the
bytes (the tests failed without this, and succeed with it). This
appears to be the main difference between the two implementations.
Guava's implementation is preferred because it is already a
dependency and because its license is clearer (the previous
implementation had a vague "public domain" comment in the thread
which may not be legally sufficient).

Fixes #1166
2016-08-05 14:36:34 +01:00
Connor Tumbleson
10d09f208c Dependency Updates
- baksmali (2.1.3)
 - findbugs (3.0.1)
 - junit (4.12)
 - snakeyaml (1.17)
2016-08-04 11:07:14 -04:00
Connor Tumbleson
2783ec34d0
Update to smali 2.1.3
- fixes #1269
2016-08-03 07:43:02 -04:00
Connor Tumbleson
2135ad3057
Prevent truncation of hex values in AndroidManifest
- fixes #972
2016-08-02 22:48:02 -04:00
Connor Tumbleson
e6faa56c96
Correctly handle ResTable_typeSpec by using unsigned bytes to prevent overflow
- fixes #1185
 - allows applications that have large typeSpec indexes to work
2016-08-01 23:26:00 -04:00
Connor Tumbleson
3a982948ea
Adds full filepath for STORED files in case of multiple extensions
- fixes #1244
 - prevents greedy extension check STORE`ing too many files
2016-07-29 09:21:52 -04:00
Connor Tumbleson
475178605c
dump header size during failure 2016-07-21 08:29:06 -04:00
Connor Tumbleson
a4270d065e
moving to 2.2.0 due to no longer patch release 2016-06-21 08:04:10 -04:00
Connor Tumbleson
ed7b094b02
move default framework location on windows/unix
- unix - $HOME/.local/share/apktool
 - windows - $HOME/AppData/Local/apktool
 - #1277
2016-06-21 08:03:00 -04:00
Connor Tumbleson
3c41d44d8c
add failing test (skipped) for #1274 2016-06-21 07:23:41 -04:00
Connor Tumbleson
a684bae43a
Fixes improper decoding of @empty value
- fixes #1270
 - references #1116
2016-06-13 08:40:00 -04:00
Pierre-Hugues Husson
606e47bf55
Add @empty type 2016-06-13 08:23:08 -04:00
Connor Tumbleson
c389139434
Handles APKs with missing versionCode/versionName properties
- fixes #1264
2016-06-08 07:24:27 -04:00
Connor Tumbleson
d932c70cbe
Forces extensions to lowercase to prevent collisions
- references #1258
2016-05-31 07:34:46 -04:00
Connor Tumbleson
1c8a2fa8c9
start new dev cycle (2.1.2-SNAPSHOT) 2016-05-31 07:34:30 -04:00
Connor Tumbleson
77d24530d5
version bump (2.1.1) 2016-05-07 16:55:49 -04:00
Connor Tumbleson
8d57d95a5f
update to smali 2.1.2 2016-05-07 16:54:36 -04:00
Connor Tumbleson
47dd120b38 Prevents package renaming of Adobe AIR applications
- fixes #1240
2016-05-04 08:04:28 -04:00
Connor Tumbleson
2f67a36c72 Merge pull request #1237 from iBotPeaches/issue/1131
Skips unknown bytes if mismatch occurs after reading Configurations
2016-04-30 10:19:32 -04:00
Connor Tumbleson
ba62238843 Skips unknown bytes if mismatch occurs after reading Configurations
- fixes #1131
2016-04-30 09:02:23 -04:00
Connor Tumbleson
3e566930c7 Merge branch 'padlar-issue/1234' 2016-04-29 07:08:03 -04:00
Connor Tumbleson
a7f3e9b4d0 add unit-test for #1234 2016-04-29 07:07:33 -04:00
Sunil Shivanand
7c1ce8bb6e Issue 1234 - Use literal value of versionName when used
When reference string is used for versionName in AndroidManifest.xml,
fetch the literal value of the referened string in the output apk.

This patch doesnt modify the original apk.
2016-04-28 16:25:42 +02:00
Connor Tumbleson
96185168a5 Merge branch 'Benjamin-Dobell-aapt-debug-mode' 2016-04-28 08:31:48 -04:00
Connor Tumbleson
87315af36e Remove previous android:debuggable value to allow changing
- adds unit test
 - normalizeNewlines moved to TestUtils
2016-04-28 08:31:36 -04:00
Benjamin Dobell
032a3e5e25 Reinstate minimalistic debug option to inject android:debuggable with aapt 2016-04-28 08:21:21 -04:00
Connor Tumbleson
8689991626 clear /apktool/framework/1.apk in between tests 2016-04-27 07:37:14 -04:00
Connor Tumbleson
d05dc3296a update tests for new internal framework 2016-04-23 15:12:21 -04:00
Connor Tumbleson
2792b05b9d Merge branch 'BurgerZ-patch-6' 2016-04-23 14:41:04 -04:00
Connor Tumbleson
27e92ebbfb add AndroidManifest into internal framework 2016-04-23 14:40:56 -04:00
Connor Tumbleson
e768fc6cf6 Merge branch 'patch-6' of https://github.com/BurgerZ/Apktool into BurgerZ-patch-6 2016-04-23 14:03:16 -04:00
Andrei Zhukouski
513e4b752b Copy AndroidManifest.xml
Copy AndroidManifest.xml along with resources.arsc from the framework apk file instead of creating the fake entry.
2016-04-22 08:32:42 +03:00