设计应用程序使用更混乱的代码?

时间:2016-09-19 07:03:10

标签: 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)他们如何记住他们放置功能的位置?

1 个答案:

答案 0 :(得分:4)

人们不会写这样的代码......除非他们要么是学者,要么是没有经验的人。使用看似随机的方法/类名字符串称为混淆(Obfuscation),这意味着隐藏某些东西的真实含义以使其难以阅读。

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

有一些程序,比如ProGuard为我们这样做。它的目的是为了紧凑和模糊的代码。这样,有些人很难对项目进行反编译和重建,而不会无休止地倾倒它的功能(取决于复杂性)。

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