AndroidStudio生成自定义的混淆jar包(同时将assets目录打入jar包)(二)(by 星空武哥)

Android APK加固----混淆 加密 1、反编译工具 (1)apktool 主要用于资源文件的获取 java -jar apktool_2.4.0.jar d app-debug.apk -o dir 在反编译之后,生成一个文件夹,文件夹中assets、res等等资源文件。 (2)dex2jar 将apk中的dex文件编译成jar文件 d2j-dex2jar.bat app-debug.apk -o app-debug.j... 阅读详情

分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow

也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!

               

转载请标注原文地址:http://blog.csdn.net/lsyz0021/article/details/53107595

    在以前曾经写过两篇文章,关于是生成jar包和引用jar的文章,建议先看这两篇文章。

《Android Studio生成自定义的jar包》:http://blog.csdn.net/lsyz0021/article/details/52162414

《Android Studio如何引用so、arr、jar包》:http://blog.csdn.net/lsyz0021/article/details/52976439


   Android Studio生成自定义jar包(同时将assets目录打入jar包)(一)
    Android Studio生成自定义混淆jar包(同时将assets目录打入jar包)(二)


    今天我就给大家交给大家studio如何生成带混淆的jar包,其实和上一篇文章差不多,只不过是多了一些混淆文件。首先我们先新建一个module(我把它新建成了一个library)。在用AndroidStudio生成混淆jar的时候也百度过很多文章,但是大多都没有用。



为了一会给大家演示混淆后的效果,这里创建了几个文件 MainActivity、UserBean、LogUtil详细见demo



然后再在module的gradle中配置如下

