You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何仅对单个String字符串或整个Activity进行代码混淆

Android单String字符串混淆解决方案

方案1:手动异或加解密(最推荐,针对性最强无额外依赖)

这个方案可以实现100%仅对目标字符串做加密处理,完全不影响其他代码逻辑,反编译后看不到明文链接:

  1. 预先对目标字符串做加密处理
    你可以本地先运行一次如下代码,得到加密后的字节数组:
// 本地运行一次拿到加密数组就可以删掉这段
String originUrl = "https://example.com/app_update/userdata.json";
byte key = (byte) 0x2F; // 自定义任意密钥
byte[] encrypted = originUrl.getBytes();
for (int i = 0; i < encrypted.length; i++) {
    encrypted[i] ^= key;
}
// 打印encrypted数组内容,复制下来备用
  1. 替换项目中原有的字符串声明
package x.y.z

public class MainActivity extends AppCompatActivity {
    // 私有解密方法,仅当前类可用
    private String getRealUrl(byte[] encrypted, byte key) {
        byte[] decrypted = new byte[encrypted.length];
        for (int i = 0; i < encrypted.length; i++) {
            decrypted[i] = (byte) (encrypted[i] ^ key);
        }
        return new String(decrypted);
    }

    @Override
    protected Void doInBackground(Void... arg0) {
        // 这里填入你之前生成的加密字节数组
        byte[] encryptedUrl = new byte[]{104, 116, 119, 57, 48, /* 剩余省略,替换成你自己的数组内容 */};
        String url = getRealUrl(encryptedUrl, (byte) 0x2F);
        // 原有后续逻辑不变
        .
        .
        .
    }
}
  1. 可选优化:你也可以把解密逻辑直接写在doInBackground方法内部,不需要单独抽方法,隐蔽性更强。

方案2:字符串混淆插件定向配置

如果你不想手动写加解密逻辑,可以用Android常用的字符串混淆插件,在插件配置规则里排除所有其他类,仅将x.y.z.MainActivity纳入字符串混淆范围,即可实现仅混淆该类内部的字符串,如果你该类内只有这一个敏感字符串,刚好符合需求。

验证方式

打包Release混淆包后,用jadx等反编译工具打开apk,搜索原明文链接,如果搜索不到即代表混淆生效。

内容的提问来源于stack exchange,提问作者Shivendra Kr. Sahu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.19 06:06:00