Android studio 打包、混淆

Android Studio 混淆,多渠道打包,反编译 使用 混淆简单配置build.gradle的android节点下添加:buildTypes { release { minifyEnabled true proguardFiles 'proguard-rules.pro' } debug { minifyEnabled true 阅读详情

Android studio 打包apk

不多说直接上图:

第一步:

第二步:key store path (密钥存储器所在路径选择),如果之前创建过key store就直接选择已存在,并输入密码及别名、别名密码;

否则,点击创建,选择key store 将要保存的路径


填写file name,点击确定:


填写password ,confirm(确定密码),alias(别名),框内,随便填一项就可以了!点击OK!

如下图,点击next:

选择apk构建类型,一个是debug(测试),一个是release(发行),根据需求选择,最后finish:


等build.....

出现这个就说明成功了,可以去key store path下找到密钥!


Android studio 混淆:

找到要混淆的项目app:


这边可以使用上面创建的 key store,这边有个不懂得地方,

//签名
    signingConfigs{
        debug {
            storeFile file("/home/lippi/.android/debug.keystore")
        }
        release{
            //这样写就得把test.jk文件放在项目目录,如果是没有创建过的<span style="font-size: 13.3333px;"> key store</span>
            storeFile file("test.jks")
            storePassword "123456"
            keyAlias "test"
            keyPassword "123456"
        }
    }
    buildTypes {
        release {
            //是否混淆
            minifyEnabled true
            //前一部分代表系统默认的android程序的混淆文件,该文件已经包含了基本的混淆声明
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            //签名
            signingConfig signingConfigs.release
        }
    }

<span style="font-size:24px;color:#ff0000;">接下来找到proguard-rules.pro:</span>
<span style="font-size:18px;color:#333333;">根据需求添加如下代码:</span>


  #指定代码的压缩级别
    -optimizationpasses 5

    #包明不混合大小写
    -dontusemixedcaseclassnames

    #不去忽略非公共的库类
    -dontskipnonpubliclibraryclasses

     #优化  不优化输入的类文件
    -dontoptimize

     #预校验
    -dontpreverify

     #混淆时是否记录日志
    -verbose

     # 混淆时所采用的算法
    -optimizations !code/simplification/arithmetic,!field/*,!class/merging/*

    #保护注解
    -keepattributes *Annotation*

    # 保持哪些类不被混淆
    -keep public class * extends android.app.Fragment
    -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
    #如果有引用v4包可以添加下面这行
    -keep public class * extends android.support.v4.app.Fragment



    #忽略警告
    -ignorewarning

    ##记录生成的日志数据,gradle build时在本项目根目录输出##

    #apk 包内所有 class 的内部结构
    -dump class_files.txt
    #未混淆的类和成员
    -printseeds seeds.txt
    #列出从 apk 中删除的代码
    -printusage unused.txt
    #混淆前后的映射
    -printmapping mapping.txt

    ########记录生成的日志数据,gradle build时 在本项目根目录输出-end######


    #####混淆保护自己项目的部分代码以及引用的第三方jar包library#######

    #-libraryjars libs/umeng-analytics-v5.2.4.jar

    #三星应用市场需要添加:sdk-v1.0.0.jar,look-v1.0.1.jar
    #-libraryjars libs/sdk-v1.0.0.jar
    #-libraryjars libs/look-v1.0.1.jar

    #如果不想混淆 keep 掉
    -keep class com.lippi.recorder.iirfilterdesigner.** {*; }
    #友盟
  #  -keep class com.umeng.**{*;}
    #项目特殊处理代码

    #忽略警告
    -dontwarn com.lippi.recorder.utils**
    #保留一个完整的包
    -keep class com.lippi.recorder.utils.** {
        *;
     }

    -keep class  com.lippi.recorder.utils.AudioRecorder{*;}


    #如果引用了v4或者v7包
    -dontwarn android.support.**

    ####混淆保护自己项目的部分代码以及引用的第三方jar包library-end####

    -keep public class * extends android.view.View {
        public <init>(android.content.Context);
        public <init>(android.content.Context, android.util.AttributeSet);
        public <init>(android.content.Context, android.util.AttributeSet, int);
        public void set*(...);
    }

    #保持 native 方法不被混淆
    -keepclasseswithmembernames class * {
        native <methods>;
    }

    #保持自定义控件类不被混淆
    -keepclasseswithmembers class * {
        public <init>(android.content.Context, android.util.AttributeSet);
    }

    #保持自定义控件类不被混淆
    -keepclassmembers class * extends android.app.Activity {
       public void *(android.view.View);
    }

    #保持 Parcelable 不被混淆
    -keep class * implements android.os.Parcelable {
      public static final android.os.Parcelable$Creator *;
    }

    #保持 Serializable 不被混淆
    -keepnames class * implements java.io.Serializable

    #保持 Serializable 不被混淆并且enum 类也不被混淆
    -keepclassmembers class * implements java.io.Serializable {
        static final long serialVersionUID;
        private static final java.io.ObjectStreamField[] serialPersistentFields;
        !static !transient <fields>;
        !private <fields>;
        !private <methods>;
        private void writeObject(java.io.ObjectOutputStream);
        private void readObject(java.io.ObjectInputStream);
        java.lang.Object writeReplace();
        java.lang.Object readResolve();
    }

    #保持枚举 enum 类不被混淆 如果混淆报错,建议直接使用上面的 -keepclassmembers class * implements java.io.Serializable即可
    #-keepclassmembers enum * {
    #  public static **[] values();
    #  public static ** valueOf(java.lang.String);
    #}

    -keepclassmembers class * {
        public void *ButtonClicked(android.view.View);
    }

    #不混淆资源类
    -keepclassmembers class **.R$* {
        public static <fields>;
    }

    #避免混淆泛型 如果混淆报错建议关掉
    #–keepattributes Signature

    #移除log 测试了下没有用还是建议自己定义一个开关控制是否输出日志
    #-assumenosideeffects class android.util.Log {
    #    public static boolean isLoggable(java.lang.String, int);
    #    public static int v(...);
    #    public static int i(...);
    #    public static int w(...);
    #    public static int d(...);
    #    public static int e(...);
    #}

    #如果用用到Gson解析包的,直接添加下面这几行就能成功混淆,不然会报错。
    #gson
    #-libraryjars libs/gson-2.2.2.jar
   # -keepattributes Signature
    # Gson specific classes
   # -keep class sun.misc.Unsafe { *; }
    # Application classes that will be serialized/deserialized over Gson
   # -keep class com.google.gson.examples.android.model.** { *; }

最后点击这个:

检查是否混淆成功,自己学一下反编译,将刚才混淆后的apk反编译一下,如果是如下结果就说明反编译成功了!



Android Studio混淆打包忽略第三方jar包配置 写这篇博客的理由前段时间用Android Studioh的时候,碰到一些问题,网上找了很多资料,发现很多都是Copy Paste,找了许久没有找到有用的资料,然后在Stack Overflow中找到了部分答案。所以决定自己写一篇“有用的博客”。 启用混淆打包在Android Studio中只需要打开build.gradle文件,找到如下一段,把minifyEnabled 设置为 true,就 阅读详情

相关推荐

微信取证不求人:最新免费DAT解码工具使用指南(含闪退解决方案)

本文提供了一份详细的微信DAT文件免费解码工具使用指南。针对用户常见的图片无法查看问题,手把手教学如何安全获取并操作开源图形化工具,将加密的DAT文件一键还原为JPG/PNG图片。文章重点剖析了DAT文件的加密原理,并给出了详细的步骤解决工具运行中最常见的“程序闪退”等疑难杂症,帮助普通用户轻松完成微信取证。

m0n1o2p的博客 479

【Android】【APP发布】混淆

转载自:https://blog.youkuaiyun.com/guolipeng_network/article/details/74551968 前言 在使用Android Studio混淆打包时,该IDE自身集成了Java语言的ProGuard作为压缩,优化和混淆工具,配合Gradle构建工具使用很简单。只需要在工程应用目录的gradle文件中设置minifyEnabled为true即可。然后我们就...

天天向上 Up Up Up (*^▽^*) 871

SAP ERPsim生产拓展实验报告

ERP课的实验和实践,也是SAP竞赛玩的东西,除了界面不华丽外很像游戏而且是团队型的pvp大乱斗

m0_67262022的博客 2020

Android Studio打包APK

Android Studio打包APK

susu1083018911的博客 1万+

从原理到实践:详解双目散斑结构光的生成与优化

本文深入解析了双目散斑结构光的生成原理与优化实践,详细介绍了散斑结构光的抗干扰性、空间编码技术及其在三维视觉中的应用。通过对比不同生成方法和技术路线,提供了参数调优指南和工程实现细节,帮助开发者掌握高效、精准的散斑生成技术。

weixin_42521856的博客 591

5分钟搞定!用FunASR在本地快速部署达摩院Paraformer语音识别模型

本文提供了一份快速部署指南,教你如何在5分钟内利用FunASR工具包在本地电脑上启动达摩院Paraformer语音识别模型。Paraformer作为一款非自回归端到端模型,以其推理速度快、识别精度高的特点,结合FunASR的一键式模型加载和统一API,让开发者能轻松构建本地语音识别系统,极大降低了前沿AI技术的应用门槛。

q9w8e7r6t5的博客 604

Android Studio APP混淆实践

在Android APP开发完成后,为了防止APP被盗版、以及其他安全因素,大多数APP都会被要求做混淆编译,因此作为一项必要技能,就必须得掌握了,下面简单记录一下真个实践过程。    编辑混淆规则文件 如图所示,可以从Android Studio的工程目录上看出对应每个模块的混淆规则文件,每个模块使用不同的混淆规则,根据实际情况,进行相关的编辑。 这里举个Volley的混淆规则文件看看:

不悔的青春 2965

ubuntu20.4源码安装最新gcc(gcc V12.2)

Ubuntu20.4自带的gcc为V9.4.0的版本,老版本的gcc存在不支持新版本C语言规范,在配置、编译、安装应用软件或工具时,可能存在不能正确安装的问题。(比如:libpqxx-7.7.4在配置时要求c++17版本的支持,但gcc V9.4.0版本不支持c++17)。因此本文介绍ubuntu20.4的系统下载最新gcc12.2版本源码,并进行本地编译、安装。本节内容包括gcc12.2的必备库安装和gcc12.2安装两部分内容组成。

q544344318的博客 1万+

android studio 混淆打包jar的步骤

123

weixin_40987957的博客 1010

LLM评测框架Ragas:测试RAG的性能出现TimeoutError()的解决办法(Ragas+langchain+ollama)

无奈之下,自己找到了一个解决办法,在ragas支持的llm类库中加了一个如下的类,支持ollama、langchian_ollama使用ragas测试报错的问题。可以将如上的库放到你的ragas的系统库的llms目录下,然后修改__init__.py如下。最近用ragas测试rag的性能,发现老出现TimeoutError()的错误。这是一个临时的解决办法,具体等待官方给出最终的解决方案。后来发现官方也没有尽快支持的计划。然后就可以用如下代码进行一些验证。

Criss@陈磊 665

Qt 【window udp 高频采集丢包问题】

使用Asio + 无锁队列或者环形缓存区方案可以解决 qt udp 在window平台高速采集 (128k)丢包问题。

weixin_45397344的博客 177

android开发环境搭建以及交叉编译

JNI 是 Java Native Interface 的缩写,译为 Java 本地接口。它允许 Java 代码和其他语言编写的代码进行交互。在android 中提供 JNI 的方式,让 Java 程序可以调用 C/C++语言程序。android 中很多 Java 类都具有 native 接口,这些接口由本地实现,然后注册到系统中。在android系统中实现JNI库需要连接.so共享库,如:lib.so。

KD9999的博客 3022

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

Android Studio混淆打包

混淆背景Android Studio中的项目可以用compile的形式引入GitHub上的开源项目,可以引用module,而不一定都要用libs文件夹中添加jar包的形式。在最终realease打包时,混淆的设置是比较重要的,否则会导致生成的包有很多功能不能正常使用。注意,混淆打包后的apk文件大小会比不使用混淆要小。设置混淆在app根目录下设置build.gradle和混淆文件,然后把混淆选项写入

HardWorkingAnt的博客 1043

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

android studio混淆后打包失败,Android Studio混淆打包

前两周应业务需要研究了一下混淆打包和sdk混淆技术。在此记录下心得。1.apk混淆打包如果要对apk进行混淆,你要先告知gradle这个app需要混淆,并告知其混淆规则。告知gradle需要混淆的代码在Project/app/build.gradle中把minifyEnabled设置为true,表示说打包时需要执行混淆操作。如下代码:buildTypes {release {// 混淆minify...

weixin_29638241的博客 755

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

android jar 打包混淆,如何使用Android Studio打包混淆的Jar

使用AS打包混淆Jar包,百度一下,一片一片的,可是不少都是零零散散的写得不是很详细或是直接拷贝,按照他们的教程测试总不是很顺利,因此这里我就把我我的学习AS打包混淆Jar的成果总结出来,但愿对你们有帮助。我的以为写得仍是比较详细的html使用gradle混淆打包Jar使用AS开发项目,引入第三方库是很是方便的,咱们只须要在build.gradle中配置一行代码就能够轻松引入咱们须要的开发库。那么...

weixin_42522389的博客 719

Android Studio 混淆打包

随着Google不对ADT的维护,Android Studio 貌似即将成为Android开发的主流开发工具了,早点熟悉使用必然对今后的开发有着极大的帮助。 使用Android Studio 混淆打包 在开发工具的左边: Gradle Scripts 下面有个build.gradle中。 buildTypes { release { minifyE

myliuyx的专栏 3184

android studio混淆打包

android studio混淆打包

u013251909的博客 439

android studio 签名,打包,混淆,多渠道打包

在android studio 中进行实现对项目的,签名,混淆,多渠道打包

shuang__zi的专栏 4319

Android studio3.1.3 打包jar,混淆

最近公司需要将数据进行打包提供给用户,需要我们提供数据解析的jar给用户,为了防止数据格式的泄露,需要进行混淆。这里记录一下封装jar并混淆的过程。 1.创建module 之后创建了几个需要演示混淆的类。 2.打包配置 在Module的gradle里面,添加如下代码,跟dependencies平级; task makeJar(type: Copy) { //删除存在的 ...

z493608601的博客 2574

Android Studio android APP混淆打包

随着Google不对ADT的维护,Android Studio 貌似即将成为Android开发的主流开发工具了,早点熟悉使用必然对今后的开发有着极大的帮助。 使用Android Studio 混淆打包 在开发工具的左边: Gradle Scripts 下面有个build.gradle中。 [cpp] view plain copy

芝麻软件工作室的专栏 1438

Android Studio 打包混淆

Android Studio默认关闭代码混淆开关,在build.gradle文件中,如下所示的minifyEnabled 开关,因此如果需要混淆代码,需将false改为true,然后在文件proguard-rules.pro添加具体混淆规则。build.gradle文件的buildTypes部分 android { compileSdkVersion 27 defaultConfi...

zhuxingchong的博客 498

Android studio 代码混淆及打包apk

Android Studio相关博客: Android Studio(一):介绍、安装、配置 Android Studio(二):快捷键设置、插件安装 Android Studio(三):设置Android Studio编码 Android Studio(四):Android Studio集成Genymotion Android Studio(五):修改Andro

wf_fln的博客 2325

android app 混淆 打包 错误日志追踪,Android studio混淆打包日志 混淆日志 查看

Android studio混淆打包日志 混淆日志 查看Android studio混淆打包日志 混淆日志 查看一 打混淆包,带正式签名1 编辑proguard-rules.txt文件,配置好不能混淆的类或方法,否则会报错。a、需要反射的代码b、系统接口c、Jni接口d、需要序列号和反序列化的代码(即实现Serializable、Parcelable接口的JavaBean)e、与服务端进行元数据...

weixin_39806065的博客 796

关于Android Studio打包混淆以及上传mapping文件

打包 Android studio的打包很简单    然后如果已经有keystore的一路next下去,如果没有的可能需要先创建keystore,最后我们就会得到一个apk文件 混淆 现在网上关于反编译的博客很多了,我在此就不多做介绍了,放上个传送门传送门 那么我们已经知道了反编译是如此的简单,我们总不希望自己辛苦写的代码被如此轻易的反编译走,而且这样有可能对公

zuoer8676的专栏 958

android lib工程生成jar包 混淆,Android studio打包生成Jar包并混淆

开发过程中往往会引用到第三方的jar包或者library或者so文件,那么怎样将自己的一些文件打成jar包供别人使用或者自己使用呢,还有那些文件中的jar中可能会涉及到一些重要的接口和方法,又怎样混淆呢?今天小冷总结一下如何将library打包成jar包并做混淆处理准备好自己将要打包的library图一中的library是我即将打包的library里面含有两个工具类文件图一在mylibrary.g...

weixin_39918747的博客 406
上一篇: Android studio小技巧之xml与Java类快速跳转
下一篇: Android view中的requestLayout和invalidate方法
kill_bugs
博客等级 码龄12年 12粉丝 39原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值