Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Quincy379
jadx
提交
91691fbd
J
jadx
项目概览
Quincy379
/
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,发现更多精彩内容 >>
提交
91691fbd
编写于
2月 22, 2019
作者:
J
Jan S
提交者:
skylot
2月 22, 2019
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fix: allow APK files without code (no contained dex files) (PR #455)
上级
9856b6d3
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
9 addition
and
6 deletion
+9
-6
jadx-core/src/main/java/jadx/core/utils/android/AndroidResourcesUtils.java
...n/java/jadx/core/utils/android/AndroidResourcesUtils.java
+8
-4
jadx-core/src/main/java/jadx/core/utils/files/InputFile.java
jadx-core/src/main/java/jadx/core/utils/files/InputFile.java
+1
-2
未找到文件。
jadx-core/src/main/java/jadx/core/utils/android/AndroidResourcesUtils.java
浏览文件 @
91691fbd
...
...
@@ -54,6 +54,10 @@ public class AndroidResourcesUtils {
}
LOG
.
info
(
"App 'R' class not found, put all resources ids to : '{}'"
,
fullName
);
resCls
=
makeClass
(
root
,
fullName
,
resStorage
);
if
(
resCls
==
null
)
{
// We are in an APK without code therefore we don't have to update an 'R' class with the resources
return
null
;
}
addResourceFields
(
resCls
,
resStorage
,
false
);
return
resCls
;
}
...
...
@@ -81,18 +85,18 @@ public class AndroidResourcesUtils {
return
rCls
;
}
private
static
void
addResourceFields
(
ClassNode
c
ls
,
ResourceStorage
resStorage
,
boolean
rClsExists
)
{
private
static
void
addResourceFields
(
ClassNode
resC
ls
,
ResourceStorage
resStorage
,
boolean
rClsExists
)
{
Map
<
String
,
ClassNode
>
innerClsMap
=
new
TreeMap
<>();
if
(
rClsExists
)
{
for
(
ClassNode
innerClass
:
c
ls
.
getInnerClasses
())
{
for
(
ClassNode
innerClass
:
resC
ls
.
getInnerClasses
())
{
innerClsMap
.
put
(
innerClass
.
getShortName
(),
innerClass
);
}
}
for
(
ResourceEntry
resource
:
resStorage
.
getResources
())
{
ClassNode
typeCls
=
innerClsMap
.
computeIfAbsent
(
resource
.
getTypeName
(),
name
->
{
ClassNode
newTypeCls
=
new
ClassNode
(
cls
.
dex
(),
c
ls
.
getFullName
()
+
"$"
+
name
,
ClassNode
newTypeCls
=
new
ClassNode
(
resCls
.
dex
(),
resC
ls
.
getFullName
()
+
"$"
+
name
,
AccessFlags
.
ACC_PUBLIC
|
AccessFlags
.
ACC_STATIC
|
AccessFlags
.
ACC_FINAL
);
c
ls
.
addInnerClass
(
newTypeCls
);
resC
ls
.
addInnerClass
(
newTypeCls
);
if
(
rClsExists
)
{
newTypeCls
.
addAttr
(
AType
.
COMMENTS
,
"added by JADX"
);
}
...
...
jadx-core/src/main/java/jadx/core/utils/files/InputFile.java
浏览文件 @
91691fbd
...
...
@@ -77,8 +77,7 @@ public class InputFile {
if
(
skipSources
)
{
return
;
}
throw
new
DecodeException
(
"Unsupported input file format: "
+
file
);
LOG
.
warn
(
"No dex files found in {}"
,
file
);
}
private
void
addDexFile
(
Dex
dexBuf
)
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录