混淆后com.apple.eawt.Application不工作(com.apple.eawt.Ap

2019-09-17 18:37发布

我已经用Java编写的两个MAC OSX和Windows的应用程序,但我已经开发在Windows上。 因此,我使用java.lang.reflect.*为了贯彻落实“关于”和“退出”的处理程序没有收到异常。

我出口它作为一个可执行的JAR,一切工作正常这两个操作系统上。 不过,我想进行模糊处理的应用和我使用ProGaurd这样做。 我指定了必要的库为它工作在Windows(rt.jar中,jsse.jar,jce.jar),它仍然无法在Windows上工作得很好,但是ProGaurd告诉我,在两个悬而未决的动态引用类或接口和混淆应用程序不再正常工作在Mac(关于在并退出处理程序不工作)。

我在其他地方见过的ui.jar是必需的,所以我复制它从我的Mac进行的跨和ProGaurd规定,但似乎没有解决问题! 任何解决方案赞赏然后...

提前致谢

UPDATE

现在我已经使用AppleJavaExtensions为了实现使用处理器com.apple.eawt.Application ,而不是反映。 不过,我仍然得到完全相同的问题! 下面是我目前使用的代码:

package ap;
import com.apple.eawt.AboutHandler;
import com.apple.eawt.AppEvent;
import com.apple.eawt.AppEvent.QuitEvent;
import com.apple.eawt.Application;
import com.apple.eawt.QuitHandler;
import com.apple.eawt.QuitResponse;
import com.gui.Tabs;

public class xa implements AboutHandler, QuitHandler {

    // Constructor to register/install the necessary handler's
    public xa(){
        Application.getApplication().setAboutHandler(this);
        Application.getApplication().setQuitHandler(this);
    }

    // Implemented method to catch the About menu item
    @Override
    public void handleAbout(AppEvent.AboutEvent e) {
        Tabs.switchAbout();

    }

    // Implemented method to catch the Quit menu item
    @Override
    public void handleQuitRequestWith(QuitEvent arg0, QuitResponse arg1) {
        Tabs.quit();        
    }
}

而我使用ProGuard的GUI混淆我的应用程序。 在Obsfucation底部“标签”我已经添加了类ap.xa ,并规定它扩展/实现AboutHandler, QuitHandler 。 我还添加了类com.gui.Tabs ,但问题仍然存在。

Answer 1:

也许你可以试试苹果Java扩展 。

使用Apple Java扩展,你可以在Windows上开发,而无需使用java.lang.reflect.*类,也许它会为ProGuard的更容易。



Answer 2:

它是否有助于如果你告诉ProGuard的不混淆实现了关于类和退出处理?



Answer 3:

尝试-dontoptimize选项。 当他们有一些方法去除“没有任何影响”。 而在Windows上运行的ProGuard ...为Mac。 或哑选择:尝试混淆在Mac上,并提供两个版本。



Answer 4:

哎呀,我已经解决了这个问题......我只是做了一个愚蠢的错误

因为我使用ProGuard的GUI,我没有看到另外屏幕的“类成员”的一部分。 因此,虽然ProGuard的不混淆类本身,它被混淆的方法,因此监听器不工作。 所以,我已经结束了“保留” ap.xa和它所有的方法(包含实际听众类),并com.apple.** (该JavaAppleExtensions包)

然而,仍然有一两件事发生。 当我从终端运行混淆的JAR文件,我收到以下的输出:

Andrews-MacBook-Pro:~ Andy$ java -jar /Users/Andy/Desktop/YLIT\ Final\ 2.jar
Jun  9 20:50:29 Andrews-MacBook-Pro.local java[959] <Error>: CGContextGetCTM: invalid context 0x0
Jun  9 20:50:29 Andrews-MacBook-Pro.local java[959] <Error>: CGContextSetBaseCTM: invalid context 0x0
Jun  9 20:50:29 Andrews-MacBook-Pro.local java[959] <Error>: CGContextGetCTM: invalid context 0x0
Jun  9 20:50:29 Andrews-MacBook-Pro.local java[959] <Error>: CGContextSetBaseCTM: invalid context 0x0


文章来源: com.apple.eawt.Application not working after obfuscation