对于一些安全性要求比较高的应用,需要使用代码混淆,android studio很好的提供了这个功能,使我们能够方便的进行代码混淆;
1,在build.grandle添加,其中规则写在proguard-rules.pro中,也可以自定义一个文件,将其代替,比如eclipse常用的 proguard-project.txt
buildTypes { release { signingConfig signingConfigs.release minifyEnabled true proguardFiles getDefaultProguardFile(‘proguard-android.txt‘), ‘proguard-rules.pro‘ } }
2,在proguard-rules.pro中加入以下代码,基本可以涵盖所有
-optimizationpasses 5 # 指定代码的压缩级别 -dontusemixedcaseclassnames # 是否使用大小写混合 -dontpreverify # 混淆时是否做预校验 -verbose # 混淆时是否记录日志 -optimizations !code/simplification/arithmetic,!field/*,!class/merging/* # 混淆时所采用的算法 -keep public class * extends android.app.Activity # 保持哪些类不被混淆 -keep public class * extends android.app.Application # 保持哪些类不被混淆 -keep public class * extends android.app.Service # 保持哪些类不被混淆 -keep public class * extends android.content.BroadcastReceiver # 保持哪些类不被混淆 -keep public class * extends android.content.ContentProvider # 保持哪些类不被混淆 -keep public class * extends android.app.backup.BackupAgentHelper # 保持哪些类不被混淆 -keep public class * extends android.preference.Preference # 保持哪些类不被混淆 -keep public class com.android.vending.licensing.ILicensingService # 保持哪些类不被混淆 -keepclasseswithmembernames class * { # 保持 native 方法不被混淆 native <methods>; } -keepclasseswithmembers class * { # 保持自定义控件类不被混淆 public <init>(android.content.Context, android.util.AttributeSet); } -keepclasseswithmembers class * {# 保持自定义控件类不被混淆 public <init>(android.content.Context, android.util.AttributeSet, int); } -keepclassmembers class * extends android.app.Activity { # 保持自定义控件类不被混淆 public void *(android.view.View); } -keepclassmembers enum * { # 保持枚举 enum 类不被混淆 public static **[] values(); public static ** valueOf(java.lang.String); } -keep class * implements android.os.Parcelable { # 保持 Parcelable 不被混淆 public static final android.os.Parcelable$Creator *; }
相关推荐
Android Studio是一款广泛使用的Android应用程序开发集成环境,而代码混淆是其中的一个重要环节,尤其是在发布应用时,为了提高代码的安全性和减少体积,通常会使用到Proguard工具。AndroidProguard插件则是为...
本文将详细介绍如何在Android Studio中将多个Module混淆并打包成一个Jar文件。 1. **创建Module** 首先,确保你已经拥有多个独立的Android Studio Module。每个Module代表一个独立的功能或库。在Android Studio中,...
在Android开发中,为了保护应用的安全性和优化APK的大小,开发者通常会使用混淆技术。Android Studio通过集成Proguard工具来实现这一目标。Proguard是一个强大的工具,它能执行四个关键操作:Shrinking(压缩)、...
启用`shrinkResources`后,Gradle会在运行ProGuard(或R8)代码混淆时,一起删除未使用的资源。 三、使用步骤 1. 打开Android Studio项目。 2. 修改`build.gradle`文件,确保`minifyEnabled`和`shrinkResources`...
标题中提到的知识点有:《Android Studio使用指南》和版本号(v0.1),说明这是一份为Android Studio的初期用户提供入门使用的指南文档,主要目的是帮助用户快速掌握如何使用Android Studio进行Android应用的开发。...
本文将深入探讨如何使用OLLVM对Android SO文件进行混淆加固。 首先,我们需要了解OLLVM的工作原理。OLLVM基于LLVM(Low Level Virtual Machine),一个开源的编译器基础设施项目,它提供了编译器前端、中间表示(IR...
### Android Studio 使用手册知识点详解 #### 一、Android Studio 简介 - **定义**:Android Studio 是一款由 Google 开发的、基于 IntelliJ IDEA 的 Android 集成开发环境(IDE)。它专为 Android 应用程序的开发与...
在Android开发过程中,为了保护应用源代码的安全,开发者通常会使用代码混淆技术。混淆可以将原始的、可读性强的类名、方法名和变量名转换为无意义的短名称,使得逆向工程变得困难。Android Studio作为Android开发的...
1. **ProGuard**: ProGuard是Android Studio内置的代码混淆工具,它支持优化、 Shrinking(减少代码大小)、Obfuscation(混淆)和Preverification(预验证)等功能。通过配置ProGuard规则,开发者可以自定义混淆...
在Android开发过程中,为了保护应用的安全性和防止反编译,开发者常常会进行代码混淆这一重要步骤。本文将深入探讨Android代码混淆的前因后果、原理以及如何实施。 首先,我们来理解什么是代码混淆。代码混淆是将源...
- 支持ProGuard和应用签名:支持代码混淆工具ProGuard以及应用签名功能,这有助于保护应用代码并确保其安全性。 - 模板向导和布局编辑器:提供了模板向导用于创建常见的Android设计和组件,同时具有丰富的布局编辑器...
本篇文章将深入探讨Android代码混淆配置的细节,帮助开发者理解如何有效地使用这一技术。 混淆是通过重命名类、方法和变量,使得原始代码变得难以理解的过程。在Android中,我们通常使用ProGuard工具进行代码混淆,...
1. **基于IntelliJ IDEA**:Android Studio基于JetBrains的IntelliJ IDEA,这意味着它拥有强大的代码编辑器,支持智能代码补全、语法高亮和重构等功能,极大地提高了开发效率。 2. **Gradle集成**:Android Studio...
总结,Android Studio的Release模式打包生成APK涉及多个环节,包括创建签名、配置Build Variant、代码混淆、APK优化以及发布测试。每个步骤都至关重要,确保应用的安全性、性能和用户体验。熟练掌握这些流程,将有助...
以及ProGuard,一个代码混淆工具,可以减少APK大小并保护代码安全。 此外,书籍可能还会讨论版本控制工具,如Git,以及如何将其与Android Studio集成,进行团队协作。还有可能包含关于Android Studio的插件使用,...
4. 支持ProGuard和应用签名:ProGuard可以对Android应用进行代码混淆和压缩,增加逆向工程的难度。应用签名则是在发布应用前进行的一种加密操作,用于确保应用的完整性以及验证应用来源。 5. 基于模板的向导来创建...
在Android开发领域,Android Studio和Eclipse都是广泛使用的集成开发环境(IDE)。它们各自有其优点,但在某些情况下,开发者可能需要将项目打包成可移植的Java类库,即jar包。本文将深入探讨如何在Android Studio和...
3. 使用Gradle插件:Android Studio提供了`apply plugin: 'com.android.application'`,这使得我们可以使用Gradle的任务来处理多渠道打包。在`buildTypes`或`productFlavors`下定义不同的渠道: ```groovy android ...