首页
学习
活动
专区
圈层
工具
发布

读懂 Android 中的代码混淆

在Android开发工作中,我们都或多或少接触过代码混淆。比如我们想要集成某个SDK,往往需要做一些排除混淆的操作。 本文为本人的一些实践总结,介绍一些混淆的知识和注意事项。...希望可以帮助大家更好的学习和使用代码混淆。...什么是混淆 关于混淆维基百科上该词条的解释为 代码混淆(Obfuscated code)亦称花指令,是将计算机程序的代码,转换成一种功能上等价,但是难于阅读和理解的形式的行为。...java代码中的枚举类型最后转换成类中的static final属性 多出了两个方法,values()和valueOf(). values方法返回定义的枚举类型的数组集合,即从MONDAY到SUNDAY...四大组件不建议混淆 Android中四大组件我们都很常用,这些组件不能被混淆的原因为 四大组件声明必须在manifest中注册,如果混淆后类名更改,而混淆后的类名没有在manifest注册,是不符合Android

1.9K20

Android性能优化(十)之App瘦身攻略

2.2.1 Android Studio Analyze APK Android Studio 2.2之后有一个功能Analyze APK,方便简单,功能还是Google自带的靠谱; 查看apk中任意文件的大小...确定优化方向: 代码部分:冗余代码、无用功能、代码混淆、方法数缩减等; 资源部分:冗余资源、资源混淆、图片处理等; 对So文件的处理等。...而缩减方法数,除了上面写到的普遍方法:移除无用方法、库、使用较小的SDK之外还有: 避免在内部类中访问外部类的私有方法、变量。...挡在Java内部类(包含匿名内部类)中访问外部类的私有方法、变量的时候,编译器会生成额外的方法,会增加方法数; 避免调用派生类中的未被覆写的方法,避免在派生类中调用未覆写的基类的方法;避免用派生类的对象调用派生类中未覆盖的基类的方法...4.1 移除无用的资源文件 移除无用资源文件要比移除无用代码容易,在Android Studio的任何文件中右击,选择清除无用资源即可删除没有用到的资源文件。 ?

