InApp计费安全和远程方法调用

我已经在一个应用程序的应用程序结算中实现,现在我想要更安全一些。 阅读开发人员材料,它说:

除了运行混淆程序之外,我们还build议您使用以下技术来混淆您的应用内帐单代码。

内联方法到其他方法。

dynamic构buildstring,而不是将其定义为常量。

使用Javareflection来调用方法。

http://developer.android.com/guide/market/billing/billing_best_practices.html

混淆 – 罚款我可以这样做= proguard

内联方法到其他方法 – 这是说,一旦我的代码是完整的,尽我所能摆脱很多的OO,并尽可能多的代码行(我的应用程序的计费部分)在一个方法? 这包括内联类吗? 在android的例子中,他们有一个常量类,我会内联所有这些?

dynamic构buildstring – 是的,所以移动所有类的常量variables – 罚款proguard应该覆盖这一点

使用Javareflection – 这是我的主要问题。 我应该调用所有的方法而不是调用它们吗?

为了节省我自己的一些努力,我可以这样做:

private static Object invokeMethod(String name, Class<?>[] params, Object[] args){ try { return MySpecificClass.class.getMethod(name, params).invoke(null, args); } catch (IllegalArgumentException e) { // Should never happen in my code, ignore and cancel in app charge } catch (SecurityException e) { // Should never happen in my code, ignore and cancel in app charge } catch (IllegalAccessException e) { // Should never happen in my code, ignore and cancel in app charge } catch (InvocationTargetException e) { // Should never happen in my code, ignore and cancel in app charge } catch (NoSuchMethodException e) { // Should never happen in my code, ignore and cancel in app charge } return null; } 

我可以做这样的事情:

 private static boolean someMethod() { return true; // just an example } params = new Class<?>[0]; if ((Boolean) invokeMethod("someMethod", params, null)) { // Do something } 

这是很好的安全性,还是只是代码膨胀,并使我的应用程序对于真正的用户问题undebuggable?

谢谢。

这似乎是当盗版威胁更高的时候你可以看到的东西。 如果它有损害用户体验的机会,我将无法为使用reflection仅仅是为了额外的混淆层而辩护。