http://blog.csdn.net/vurtne_ye/article/details/35599491

1)导出jar包

  如何在eclipse上Android工程中导出jar包?google,baidu.bing

  2)混淆jar包,打乱代码

  android的jar包跟普通的Java的jar包不一样,我们不想打乱一些activity或者server等跟系统打交道的代码,这是因为如果把这些也混淆了,那你还需要搞清楚混淆后这些activity变成了什么名字,然后告诉使用你这个jar包的人androidmanifest.xml中增加这些打乱了名字的activity。

  混淆jar包用到的工具是proguard,可以在android SDK里面找到,如我的是在...\adt-bundle-windows-x86-20130219\sdk\tools\proguard。

  运行sdk\tools\proguard\bin\proguardgui.bat,运行界面如下,如果点击next,会发现这些配置很难配(全英文,又很杂)。

  其实这里直接导入一个cfg文件就可以了,单击下图右下角的Load Configuration,然后选择配置文件。

  配置文件又要怎么写?找到android工程里面的proguard.cfg文件,这个文件是用来混淆apk代码的配置文件,我们现在是要混淆jar包的代码,当然不能直接用。看下面是proguard.cfg的配置,配置会保留activity和server等一些类。这些配置都是不用改的,可以直接拿来用。

-optimizationpasses5
-dontusemixedcaseclassnames
-dontskipnonpubliclibraryclasses
-dontpreverify
-verbose
-optimizations !code/simplification/arithmetic,!field/*,!class/merging/*
 
-keeppublic class *extends android.app.Activity
-keeppublic class *extends android.app.Application
-keeppublic class *extends android.app.Service
-keeppublic class *extends android.content.BroadcastReceiver
-keeppublic class *extends android.content.ContentProvider
-keeppublic class *extends android.app.backup.BackupAgentHelper
-keeppublic class *extends android.preference.Preference
-keeppublic class com.android.vending.licensing.ILicensingService
 
-keepclasseswithmembernamesclass * {
    native <methods>;
}
 
-keepclasseswithmembersclass * {
    public <init>(android.content.Context, android.util.AttributeSet);
}
 
-keepclasseswithmembersclass * {
    public <init>(android.content.Context, android.util.AttributeSet, int);
}
 
-keepclassmembersclass *extends android.app.Activity {
   public void *(android.view.View);
}
 
-keepclassmembersenum * {
    public static **[] values();
    public static ** valueOf(java.lang.String);
}
 
-keepclass *implements android.os.Parcelable {
  public static final android.os.Parcelable$Creator *;
}

  将上面的配置增加几行改成如下,并重新命名文件为:test.pro

-optimizations !code/simplification/arithmetic,!field/*,!class/merging/*
 
//...begin
#混淆后的导出jar包的位置和jar包名
-outjars'E:\test_after.jar'
 
#原始jar包的位置和jar包名
-injars'E:\test.jar'
 
#jar包依赖的其他库的位置和名称
-libraryjars'E:\workspace\beautytilepuzzle\libs\alipay_msp.jar'
-libraryjars'E:\workspace\beautytilepuzzle\libs\android-support-v4.jar'
-libraryjars'E:\android\adt-bundle-windows-x86-20130219\sdk\platforms\android-10\android.jar'
 
#下面的Test类将不会被混淆,这样的类是需要被jar包使用者直接调用的
-keeppublic class com.example.Test {
    public <fields>;
    public <methods>;
}
//...end
 
-keeppublic class *extends android.app.Activity

  现在Load Configuration里选择上面test.pro,一直next,最后混淆后的jar包就是E://test_after.jar。

用winrar打开jar包,会发现除了Test.class,一些继承自activity等的class外,其他的类都被abcdefg这样的字母给混淆了。

提醒:如果你把上面配置直接拷贝过去,是会失败的,请将文件里的#号后的中文注释去掉,或者改成英文的。

混淆Android JAR包的方法的更多相关文章

  1. [Android]proguard重新编译和如何不混淆第三方jar包

    转载自:http://glblong.blog.51cto.com/3058613/1536516 一.ant安装.环境变量配置及验证 (一)安装ant 到官方主页http://ant.apache. ...

  2. Android jar包混淆

    具体可参考http://proguard.sourceforge.net/manual/examples.html#library 1.找到android的adt目录下的 D:\soft\adt-bu ...

  3. 【转】Android中引入第三方Jar包的方法(java.lang.NoClassDefFoundError解决办法)

    原文网址:http://www.blogjava.net/anchor110/articles/355699.html 1.在工程下新建lib文件夹,将需要的第三方包拷贝进来.2.将引用的第三方包,添 ...

  4. 导入外部jar包的方法

    注:使用的编译平台为eclipse <算法>一书中需要引入外部jar包(algs4.jar),因此特地去学了下导入外部jar包的方法.步骤如下: 1.先将algs4.jar拷到j如下路径: ...

  5. 打jar包的方法

    打jar包的方法是什么? java打jar包,引用其他.jar文件 java项目打jar包 将java源码打成jar包 maven打jar例子 打war包的方法是什么? Eclipse->项目右 ...

  6. maven导入外部jar包的方法

    maven的导入外部jar包的方法(前提还有外部jar包) 1.问题: 在maven添加依赖包时,添加不成功,可以选择通过外部命令导入到仓库里. 2.命令:(在Dos命令行) mvn install: ...

  7. jsp的服务器响应,out.println 与response.setIntHeader的报错解决方案,附:导入jar包的方法

    在九大内置对象中,笔者认为用的最多的就是out.println 与response.setIntHeader,今天刚写了一个服务器响应的代码,也总是这两个报错.具体请看图. 先来说说response. ...

  8. 双击jar包运行方法

    方案一 在jar包同级,写个bat文件,如下 java -jar Xxx.jar pause 方案二 右击jar文件 ->打开方式->选择安装的jre/bin/javaw.exe. 双击依 ...

  9. AndroidStudio 3.0 生成jar包的方法

    AndroidStudio3.0生成jar包的方法,一下将逐步演示流程,及步骤讲解 1:新建样例工程,目录如下 2:鼠标右键点击app->New->选择Module 选择AndroidLi ...

随机推荐

  1. Eclipse 工作空间(Workspace)

    Eclipse 工作空间(Workspace) eclipse 工作空间包含以下资源: 项目 文件 文件夹 项目启动时一般可以设置工作空间,你可以将其设置为默认工作空间,下次启动后无需再配置: 工作空 ...

  2. 有向图 加最少的边 成为强连通分量的证明 poj 1236 hdu 2767

    poj 1236: 题目大意:给出一个有向图, 任务一: 求最少的点,使得从这些点出发可以遍历整张图  任务二: 求最少加多少边 使整个图变成一个强连通分量. 首先任务一很好做, 只要缩点 之后 求 ...

  3. android中延迟执行某个任务

    android App开发在某些情况下需要有延时功能,比如说App首页显示定格3秒,然后自动跳到登录页的情况,这就好比是一个预加载,但是这个预加载可能瞬间就完成了,撑不到3秒钟,这是就要求你做延时处理 ...

  4. TensorFlow实战:Chapter-4(CNN-2-经典卷积神经网络(AlexNet、VGGNet))

    转载自:http://blog.csdn.net/u011974639/article/details/76146822 项目:https://www.cs.toronto.edu/~frossard ...

  5. 七个迹象说明你可能受到APT 攻击

    watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaXF1c2hp/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/d ...

  6. Windows10环境vagrant+VirtualBox虚拟机无法创建私有网络的解决方案。

    报错信息 ==> default: Clearing any previously set network interfaces...There was an error while execu ...

  7. idea 全部报错找不到包

    解决报错方法如下:

  8. PHP实现对短信验证码发送次数的限制(防机刷验证码)

    PHP实现对短信验证码发送限制(防止机刷验证码) 对用户获取短信验证码的手机号.ip.和浏览器(使用唯一标识)进行限制.本文介绍的方法是对用户每天只能通过同一浏览器或同一ip地址获取验证码10次或者同 ...

  9. js 日期加一天

    经常在js 重要做时间加一的处理记录一下 ps:时间格式为:'2017-03-30' 一:源码: //时间加一天 function addDate(date, days) { if (days == ...

  10. 【BZOJ2325】[ZJOI2011]道馆之战 线段树+树链剖分

    [BZOJ2325][ZJOI2011]道馆之战 Description 口袋妖怪(又名神奇宝贝或宠物小精灵)红/蓝/绿宝石中的水系道馆需要经过三个冰地才能到达馆主的面前,冰地中的每一个冰块都只能经过 ...