android ant 最简单的打包签名,混淆方法

开发者福利!热门AI工具限时免费用 购周边即赠Coding Plan Lite,Claude Code、Cursor等20+工具畅享,效率翻倍! 阅读详情

使用ant打包,如果脚本都是我们自己一步一步来写的话,是一个比较麻烦的东西。

关于ant,我们详细看下:

ant支持 ant debug,ant release等命令,我们需要签名混淆,那么就需要ant release这个命令。

首先:ant环境搭建,这我就不多说了,很多博客都有介绍,包括一些环境配置

然后:ant环境可以之后,我们需要一个 build.xml文件,这个是ant编译去找的一个东西

<?xml version="1.0" encoding="UTF-8"?>
<project
    name="EPAPP"
    default="helpme" >
    <property file="local.properties" />
    <property file="ant.properties" />
    <loadproperties srcFile="project.properties" />
    <!-- quick check on sdk.dir -->
    <fail
        message="sdk.dir is missing. Make sure to generate local.properties using 'android update project' or to inject it through an env var"
        unless="sdk.dir" />
    <import
        file="custom_rules.xml"
        optional="true" />
    <!-- import file="build_of_sdk.xml" / -->
    <import file="${sdk.dir}/tools/ant/build.xml" />
	
    <target
        name="cleand"
        depends="clean" >
		<delete file="./assets/config.properties"/> 
	</target>

    <target
        name="d"
        depends="cleand" >

        <property
            name="out.final.file"
            value="./dist/develop/ep.apk" />
			
		<mkdir dir="./dist/develop"/>
			
        <antcall target="release" />
    </target>

    <target name="helpme">
        <echo>Android Ant Build For EPAPP. Available targets:</echo>
        <echo>   helpme:    Displays this help.</echo>
        <echo>   d:         Builds for final.</echo>
        <echo>              Final release for production.</echo>
        <echo>Please feel free to ask help from wangle@easipass.com</echo>
        <echo>Sorry for this messed English show. :) </echo>
    </target>
</project>
这个脚本对应  ant 的build.xml就简单了不是一点点了,不过注意配置环境变量哦。

其中 <import file="${sdk.dir}/tools/ant/build.xml" /> 则是导入ant自带的那个 build.xml,正因为导入了这个脚本 

<antcall target="release" />这句话才能正常执行

再然后:我们添加一个ant使用的配置脚本:这个脚本是由 ant的build.xml去调用执行的,我们就不管了

文件名为  ant.properties

proguard.config=proguard.cfg
key.store=./xxxxx.keystore
key.alias=xxxx
key.store.password=123456
key.alias.password=123456


这个不用说也知道是干嘛用的了哦,打开混淆,导入签名啦。第一行是打开混淆,第二行往下则是导入签名,以及签名密码

至于签名,就不说啦,有了签名  

key.store=./xxxxx.keystore 这个是给出签名的路径,我是直接将签名拷贝到了工程目录下了,你可以自己配置哦.

到这里架子已经搭建出来了哦,接下来就是根据自己的特殊需要,添加一些处理了



这里稍微花点控件介绍一下混淆

proguard.cfg这个是混淆脚本,由于一些三方包和android自带的四大组件等等,我们不能让他们混淆(三方包一般已经混淆过一次,再混淆则会出问题,而四大组建是因为它们会被android系统调用,混淆了,系统就找不到了),否则会出问题

关于json的混淆尤其要注意,可参考上一篇博客  http://blog.csdn.net/brightshadow11111/article/details/9469159

我把我的proguard.cfg脚本贴上来哦