2K30
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Android 混淆从入门到精通

    简介 作为Android开发者,如果你不想开源你的应用,那么在应用发布前,就需要对代码进行混淆处理,从而让我们代码即使被反编译,也难以阅读。...说在前面 这里我们直接用Android Studio来说明如何进行混淆,Android Studio自身集成Java语言的ProGuard作为压缩,优化和混淆工具,配合Gradle构建工具使用很简单,只需要在工程应用目录的...如下例子就避免所有继承Activity的类被混淆 -keep public class * extends android.app.Activity 如果我们要保留一个类中的内部类不被混淆则需要用$符号...,如下例子表示保持ScriptFragment内部类JavaScriptInterface中的所有public内容不被混淆。...自定义的View默认也不会被混淆;所以像网上贴的很多排除自定义View,或四大组件被混淆的规则在Android Studio中是无需加入的; 与服务端交互时,使用GSON、fastjson等框架解析服务端数据时

    1.6K90

    Android Studio 4.0 正式版发布

    Layout Inspector 现在会如实显示应用 UI 中的真实数据,方便您更好地调试设备上显示的内容。 Android Studio 4.0 正式版的发布,离不开预览版用户们早期给出的宝贵反馈。...Android Studio 4.0 中新加入的 Motion Editor 让开发者能在其界面中创建、编辑和预览 MotionLayout 动画,从而更轻松地驾驭这个 API。...前往《Android Studio 4.0+ 中新的 UI 层次结构调试工具》了解更多。...在 Android Studio 4.0 中,CPU 活动记录从分析器的主时间轴中分离出来,并成组展现,以便于分析。...编写代码缩减规则时的智能编辑器功能 image.png 我们在 Android Gradle 插件 3.4.0 中引入了 R8,使得字节码转换 (desugaring)、缩减、混淆和 dex 处理能一步到位

    4K31

    Android Studio下打jar包及使用jar包

    内执行以上命令 第一次使用Android Studio时你应该知道的一切配置(三):gradle项目构建-Android-第七城市 二、Android Studio下使用jar包 1,本项目中使用jar...包内的所有Activity和Service都要注册,否则会无法调用Service(遇到的问题,没写BleLibaray和BleService) 三、混淆Android Jar包 遇到的问题:内部接口无法混淆...包的方法(打开架构师的大门) Android Studio中如何打JAR包 Android Studio实现代码混淆-布布扣-bubuko.com Android Studio多渠道打包和代码混淆教程...- leeo1010的专栏 - 博客频道 - CSDN.NET Android Studio 代码混淆 - zero-H - 博客园 android 代码混淆关于内部接口的混淆和实现-qqsheji-ChinaUnix...- sunzn - 博客园 APP代码混淆的步骤与效果_百度经验 Android 混淆代码总结 - 这里才是学习Android的好地方 - 博客频道 - CSDN.NET 代码混淆的实现原理与方法

    5.5K50

    Android-Proguard(混淆)

    以我们的常用开发工具andorid studio 为例,Android Studio自身集成Java语言的ProGuard作为压缩,优化,混淆和预校验,并配合Gradle工具进行构建,我们只需要在工程应用目录的...preverify: 预校验代码是否符合Java1.6或者更高的规范.     除了proguard之外,还有一个DexGuard,是专门用来优化混淆Android应用的。...混淆后我们会在工程目录app/build/outputs/mapping/release(debug)下找到一个mapping.txt文件,这就是混淆规则,我们可以根据这个文件把混淆后的代码反推回源本的代码...  } #在方法后加入参数,限制特定的构造方法 -keep class com.xzt.demotwo.MainActivity{ public (String); } #要保留一个类中的内部类及其内容不被混淆需要用...自定义的View默认也不会被混淆;所以像网上贴的很多排除自定义View,或四大组件被混淆的规则在Android Studio中是无需加入的; 4,与服务端交互时,使用GSON、fastjson等框架解析服务端数据时

    1.5K40

    Android Studio 4.1你想知道的都在了

    直接在 Android Studio 中运行模拟器 以前的模拟器必须在独立的窗口中运行,现在可以直接在 Android Studio 中运行模拟器,可以在 Files->Setting->Tools->...Dagger 导航支持 Dagger 是 Android 上流行的依赖注入库,AS 对此也提供了 Find Usages 功能,使在Dagger相关代码之间导航变得更加容易。 ?...从 AAR 中导出 C/C++ 中的依赖 Android Gradle Plugin 4.0 添加了在 AAR 依赖项中导入 Prefab 功能。...现在 AGP4.1 版本启用了从 AAR 中导出依赖库功能,在模块的build.gradle文件中添加如下代码导出 native libraries: buildFeatures { prefabPublishing...Windows/Linux:studio-installation-folder>\bin macOS:studio-installation-folder>/Contents/bin 然后运行

    1.1K30

    Android 混淆那些事儿

    本文主要讲述了代码混淆和资源混淆的原理,Studio默认的混淆方案,混淆的参数,以及如何对Apk进行代码混淆(自定义混淆文件)和资源混淆(结合微信混淆和美团混淆两种方案),避免Apk被逆向。...未混淆代码的反编译操作非常简单,网上有很多教程, 也可以通过使用Android Studio自带的apk分析工具(Build—-Analyze APK)直接看到未混淆Apk的源代码和原始的资源文件。...混淆不仅能将代码中的类名、字段、方法名变为无意义的名称,保护代码,也由于移除无用的类、方法,并使用简短名称对类、字段、方法进行重命名缩小了程序的size。...Android Studio 默认的混淆方案及字段解读 开启混淆 参见google官方文档压缩代码和资源 要通过Proguard启动代码压缩,在build.gradle文件内相应的构建类型中添加minifyEnabled...csh代码方便,我们需要在proguard_rules.pro中手动添加抛出异常时保留代码行号,并且重命名抛出异常时的文件名称,这样能方便定位问题: 抛出异常时保留代码行号 -keepattributes

    3.5K50

    【详解】Android性能与内存优化

    Handler泄漏:如果Handler位于非静态内部类中,并且发送的消息生命周期超过了外部类,可能会导致内存泄漏。使用弱引用(WeakReference)可以解决这个问题。4....使用ProGuard混淆代码启用ProGuard不仅可以保护你的应用免受逆向工程的影响,还可以通过移除未使用的类、字段、方法等来减小APK的体积,进而减少内存消耗。5....利用性能监控工具Google提供了多种工具帮助开发者监控和诊断应用性能问题,如Android Studio中的Profiler工具。...使用 ​​ProGuard​​ 进行代码混淆和优化在 ​​build.gradle​​ 文件中启用 ProGuard。...使用ProGuard混淆启用ProGuard:通过混淆代码,减少APK的体积,提高启动速度。

    7300

    ArkUI-X跨平台已至,何需其它!

    运行环境DevEco Studio:4.0ReleaseOpenHarmony SDK API10开发板:润和DAYU200自从写了一篇ArkUI-X跨平台的文章之后,好多人都说对这个项目十分关注。...可通过DevEco Studio > File > Settings > Build, Execution, Deployment > Ohpm 查看ohpm home的安装路径,并配置到环境变量中(macOS...配置ArkUI-X SDK环境ArkUI-X SDK下载路径,可通过DevEco Studio > File > Settings > ArkUI-X查看ArkUI-X的安装路径,并配置到环境变量中(macOS...也在此活动中累计完成1.5W行代码提交,以及在2023年OpenHarmony创新赛中。...编译后的ArkTS代码、资源和平台胶水代码已生成到Android和iOS应用工程中,后续安装、运行和调试请使用Android Studio和Xcode,9.1、ios上运行我们来看一下在ios上如何运行显示隐藏文件快捷键

    66010

    Android Studio 4.0重磅发布:全新的 Motion 编辑器及众多更新都在这里!

    在 Android Studio 4.0 中,新的 Motion Editor 让这个 API 用起来更方便。它提供了用于创建、编辑和预览 MotionLayout 动画的强大界面。...在 Android Studio 4.0 中,CPU 记录现在与 Profiler 主时间轴分开显示,并按组分类以简化分析过程。你可以上下移动组,或者在组中拖放项目以定制界面。 ?...编写 R8 规则时的智能编辑器功能 R8 是在 Android Gradle 插件 3.4.0 中引入的,可将 desugaring、缩减、混淆、优化和 dexing 合并为一个步骤,从而显著提高构建性能...Android Studio 现在为你的 Kotlin 代码提供了 Android 专属的实时模板。例如,只需键入 Toast,然后按 Tab 键即可快速插入 Toast 的样板代码。...在 Android Studio 4.0 中,无论你的应用的 minSdkVersion 如何,都可以使用 desugaring 引擎来支持 Java 语言 API。

    5.5K30

    ArkUI-X跨平台已至,何需其它!

    运行环境 DevEco Studio:4.0Release OpenHarmony SDK API10 开发板:润和DAYU200 自从写了一篇ArkUI-X跨平台的文章之后,好多人都说对这个项目十分关注...4.1、关于使用IDE的约束 DevEco Studio仅支持ArkUI-X源码开发和调试,各平台Native代码请使用对应平台的IDE编辑器进行开发和调试; ArkUI-X支持在Android/iOS...可通过DevEco Studio > File > Settings > Build, Execution, Deployment > Ohpm 查看ohpm home的安装路径,并配置到环境变量中(macOS...也在此活动中累计完成1.5W行代码提交,以及在2023年OpenHarmony创新赛中。...编译后的ArkTS代码、资源和平台胶水代码已生成到Android和iOS应用工程中,后续安装、运行和调试请使用Android Studio和Xcode, 9.1、ios上运行 我们来看一下在ios上如何运行

    92310

    Android Studio 4.0 稳定版发布了

    Android Studio 4.0(2020年5月) 更新啦,此版本包含了各种新功能和改进,还有一些废弃配置。...1、构建分析器 当将 Android Studio 4.0 与 Android Gradle 插件 4.0.0 及更高版本一起使用时,Build Analyzer 窗口可帮助你了解和诊断构建过程中的问题...在Android Studio 4.0中,已将 desugaring engine 扩展为能够对 Java 语言 API 的语法糖。...有关可用实时模板的完整列表,请从菜单栏中单击 File > Settings(或在macOS上为 Android Studio > Preferences ),然后导航 Editor > Live...现在,在 Android Studio C++ 代码编辑器中可用,clangd 和 clang-tidy 都是开源LLVM额外工具的一部分: clangd具有代码完成功能,在编辑器中编译错误消息以及定位导航

    5.7K20

    Android插件化基础3----Android的编译打包流程详解

    (一)、ProGurad简介 因为Java代码是非常容易反编码的,况且Android开发的应用程序是用Java代码写的,为了很好的保护Java源代码,我们需要对编译好的后的class文件进行混淆。...ProGuard是一个混淆代码的开源项目,它的主要作用是混淆代码,但是其实它主要有4个功能如下: 1 压缩(Shrink):检测并移除代码中无用的类、字段、方法和特性(Attribute) 2 优化...(二)、ProGurad的使用 现在大多数开发者都是用了Android Studio,只有很少的一部分才使用Eclipse,所以我两部分都说下 1、Android Studio中如何开启混淆 在build.gradle...:proguard-project.txt 把他注释去掉即可 在开启混淆中,Android Studio和eclipse中都有一个文件proguard-android.txt,这是混淆的一个默认文件,该默认文件为...2.2.2 内部类 内部类经常会被混淆,结果在调用的时候为空就崩溃了,最好的解决办法就是把这个内部类拿出来,单独成为一个类。

    2.4K22

    build.gradle文件介绍,gradle版本对应

    jcenter() } } 在repositories闭包中: jcenter():它是一个代码托管仓库,很多的Android开源项目都会选择将代码托管到jcenter上,声明了这行配置后...15表示兼容到API 15 既是android 4.0. targetSdkVersion:表示你在该目标版本上已经做过了充分的测试,系统将为你的应用开启一些最新的功能和特性。...<uses-sdk android:minSdkVersion="8" android:targetSdkVersion="18" /> 而在Android Studio中,即使在AndroidManifest.xml...release闭包中的具体内容: minifyEnabled:用于是否对项目的代码进行混淆。true代表开启,false代表关闭。 proguardFiles:指定混淆时使用的文件。...proguard-android.txt:在Android SDK 目录下的,里面是所有项目通用的混淆规则。

    86410

    android 视频录制 混淆打包 之native层 异常的解决

    proguard-rules 文件(android studio) 下做混淆设置解决的,但我不得不承认,这个是我迄今遇到最棘手的,直到 15:46 才正式解决,怎么说都 4 天了,百度上没有直接的解决信息...android自带的MediaRecorder类,但是这个类比较鸡肋,实话实说,用处不是很大,用来练习下还是可以的。...看源码,还是得这样的,下面我贴出我的查找路径,所有代码是 这个 视频录制 开源项目、javacpp 里面的: 首先打 log 跟踪到-> ?...推测,是系统的某些资源被混淆了。我们的混淆配置中有一句设置:-keepattributes 保护给定的可选属性,那么我们可以用它保护下项目的注释、资源文件、资源目录名、内部类等,例如这样: ?...,事实证明,当我添加到 InnerClasses 的时候,问题解决。 解决方法:   在混淆文件中添加 ?  保护下项目的注释、资源文件、资源目录名、内部类(主要的解决项)

    1.3K50

    Android Studio 4.0 重磅发布!Android 11 Bata 版来了!

    在 Android Studio 4.0 中,新的 Motion Editor 让这个 API 用起来更方便。它提供了用于创建、编辑和预览 MotionLayout 动画的强大界面。...在 Android Studio 4.0 中,CPU 记录现在与 Profiler 主时间轴分开显示,并按组分类以简化分析过程。你可以上下移动组,或者在组中拖放项目以定制界面。...是在 Android Gradle 插件 3.4.0 中引入的,可将 desugaring、缩减、混淆、优化和 dexing 合并为一个步骤,从而显著提高构建性能。...Android Studio 现在为你的 Kotlin 代码提供了 Android 专属的实时模板。例如,只需键入 Toast,然后按 Tab 键即可快速插入 Toast 的样板代码。...在 Android Studio 4.0 中,无论你的应用的 minSdkVersion 如何,都可以使用 desugaring 引擎来支持 Java 语言 API。

    3.2K20
    领券