@@ -42,42 +42,43 @@ public override bool Execute ()
42
42
if ( MonoAndroidHelper . IsFrameworkAssembly ( fileName ) && ! MonoAndroidHelper . FrameworkEmbeddedJarLookupTargets . Contains ( Path . GetFileName ( fileName ) ) )
43
43
continue ;
44
44
45
- var assembly = res . GetAssembly ( assemblyPath ) ;
46
- bool assembly_modified = false ;
47
- foreach ( var mod in assembly . Modules ) {
48
- // embedded jars
49
- var resjars = mod . Resources . Where ( r => r . Name . EndsWith ( ".jar" , StringComparison . InvariantCultureIgnoreCase ) ) . Select ( r => ( EmbeddedResource ) r ) ;
50
- foreach ( var resjar in resjars . ToArray ( ) ) {
51
- Log . LogDebugMessage ( " Stripped {0}" , resjar . Name ) ;
52
- mod . Resources . Remove ( resjar ) ;
53
- assembly_modified = true ;
45
+ using ( var assembly = res . GetAssembly ( assemblyPath , new ReaderParameters { ReadWrite = true } ) ) {
46
+ bool assembly_modified = false ;
47
+ foreach ( var mod in assembly . Modules ) {
48
+ // embedded jars
49
+ var resjars = mod . Resources . Where ( r => r . Name . EndsWith ( ".jar" , StringComparison . InvariantCultureIgnoreCase ) ) . Select ( r => ( EmbeddedResource ) r ) ;
50
+ foreach ( var resjar in resjars . ToArray ( ) ) {
51
+ Log . LogDebugMessage ( " Stripped {0}" , resjar . Name ) ;
52
+ mod . Resources . Remove ( resjar ) ;
53
+ assembly_modified = true ;
54
+ }
55
+ // embedded AndroidNativeLibrary archive
56
+ var nativezip = mod . Resources . FirstOrDefault ( r => r . Name == "__AndroidNativeLibraries__.zip" ) as EmbeddedResource ;
57
+ if ( nativezip != null ) {
58
+ Log . LogDebugMessage ( " Stripped {0}" , nativezip . Name ) ;
59
+ mod . Resources . Remove ( nativezip ) ;
60
+ assembly_modified = true ;
61
+ }
62
+ // embedded AndroidResourceLibrary archive
63
+ var reszip = mod . Resources . FirstOrDefault ( r => r . Name == "__AndroidLibraryProjects__.zip" ) as EmbeddedResource ;
64
+ if ( reszip != null ) {
65
+ Log . LogDebugMessage ( " Stripped {0}" , reszip . Name ) ;
66
+ mod . Resources . Remove ( reszip ) ;
67
+ assembly_modified = true ;
68
+ }
54
69
}
55
- // embedded AndroidNativeLibrary archive
56
- var nativezip = mod . Resources . FirstOrDefault ( r => r . Name == "__AndroidNativeLibraries__.zip" ) as EmbeddedResource ;
57
- if ( nativezip != null ) {
58
- Log . LogDebugMessage ( " Stripped {0}" , nativezip . Name ) ;
59
- mod . Resources . Remove ( nativezip ) ;
60
- assembly_modified = true ;
61
- }
62
- // embedded AndroidResourceLibrary archive
63
- var reszip = mod . Resources . FirstOrDefault ( r => r . Name == "__AndroidLibraryProjects__.zip" ) as EmbeddedResource ;
64
- if ( reszip != null ) {
65
- Log . LogDebugMessage ( " Stripped {0}" , reszip . Name ) ;
66
- mod . Resources . Remove ( reszip ) ;
67
- assembly_modified = true ;
68
- }
69
- }
70
- if ( assembly_modified ) {
71
- Log . LogDebugMessage ( " The stripped library is saved as {0}" , assemblyPath ) ;
70
+ if ( assembly_modified ) {
71
+ Log . LogDebugMessage ( " The stripped library is saved as {0}" , assemblyPath ) ;
72
72
73
- // Output assembly needs to regenerate symbol file even if no IL/metadata was touched
74
- // because Cecil still rewrites all assembly types in Cecil order (type A, nested types of A, type B, etc)
75
- // and not in the original order causing symbols if original order doesn't match Cecil order
76
- var wp = new WriterParameters ( ) {
77
- WriteSymbols = assembly . MainModule . HasSymbols
78
- } ;
73
+ // Output assembly needs to regenerate symbol file even if no IL/metadata was touched
74
+ // because Cecil still rewrites all assembly types in Cecil order (type A, nested types of A, type B, etc)
75
+ // and not in the original order causing symbols if original order doesn't match Cecil order
76
+ var wp = new WriterParameters ( ) {
77
+ WriteSymbols = assembly . MainModule . HasSymbols
78
+ } ;
79
79
80
- assembly . Write ( assemblyPath , wp ) ;
80
+ assembly . Write ( assemblyPath , wp ) ;
81
+ }
81
82
}
82
83
}
83
84
return true ;
0 commit comments