Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
qq_39073359
jadx
提交
8eef4a90
J
jadx
项目概览
qq_39073359
/
jadx
与 Fork 源项目一致
从无法访问的项目Fork
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
J
jadx
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
8eef4a90
编写于
10月 24, 2018
作者:
S
sergey-wowwow
提交者:
skylot
10月 24, 2018
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fix: saves all resources (#375)
上级
87f50ab5
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
44 addition
and
20 deletion
+44
-20
jadx-core/src/main/java/jadx/api/ResourceType.java
jadx-core/src/main/java/jadx/api/ResourceType.java
+0
-17
jadx-core/src/main/java/jadx/api/ResourcesLoader.java
jadx-core/src/main/java/jadx/api/ResourcesLoader.java
+6
-0
jadx-core/src/main/java/jadx/core/xmlgen/ResContainer.java
jadx-core/src/main/java/jadx/core/xmlgen/ResContainer.java
+20
-0
jadx-core/src/main/java/jadx/core/xmlgen/ResourcesSaver.java
jadx-core/src/main/java/jadx/core/xmlgen/ResourcesSaver.java
+18
-3
未找到文件。
jadx-core/src/main/java/jadx/api/ResourceType.java
浏览文件 @
8eef4a90
...
...
@@ -30,21 +30,4 @@ public enum ResourceType {
}
return
UNKNOWN
;
}
public
static
boolean
isSupportedForUnpack
(
ResourceType
type
)
{
switch
(
type
)
{
case
CODE:
case
LIB:
case
FONT:
case
UNKNOWN:
return
false
;
case
MANIFEST:
case
XML:
case
ARSC:
case
IMG:
return
true
;
}
return
false
;
}
}
jadx-core/src/main/java/jadx/api/ResourcesLoader.java
浏览文件 @
8eef4a90
...
...
@@ -105,6 +105,12 @@ public final class ResourcesLoader {
case
IMG:
return
ResContainer
.
singleImageFile
(
rf
.
getName
(),
inputStream
);
case
CODE:
case
LIB:
case
FONT:
case
UNKNOWN:
return
ResContainer
.
singleBinaryFile
(
rf
.
getName
(),
inputStream
);
default
:
if
(
size
>
LOAD_SIZE_LIMIT
)
{
return
ResContainer
.
singleFile
(
rf
.
getName
(),
...
...
jadx-core/src/main/java/jadx/core/xmlgen/ResContainer.java
浏览文件 @
8eef4a90
...
...
@@ -5,11 +5,13 @@ import java.awt.image.BufferedImage;
import
java.io.ByteArrayInputStream
;
import
java.io.ByteArrayOutputStream
;
import
java.io.File
;
import
java.io.IOException
;
import
java.io.InputStream
;
import
java.util.ArrayList
;
import
java.util.Collections
;
import
java.util.List
;
import
org.apache.commons.io.IOUtils
;
import
org.jetbrains.annotations.NotNull
;
import
org.jetbrains.annotations.Nullable
;
import
org.slf4j.Logger
;
...
...
@@ -30,6 +32,8 @@ public class ResContainer implements Comparable<ResContainer> {
private
CodeWriter
content
;
@Nullable
private
BufferedImage
image
;
@Nullable
private
InputStream
binary
;
private
ResContainer
(
String
name
,
List
<
ResContainer
>
subFiles
)
{
this
.
name
=
name
;
...
...
@@ -62,6 +66,17 @@ public class ResContainer implements Comparable<ResContainer> {
}
return
resContainer
;
}
public
static
ResContainer
singleBinaryFile
(
String
name
,
InputStream
content
)
{
ResContainer
resContainer
=
new
ResContainer
(
name
,
Collections
.
emptyList
());
try
{
resContainer
.
binary
=
new
ByteArrayInputStream
(
IOUtils
.
toByteArray
(
content
));
}
catch
(
IOException
e
)
{
LOG
.
warn
(
"Contents of the binary resource '{}' not saved, got exception {}"
,
name
,
e
);
}
return
resContainer
;
}
public
static
ResContainer
multiFile
(
String
name
)
{
return
new
ResContainer
(
name
,
new
ArrayList
<>());
...
...
@@ -79,6 +94,11 @@ public class ResContainer implements Comparable<ResContainer> {
public
CodeWriter
getContent
()
{
return
content
;
}
@Nullable
public
InputStream
getBinary
()
{
return
binary
;
}
public
void
setContent
(
@Nullable
CodeWriter
content
)
{
this
.
content
=
content
;
...
...
jadx-core/src/main/java/jadx/core/xmlgen/ResourcesSaver.java
浏览文件 @
8eef4a90
...
...
@@ -3,10 +3,14 @@ package jadx.core.xmlgen;
import
javax.imageio.ImageIO
;
import
java.awt.image.BufferedImage
;
import
java.io.File
;
import
java.io.FileOutputStream
;
import
java.io.IOException
;
import
java.io.InputStream
;
import
java.util.List
;
import
org.apache.commons.io.FilenameUtils
;
import
org.apache.commons.io.IOUtils
;
import
org.mockito.internal.util.io.IOUtil
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
...
...
@@ -30,9 +34,6 @@ public class ResourcesSaver implements Runnable {
@Override
public
void
run
()
{
if
(!
ResourceType
.
isSupportedForUnpack
(
resourceFile
.
getType
()))
{
return
;
}
ResContainer
rc
=
resourceFile
.
loadContent
();
if
(
rc
!=
null
)
{
saveResources
(
rc
);
...
...
@@ -89,6 +90,20 @@ public class ResourcesSaver implements Runnable {
cw
.
save
(
outFile
);
return
;
}
InputStream
binary
=
rc
.
getBinary
();
if
(
binary
!=
null
)
{
try
{
outFile
.
getParentFile
().
mkdirs
();
FileOutputStream
binaryFileStream
=
new
FileOutputStream
(
outFile
);
IOUtils
.
copy
(
binary
,
binaryFileStream
);
binaryFileStream
.
close
();
binary
.
close
();
}
catch
(
IOException
e
)
{
LOG
.
warn
(
"Resource '{}' not saved, got exception {}"
,
rc
.
getName
(),
e
);
}
return
;
}
LOG
.
warn
(
"Resource '{}' not saved, unknown type"
,
rc
.
getName
());
}
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录