-optimizationpasses 5
-dontusemixedcaseclassnames
-dontskipnonpubliclibraryclasses
-dontpreverify
-verbose
-dontoptimize
-ignorewarnings 
-optimizations !code/simplification/arithmetic,!field/*,!class/merging/*
-keepattributes Signature
#这里是导入工程中所用到的一些三方包
-libraryjars libs/android-support-v4.jar
-libraryjars libs/umeng_sdk.jar
-libraryjars libs/android-wheel.jar
-libraryjars libs/com.springsource.org.apache.commons.beanutils-1.8.0.jar
-libraryjars libs/com.springsource.org.apache.commons.collections-3.2.1.jar
-libraryjars libs/com.springsource.org.apache.commons.lang-2.1.0.jar
-libraryjars libs/com.springsource.org.apache.commons.net-1.4.1.jar
-libraryjars libs/core.jar
-libraryjars libs/ezmorph-1.0.1.jar
-libraryjars libs/gson-1.7.1.jar
-libraryjars libs/json-lib-2.3-jdk15.jar
-libraryjars libs/ksoap2-android-assembly-3.0.0-RC.4-jar-with-dependencies.jar
-libraryjars libs/locSDK_3.1.jar
-libraryjars libs/mobiletools.jar
-libraryjars libs/pinyin4j-1.1.0.jar

-dontskipnonpubliclibraryclassmembers
-dontskipnonpubliclibraryclasses

#这里是对gson的处理
-keep class com.google.**{*;}
-keepclassmembers class * implements java.io.Serializable {
    static final long serialVersionUID;
    private static final java.io.ObjectStreamField[] serialPersistentFields;
    private void writeObject(java.io.ObjectOutputStream);
    private void readObject(java.io.ObjectInputStream);
    java.lang.Object writeReplace();
    java.lang.Object readResolve();
}

##---------------Begin: proguard configuration for Gson  ----------
# Gson uses generic type information stored in a class file when working with fields. Proguard
# removes such information by default, so configure it to keep all of it.
-keepattributes Signature  
# Gson specific classes
-keep class sun.misc.Unsafe { *; }
#-keep class com.google.gson.stream.** { *; }  
# Application classes that will be serialized/deserialized over Gson
-keep class com.xxxx.cmb.entity.** { *; }  
#这里是对gson的用到的javabean处理
-keep class com.xxxx.ct.entity.** { *; }
-keep class com.xxxx.entity.** { *; } -keep class com.xxxxx.entity.** { *; } ##---------------End: proguard configuration for Gson -----------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-keep public class * extends net.sf.json.xml.XMLSerializer-keep class android.support.v4.** {*;} -keep interface android.support.v4.app.** {*;} -keep public class * extends android.support.v4.** -keep public class * extends android.app.Fragment-keep class com.google.gson.stream.** {*;} -keep class com.google.gson.examples.android.model.** {*;} -keepclasseswithmembernames class * { 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 * { public static **[] values(); public static ** valueOf(java.lang.String);}-keep class * implements android.os.Parcelable { public static final android.os.Parcelable$Creator *;}-keep public class com.easipass.common.net.secret
#这里是不混淆三方包
-keep class com.motorola.** { *;}-keep class com.baidu.location.** {*;}-keep class com.google.zxing.** {*;}-keep class android.support.v4.** {*;}-keep class net.sourceforge.pinyin4j.** {*;}-keep class kankan.wheel.widget.** {*;}-keep class org.apache.commons.collections.** {*;}-keep class org.apache.commons.beanutils.** {*;}-keep class org.apache.commons.lang.** {*;}-keep class org.apache.commons.net.** {*;}-keep class net.sf.ezmorph.** {*;}-keep class net.sf.json.** {*;}-keep class com.easipass.util.tools.** {*;}-keep class com.umeng.analytics.** {*;}-keep class com.umeng.common.** {*;}-keep class com.easipass.common.net.** {*;}-keep class net.sf.** {*;}-keep class com.badlogic.** {*;}-keep class * implements com.badlogic.gdx.utils.Json*












        
利用jenkins+ant实现编译前修改文件和批量打包签名 测试框架通过instrume要服务于不同的产品,每次打包时都需要修改AndroidManifest.xml文件中instrument对应的包名,并引用不同的keystore和密码来签名。这个过程本身就易出错,而且由于引入了代码混淆,变得更加痛苦地漫长。现在利用jenkins+ant将整个过程实现了自动化,真是省了好大辛苦。     这个过程自动化的关键在于:   1ant提供了编译前修改文 阅读详情

相关推荐

mysql8.0安装及配置超详细教程_mysql-8.0.15-winx64

MySQL8.0配置教程, 全网最详,同时有本地mysql和小皮系统见另一篇

小诺言的博客 2万+

java ant设置签名,java-如何在不覆盖MANIFEST.MF内容的情况下用Ant对OSGi软件包进行签名...

我有一个Eclipse插件,可以使用Ant为它创建OSGi捆绑JAR.我想用Ant任务对其进行签名,但这会用类签名覆盖MANIFEST.MF内容,从而使OSGi捆绑包无法使用. JDK jarsigner工具具有相同的行为. Eclipse PDE似乎具有该功能,但是据我所知,您只能在Eclipse中使用它.我希望能够从命令行运行我的Ant构建.有人知道将类签名附加到MANIFEST.MF而不是覆...

weixin_29095587的博客 196

从HPPC测试到Simulink仿真:锂电池二阶RC模型参数辨识完整流程

本文详细介绍了从HPPC测试到Simulink仿真的锂电池二阶RC模型参数辨识完整流程。通过HPPC测试获取实验数据,利用Simulink的Parameter Estimation工具进行参数辨识和模型验证,为BMS算法开发提供精确的电池模型。文章涵盖测试设计、数据预处理、模型搭建及工程应用等关键步骤,助力新能源电池研发。

whisky的博客 665

【转】Android项目使用Ant打包,生成build.xml

记不住,于是原帖转过来,请看原帖:http://blog.csdn.net/ms03001620/article/details/8490238   一、生成build.xml Eclipse中使用AntAndroid打包并且签名 SDK自带文件 在&lt;sdk&gt;tools/ant目录下这3个文件   其中build.xml和uibuild.xml中定义了大量基础构建方法...

weixin_34409357的博客 307

Eclipse下Ant自动打包混淆签名

a

学无常师,负笈不远险阻 9060

Ant自动编译打包android项目(二)----签名与渠道包

上篇介绍了怎么使用ant自动编译打包现有的android项目,这篇将继续介绍如果如何在ant打包应用的时候加入签名信息以及自动打包渠道包。 1. 加入签名信息: 在项目的根目录下建一个ant.properties文件,输入如下内容,其中keystore密码和alias密码可以不指定(防泄漏),那么在命令执行的过程中会要求你输入。 #keystore的路径,必须使用正斜杠 key.store=

如竹的技术博 4362

Android中使用Ant打包(混淆打包)

有时候为了保护代码不被非法查看或使用时,我们都会对应用或游戏的代码进行混淆打包,就是将类名和方法名换成abcde等没有意义和很难阅读的名字. 像如下图片中的效果,但是有些是不能混淆.因为配置文件中使用了.将应用中的所有类变成a,b,c,d,e等等的类,方法名也全部变成a,b,c,d,e的,让反编译出来的全部很难阅读.需要实现这些效果一般要用于以下的几个上图中的目录与文件说明 : pr

happyq的专栏 9891

ant 签名android项目 + 打包 android 项目

本文基于android sdk r18,以前的版本类似 如何安装ant就不说了,只选一点重要的部分分享出来。 假如项目 在 。。/project 下,项目名称为abc 在project目录下,打开终端,运行android update project -p abc  -n name -p 指的是项目路径 必填项 -n 为项目名称,这个在生成apk时默认是以这个为名称前缀的

moubenmao的专栏 1983

使用Ant打包Android应用详解

计划写个完整的使用Ant打包Android应用的系列文章,三篇文章。首篇详细介绍采用Ant打包Android应用的流程,列出部分定制问题及其解决方法,第二篇介绍我理解的Ant打包的思路与基本的概念和使用,最后一篇描述apk包的生成过程。     实现的环境:     操作系统:ubuntu 64bit 14.04     Android SDK Build Tools:22.0.

要想到做到 3840

Android 签名机制,项目签名ANT打包,优化,发布总结

Android 签名机制,项目签名ANT打包,优化,发布总结 Android APK 签名打包的实现原理:   实际开发中,一次完整的Android项目打包要进行以下的几步:编译、代码混淆打包apk、签名apk、apk优化。   首先,需要有一个 keystore,他是apk的数字签名,在签名apk时候需要。 获取keystore的方法. CMD 进入到

SunnyAndroider专栏 1002

android ant混淆,[转载]android使用ANT打包签名混淆

[转载]android使用ANT打包签名混淆上一篇 /下一篇 2011-04-25 18:10:12/ 个人分类:android转自:http://blog.csdn.net/lh15871815717/archive/2011/03/03/6220603.aspxCreating all output directories Generating R.java...Compiling ai...

weixin_33638349的博客 165

android开发之应用打包签名混淆流程

ant打包apk,对其签名混淆,防止反编译。

一个本科小生的奋斗史 9819

ant批量打包混淆修改资源文件

ant批量打包混淆修改资源文件

a553702848的博客 2967

Ant打包Android代码生成apk文件

1、配置ant环境 2、生成build.xml 可以使用android sdk/tools下的android.bat来自动生成build.xml文件。 进入需要打包的项目根目录,执行 android update project -p path 会生成一个build.xml和local.properties文件。 2、用ant打包 有两种形式的打包:debug和release 1

心无所属的专栏 1591

Android Ant打包

1. 编译环境的配置 android和java的编译环境和ant工具的安装是必不可少的环节。 配置文件ant.properties 为了在不同的环境下能够顺利地进行编译,需要进行额外的配置,在项目目录下创建配置文件ant.properties。 首先是android编译工具的选择。我们预留了sdk.dir这个变量是为了不同环境的编译,而exe和{exe}和exe和{bat}同样也是如此。也要用...

假装你是大灰狼的专栏 623

java ant打包工具_Android打包Ant

最近在项目中遇到了一些打包的问题,顺便去了解了下打包的一些知识点。这里主要介绍和总结了一下ant、build.xml的知识点以及构建apk和jar包的一些注意事项。Android打包对工程代码和资源文件使用打包工具进行编译、混淆签名、优化对齐等一系列步骤之后生成可发布到应用市场的apk的构建过程。打包流程build.png大概分为以下几个步骤1、使用aapt工具将res资源文件生成R.java文...

weixin_39698007的博客 286
上一篇: android代码混淆 GSON完满解决
下一篇: android WebView将新浪天气为我所用 ------>仅供娱乐(一个android webview 执行js的简单框架)
五柳--先生
博客等级 码龄16年 106粉丝 87原创
评论 10
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值