@@ -75,25 +75,31 @@ def fix_manifest(tempdir)
75
75
original_manifest = parse_manifest ( "#{ tempdir } /original/AndroidManifest.xml" )
76
76
original_permissions = original_manifest . xpath ( "//manifest/uses-permission" )
77
77
78
- manifest = original_manifest . xpath ( '/manifest' )
79
78
old_permissions = [ ]
80
- for permission in original_permissions
79
+ original_permissions . each do | permission |
81
80
name = permission . attribute ( "name" ) . to_s
82
81
old_permissions << name
83
82
end
84
- for permission in payload_permissions
83
+
84
+ application = original_manifest . xpath ( '//manifest/application' )
85
+ payload_permissions . each do |permission |
85
86
name = permission . attribute ( "name" ) . to_s
86
87
unless old_permissions . include? ( name )
87
88
print_status ( "Adding #{ name } " )
88
- original_permissions . before ( permission . to_xml )
89
+ if original_permissions . empty?
90
+ application . before ( permission . to_xml )
91
+ original_permissions = original_manifest . xpath ( "//manifest/uses-permission" )
92
+ else
93
+ original_permissions . before ( permission . to_xml )
94
+ end
89
95
end
90
96
end
91
97
92
98
application = original_manifest . at_xpath ( '/manifest/application' )
93
99
application << payload_manifest . at_xpath ( '/manifest/application/receiver' ) . to_xml
94
100
application << payload_manifest . at_xpath ( '/manifest/application/service' ) . to_xml
95
101
96
- File . open ( "#{ tempdir } /original/AndroidManifest.xml" , "wb" ) { |file | file . puts original_manifest . to_xml }
102
+ File . open ( "#{ tempdir } /original/AndroidManifest.xml" , "wb" ) { |file | file . puts original_manifest . to_xml }
97
103
end
98
104
99
105
def parse_orig_cert_data ( orig_apkfile )
0 commit comments