On 13/02/14 21:32, Nick Alexander wrote:
This would be nice, but I'm not sure Proguard supports "consumers that are not themselves part of the resulting JAR file". Worth investigating, for sure.

It doesn't, but that's not a problem.
Proguard maps multiple input jars to multiple output jars. The idea is you make Robocop's jars be part of the input jar set and use a filtering rule to siphon the Proguarded-Robocop jars to the proper output directory. Since you'll now have processed both Fennec and Robocop together "as one program" as far as Proguard is concerned, it will have automagically preserved calls between the two, and you no longer need to have manually told it the list of things in the Fennec jars that Robocop calls - since Robocop was in the input jar set Proguard now sees all such calls as internal. You can then, for release builds, simply drop Robocop from the input jar set and get slightly improved (But now Robocop-incompatible) output. There was discussion of this on the original Proguard bug, I believe, if this remains unclear.

Since your proposed change will make it be the case that both Fennec and Robocop jars will always be available at the point Proguard is running, this is now slightly less problematic to implement (At least, it reduces the amount of required build system wizardry to a level where I can see how it can straightforwardly be done).

Also, spectacularly offtopic! Sorry.


I have been thinking that we should go debug/release builds with only the latter Proguarded, since the Proguard "contract" is that it should not change behaviour. (Of course, that's a lie, since reflection, etc interact with Proguard.)

That's been mentioned before. Due to Fennec's liberal use of the JNI and other things that need manual annotation to prevent Proguard from eating them, having no passes of Proguard at all on debug builds is just asking for someone to forget such an annotation and not notice until much later. Of course, the vast majority of work that gets done doesn't involve adding/removing such entry points, so maybe the answer is to check for such errors in a less expensive way. Bug 944553 <https://bugzilla.mozilla.org/show_bug.cgi?id=944553>might be a good start in that direction (It checks consistency of annotations (where possible) independently of Proguard. This seems a nice way of checking if you screwed up an annotation without having to wait for such a long time). Unsurprisingly, RNewman didn't like the hastily-assembled gargantum sed script at the core of that solution.

I digress.
_______________________________________________
mobile-firefox-dev mailing list
[email protected]
https://mail.mozilla.org/listinfo/mobile-firefox-dev

Reply via email to