android - 使用更困惑的代码设计应用程序?

标签 android design-patterns

最近我用this打开了一些真实的应用程序

所以我从中获取源代码。在那些源码中,我发现大部分代码都是这样设计的

public class LockActivity extends Activity {
    public void onCreate(Bundle bundle) {
        super.onCreate(bundle);
        if (GlobalDataHolder.m9617e()) {
            bm.m8771b(getApplicationContext(), getPackageManager());
            finish();
        }
    }

    protected void onResume() {
        super.onResume();
        if (GlobalDataHolder.m9617e()||this.f4719a.m9124j()) {
            bm.m8771b(getApplicationContext(), getPackageManager());

            finish();
            return;
        }
        startActivity(new Intent(getApplicationContext(), LaunchActivity.class));
    }

    public void onPause() {
        super.onPause();
    }

    public void onDestroy() {
        super.onDestroy();
    }
}

还有乱码命名的java文件如

aa.java

bh.java

cj.java

我的问题是

1) 为什么那些开发者创建名为'm8771b','m9617e'的函数

2) 为什么大多数应用都是这样设计的?

3) 这是否更安全以避免其他人复制他们的代码?

4) 我们是否也应该这样设计应用程序?

5) 他们如何记住函数的放置位置?

最佳答案

人们不会那样写代码……除非他们是专家或缺乏经验。使用看似随机的方法/类名称字符串称为混淆,这意味着隐藏某些东西的真正含义以使其难以阅读。

Obfuscation Wiki因为它与软件开发有关

那里有一些程序,比如 ProGuard为我们做这件事。它的目的是使代码既紧凑又晦涩。这样一来,如果不无休止地研究项目的功能(取决于复杂性),某人就很难反编译和重建项目。

由于 Java 总是编译成字节码,因此它的反编译方式是可预测的,并且比一次编写随处编译的语言更加标准。 ProGuard 有助于保护知识产权或专有软件,防止人们窃取代码。

关于android - 使用更困惑的代码设计应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39567165/

相关文章:

android: AbsListView.OnScrollListener SCROLL_STATE_IDLE 在 SCROLL_STATE_TOUCH_SCROLL 之后不被调用(版本 2.1)

android - Twitter4J 不支持哪些版本的 Android?

android - 我是否需要创建重复的 XML 文件来支持应用程序样式的向后兼容性?

delphi - 在 Delphi 窗体上的控件旁边添加验证器符号

python - 动态继承的设计模式

java - 在 float[][] 中搜索 3D 图案

android - 在回收器 View 的适配器内的单项 View 中使用 ViewModel 方法好吗?

android - 如何在保持构造函数为空的同时将应用程序上下文传递给广播接收器

java - 交易成功后如何发送XMPP消息?

java并发-带有监视器线程的单例设计