gpt4 book ai didi

使用编译器技巧的 Android 免费/付费应用

转载 作者:行者123 更新时间:2023-11-29 18:10:10 25 4
gpt4 key购买 nike

我想知道您是否可以使用编译器的一个技巧来为应用程序的免费和付费版本包含不同的功能。例如:

public static final boolean paid = false;

if (paid){
runPaidMethod();
}
else {
runFreeMethod();
}

编译器会查看它并说它不需要 if 语句的第一个分支,所以它不会编译它。此外,它应该查看程序并发现不再从任何地方引用 runPaidMethod() 并将其删除。

因此问题是:只拥有这个标志,免费编译一次,交换标志然后再次编译付费是否可行?

最佳答案

使用 final bool 变量很好,因为 Java 编译器足够聪明,可以看到您的条件始终为假。如果您反编译已编译的类(您可以尝试使用 javap -c 命令),您将看到您的代码:

public static final boolean paid = false;

if (paid) {
runPaidMethod();
}
else {
runFreeMethod();
}

将被编译为对 :

的单个调用
runFreeMethod();

编译器会删除所有无法访问的代码,因此没有人能够对您的应用进行逆向工程。但是要小心,你必须将 runPaidMethod() 声明为私有(private)方法,否则它的内容仍然会出现在编译类中。

不过从维护的角度来说,还是用Library Projects比较好处理多个应用程序版本。

关于使用编译器技巧的 Android 免费/付费应用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11171543/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com