混淆Android JAR包的方法

混淆Android JAR包的方法 - vurtne_ye的专栏 - 博客频道 - CSDN.NET

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这样的字母给混淆了。

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

时间: 2024-08-08 19:13:44

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

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

原文网址:http://www.blogjava.net/anchor110/articles/355699.html 1.在工程下新建lib文件夹,将需要的第三方包拷贝进来.2.将引用的第三方包,添加进工作的build path.3.(关键的一步)将lib设为源文件夹.如果不设置,则程序编译可以通过,但运行的时候,会报: java.lang.NoClassDefFoundError # re: Android中引入第三方Jar包的方法(java.lang.NoClassDefFoundErro

Android 混淆打包不混淆第三方jar包

项目因为要发布,所以要混淆打包. 混淆打包流程: 1.在proguard-project.txt文件中添加不需要混淆的类和第三方的jar包 这个是保持自己包中不需要混淆的类,如果有些类调用了jni也不需要混淆,不然会出错.还有如果项目中有其他项目作为library引入,那这些项目的一些类也不能混淆. 这个是保持项目中的第三方jar不混淆 另外加上上面几句话,不然会在控制台中报warning警告 2.在project.properties文件中把proguard.config=${sdk.dir}

打jar包的方法

打jar包的方法是什么? java打jar包,引用其他.jar文件 java项目打jar包 将java源码打成jar包 maven打jar例子 打war包的方法是什么? Eclipse->项目右键=>export导出项目成war包. 打jar包的方法,布布扣,bubuko.com

Android开发中出现的低级错误之没有android jar包

The type java.lang.Object cannot be resolved. It is indirectly referenced from required .class files 解决办法:相应的系统的jar包没有导入:选add External JARs...,添加android.jar. 为什么导入工程时候,android.jar包没有导入进来?现象就是所有工程都有问题. 解决办法:在系统的环境变量Path中增加E:\adt-bundle-windows-x86-201

MyEclipse导入jar包到工程和删除jar包的方法

1.先在当前项目新建一个lib文件夹,将需要导入的jar文件用鼠标直接拖到该文件夹 2.然后右键点击该jar文件,选择Build Path-->Add to Build Path 3.如图所示,成功导入jar包 删除jar包的方法 右键点击jar包,选择Build Path-->Remove from Build Path即可

maven导入外部jar包的方法

maven的导入外部jar包的方法(前提还有外部jar包) 1.问题: 在maven添加依赖包时,添加不成功,可以选择通过外部命令导入到仓库里. 2.命令:(在Dos命令行) mvn install:install-file -Dfile=本地jar包存放目录 -DgroupId=jar包添加依赖的groupId名称 -DartifactId=jar包添加依赖的artifactId名称 -Dversion=jar包添加依赖的version -Dpackaging=jar 3.例如: 在pom文件

Xamarin Android中引用Jar包的方法

新建一个Java Bingdings Library 将Jar包复制,或使用添加已存在的文件,到Jars文件夹中 确认属性中的“生成操作” 如果有类型转换不正确,请修改Transforms文件夹中的相应转换文件 之后编译此项目,在Android项目中引用 即可

Gradle混淆+打包Jar包基础

本文为原创文章,转载请注明出处. 文章最后会附带源码下载地址,有需要的朋友可下载. 通常我们编写Android APP时有这样的需求:(1)代码混淆:(2)模块化:(3)向第三方提供JAR包.下面将以实例的形式向初学Android或开始使用AndroidStudio(AS)的朋友介绍下这几部分. 引述: (1)AS采用了Gradle的构建工具,可以让我们很方便的对我们的APP进行配置,比如版本.支持最低API level .代码混淆文件.第三方库等等,具体语法请查考其他朋友的文章. (2)AS提

Eclipse插件引入jar包的方法(转)

搞了两天,终于找到解决办法了.原来  Eclipse 插件项目引入外面的jar包不能用   build path---->add external jars的方法. 先说明两个概念:类加载器,OSGI 类加载器(class loader),顾名思义就是JVM用于加载类的一个工具.当然,它本身也是一个java类,见java.lang.ClassLoader.它维护内部的类名空间,相互关系(域),并为它们隔绝外部侵害. OSGI,Open Service Gateway Initiative,则是一