def SDK_BASENAME = "mylibs";def SDK_VERSION = "_v1.0";def sdkDestinationPath = "build/outputs/jar/";def zipFile = file('build/intermediates/bundles/release/classes.jar')task deleteBuild(type: Delete) {    delete sdkDestinationPath + SDK_BASENAME + SDK_VERSION + ".jar"}task makeJar(type: Jar) {    from zipTree(zipFile)    from fileTree(dir: 'src/main', includes: ['assets/**']) // 打包assets目录下的所有文件    baseName = SDK_BASENAME + SDK_VERSION    destinationDir = file(sdkDestinationPath)}makeJar.dependsOn(deleteBuild, build)

    上面的配置具体我就不讲解他们是什么意思了。

     因为我们是自己手动混淆了,所以要指定混淆规则,然后打开module的proguard-rules.pro文件,将AndroidStudio默认的混淆文件复制、粘贴到proguard-rules.pro中。




我的proguard-rules.pro文件



全部proguard-rules.pro配置如下

###########################以下是AndroidStudio自带的混淆配置协议################################ 表示混淆时不使用大小写混合类名-dontusemixedcaseclassnames# 表示不跳过library中的非public的类-dontskipnonpubliclibraryclasses# 打印混淆的详细信息-verbose# Optimization is turned off by default. Dex does not like code run# through the ProGuard optimize and preverify steps (and performs some# of these optimizations on its own).-dontoptimize# 表示不进行校验,这个校验作用 在java平台上的-dontpreverify# Note that if you want to enable optimization, you cannot just# include optimization flags in your own project configuration file;# instead you will need to point to the# "proguard-android-optimize.txt" file instead of this one from your# project.properties file.#使用注解需要添加-keepattributes *Annotation*-keep public class com.google.vending.licensing.ILicensingService-keep public class com.android.vending.licensing.ILicensingService# For native methods, see http://proguard.sourceforge.net/manual/examples.html#native#指定不混淆所有的JNI方法-keepclasseswithmembernames class * {    native <methods>;}# keep setters in Views so that animations can still work.# see http://proguard.sourceforge.net/manual/examples.html#beans#所有View的子类及其子类的get、set方法都不进行混淆-keepclassmembers public class * extends android.view.View {   void set*(***);   *** get*();}# We want to keep methods in Activity that could be used in the XML attribute onClick# 不混淆Activity中参数类型为View的所有方法-keepclassmembers class * extends android.app.Activity {   public void *(android.view.View);}# For enumeration classes, see http://proguard.sourceforge.net/manual/examples.html#enumerations# 不混淆Enum类型的指定方法-keepclassmembers enum * {    public static **[] values();    public static ** valueOf(java.lang.String);}# 不混淆Parcelable和它的子类,还有Creator成员变量-keepclassmembers class * implements android.os.Parcelable public static final android.os.Parcelable$Creator CREATOR;}# 不混淆R类里及其所有内部static类中的所有static变量字段-keepclassmembers class **.R$* {    public static <fields>;}# The support library contains references to newer platform versions.# Don't warn about those in case this app is linking against an older# platform version.  We know about them, and they are safe.# 不提示兼容库的错误警告-dontwarn android.support.**# Understand the @Keep support annotation.-keep class android.support.annotation.Keep-keep @android.support.annotation.Keep class * {*;}-keepclasseswithmembers class * {    @android.support.annotation.Keep <methods>;}-keepclasseswithmembers class * {    @android.support.annotation.Keep <fields>;}-keepclasseswithmembers class * {    @android.support.annotation.Keep <init>(...);}#################################以下是自己添加的混淆协议####################################下面代码中的路径配置,你要修改成与你相对应的路径#引入依赖包rt.jar(jdk路径)(注意:如在makeJar的时候提示指定了两次,可以将其注释掉)-libraryjars 'C:\Android_Develop_Tools\Java\jdk1.8.0_101\jre\lib\rt.jar'#引入依赖包android.jar(android SDK路径)(注意:如在makeJar的时候提示指定了两次,可以将其注释掉)#-libraryjars 'C:\Android_Develop_Tools\sdk\platforms\android-23\android.jar'#如果用到Appcompat包,需要引入(注意:如在makeJar的时候提示指定了两次,可以将其注释掉)#-libraryjars 'D:\AndroidStudioProjects\MyApplication\mylibrary\build\intermediates\exploded-aar\com.android.support\appcompat-v7\23.4.0\jars\classes.jar'#-libraryjars 'D:\AndroidStudioProjects\MyApplication\mylibrary\build\intermediates\exploded-aar\com.android.support\support-v4\23.4.0\jars\classes.jar'#忽略警告-ignorewarnings#保证是独立的jar,没有任何项目引用,如果不写就会认为我们所有的代码是无用的,从而把所有的代码压缩掉,导出一个空的jar#-dontshrink#保护泛型-keepattributes Signature-keep class com.lcw.mylibrary.LogUtil{    public *;}

最后的我是禁止混淆LogUtil工具类,以便形成对比。根据混淆配置是AndroidStudio默认不混淆MainActivity,我们在也不混淆LogUtil。


然后你就在Terminal中输入

gradlew makeJar

或者是双击 makeJar





我们将生成的jar包解压可以看到MainActivity和LogUtil没有被混淆,这就说明成功了。




注意:有可能你在执行命令的时候遇到下面类似的错误提示classes.jar is specified twice,说我们的classes.jar  指定了两次


解决方式:在proguard-rules.pro中将其注释掉即可



想及时获取更多的文章,请关注我的微信订阅号



           

给我老师的人工智能教程打call!http://blog.csdn.net/jiangjunshow
这里写图片描述
Rancher操作手册(v2.7.5-rc1) 选择需要创建ingress的命名空间 ==》填写ingress名称 ==》在“规则”一栏,选择“Prefix” ==》输入访问路径 ==》选择访问路径对应的service ==》如果需要继续添加访问路径,点击“添加路径”,重复前面的步骤即可。选择需要创建Deployment的命名空间 ==》填写Deployment名称 ==》选择通用 ==》填写容器名称 ==》填写镜像 ==》选择镜像的拉取密文 ==》点击添加端口或Service。点击左侧菜单栏的集群里的“项目/命名空间”,点击右下角的“创建命名空间”。 阅读详情

相关推荐

uniapp - H5人脸识别认证与活体检测功能(纯前端免费方案+微信sdk人脸识别)完整源码,微信公众号网页/h5端人脸识别功能人脸核身(微信方案提供后端spring boot+thinkphp源码

uniapp实现人脸认证,uniAPP h5手机拍照+人脸识别,免费人脸识别插件,前端人脸识别解决方案,uniapp H5人脸识别带前后摄像头,人脸识别在H5页面进行采集,微信公众号H5人脸核身,H5端人脸识别功能实现,免费h5人脸识别插件方案,微信公众号H5网页实现人脸识别,uniapp人脸监测,uniapp人脸生物监测,使用uniapp开发H5人脸采集功能/人脸识别功能,uniapp项目—h5端人脸采集功能实现,uniapp vue3人脸核身,H5活体检测认证,人脸认证张嘴摇摇头指引动作,人脸核身 微信

🏆 前端领域优质创作者 3737

android studio将assetsjar文件的方法

android studio将assetsjar文件的方法在build.gradle中配置如下代码 def SDK_BASENAME = "sdk"; def SDK_VERSION = "_V1.0"; def sdkDestinationPath = "build"; def zipFile = file('build/intermediates/bundl

WoAiLuoWenXin的专栏 2131

飞时达日照分析软件-日照参数设置

主要是进行日照分析前的设置,括日照分析的地点设置、分析标准设置、有效太阳高度角设置、分析后日照颜色设置、阴影颜色设置

android studio将assets资源 打出jar

在项目工程中新建一个mylibary安卓依赖库,在依赖库中build.gradle中添加 def SDK_BASENAME = “TestSdk”; def SDK_VERSION = “_V1.0”; def sdkDestinationPath = “build”; def zipFile = file(‘build/intermediates/bundles/release/classes...

BCXS1的博客 484

AndroidStudio-3.2.1(十八)反编译与混淆

使用androidstuio将android项目打成apk后,可以使用解压软件直接打开。但是这里的文件除了assets文件夹和图片资源外,都是编译后的文件了,无法直接查看布局(xml)和代码(java)文件,打开是字节流。因此需要使用反编译工具apktool。 apktool的使用 1、到官网上下载两个文件apktool.bat和apktool.jar(下载后去掉版本号),然后拷贝到C:\Wi...

SHENCHEN1987的博客 1305

Android 自定义混淆规则

Android 自定义混淆规则。修改混淆后aar中的字母

简单记录工作和学习 1556

Android Studio生成自定义jar同时assets目录打入jar)(一)(by 星空

Android Studio生成自定义jar同时assets目录打入jar)(一)(by 星空

qq_44934581的博客 248

Android Studio下使用gradle 导出jar,并打assets目录,以及混淆代码

使用android studio进行jar导出,我们需要用 gradle来生成jar。 首先 需要设置module应用的gradle插件为 library: apply plugin: 'com.android.library' 在这样,当程序执行build以后,会在module应用的build/intermediates/bundles/release下生成应用jar,这个j

zhouzunlai的博客 2906

Android代码混淆(ProGuard),资源混淆(微信 AndResGuard),SO混淆(obfuscator-llvm)

&gt; 代码混淆  Android编译的大致流程如下:Java Code(.java) -&gt; Java Bytecode(.class) -&gt; Dalvik Bytecode(classes.dex)。  第三方的软件可以用来混淆我们的Android应用,常见的有:Proguard;DashO;Dexguard;DexProtector;ApkProtect;Shield4j;Str...

ShareUs的专栏 3264

安卓项目混淆详解

一、Proguard是一个非常高效和方便的混淆工具,使用了这个工具混淆后,apk体积显著的减少了,而且反编译难度也加大了。官网的介绍是:ProGuard是一个免费的Java类文件缩小,优化,混淆和预验证的工具。它检测和删除未使用的类,字段,方法和属性;优化字节码并删除未使用的指令;它使用短的无意义的名称重命名剩余的类,字段和方法。所得到的应用程序和库更小,更快,并且更好地针对逆向工程进行优化。而

奋斗的小菜鸡的博客 852

Andriod资源混淆的一次体验

通常情况下,Android中的混淆有代码混淆和资源混淆。 代码混淆比较简单,只要打开 minifyEnabled开关,并且需要时指定一些混淆规则就可以了; 相比之下,资源混淆没有那么简单,因为不能简单的修改res文件夹下的资源文件文件名,因为在开发时每一个资源文件都对应了R文件中的id, 打后会生成resource.asrc文件,每一个资源文件都在resource.asrc文件中有对应记录...

qq_23992393的博客 1319

APK瘦身,混淆 反编译

网址1 作者:张明云 链接:http://www.jianshu.com/p/bd90dee57ad0 APK为什么要瘦身? APK在安装和更新之前都需要经过网络将其下载到手机,如果APK越大消耗的流量就会越多,特别是对于使用移动网络的用户来讲,消耗流量越多就代表需要花更多的钱去购买流量。同时一些第三方应用商城也会对上传的APK大小有限制,所以为了能够让产品能够更受商城

FlyPig_Vip的博客 926

Unity_Obfuscator Pro代码混淆工具_学习日志

Unity_Obfuscator Pro代码混淆工具_学习日志

学不会shader 3882

Android Studio中之打JAR初实践

Android Studio中对于library类型的Moudle,默认打出来的是AAR, 但有时候我们的SDK还需要共享给一些其他eclipse的项目使用(或者libs下也能放jar),这样我们就需要输出JAR, 首先 需要设置module应用的gradle插件为 library 代码长这样: apply plugin: 'com.android.library' 这样,bu

Losileeya 3216

Android进阶:打jar获取assets中的资源 解决selector XML文件不能解析的问题

大家都知道Android项目中的res目录中的资源eclipse插件会在gen中自动生成相应的id应用,这样就统一了资源管理那么这种自动生成的id就是写死的东西了 这就导致了不容易做修改  项目中需要将现有的组件打成jar 这样打后类文件当然是肯定没问题 但是资源文件就不行了。这个地方的id不能在新建的项目中被应用了所以资源文件不能被打到res目录中,这种情况下就必须要打到assets目录中这样就会出现问题了 一般情况下我们应用资源文件是通过int型的id来引用的, 这里就不能直接应用了 我们需要手动读

1万+
上一篇: Android 非静态内部类导致的内存泄露(非static内部类)
下一篇: Android图片压缩终极解决方案,是的,终极,终极,终极
这个1500的
博客等级 码龄8年 10粉丝 90原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值