Android之编译打包apk时几个常用的技巧

今天和大家分享一下用eclipse打包apk时的三个小技巧:

一.防止被反编译而扰乱混淆加密:

1. 请打开project.properties文件中的这句话(即将这句前面的"#"去掉即可)
    proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt

2. 然后可以根据自己的需求对proguard-project.txt文件做出“例外”的方法或类的规则定义
   比如该项目引入了一个系统的framework的jar包,那么就需要在这个文件中添加如下一句话:
   -libraryjars 路径/framework_intermediates/classes.jar

3. 生成apk时,右键项目名字,Android Tools --> Export Signed/Unsigned Application Package  。选择apk的保存路径即可。
   通过Run/Launch等途径生成的,是无法达到目的的。

这样生成出来的apk,他人在反编译时,看到的就是被扰乱被混淆来达到阅读困难的目的的代码。

二.使用zipalign的4字节对齐优化处理,以提高apk的性能:

1.在Android中,当资源文件通过内存映射对齐到4字节边界时,访问资源文件的代码才是有效率的。但是,如果资源本身没有进行对齐处理(未使用zipalign工具),它就必须回到老路上,显式地读取它们——这个过程将会比较缓慢且会花费额外的内存。

2.必须在签名apk文件后进行,使用以下命令让其对齐:
    zipalign -v 4 source.apk destination.apk

3.以下的命令用于检查程序包是否进行了对齐:
    zipalign -c -v 4 application.apk

以后凡是eclipse编译打包生成的apk,最好经过zipalign的处理。

zipalign 的文件路径:
    sdk目录/tools/zipalign
    idh.code/out/host/linux-x86/bin/zipalign

三.给打包好的apk重新签名:

1. 改apk签名命令:
java -jar signapk.jar platform.x509.pem platform.pk8 test.apk test_signed.apk

【注意】
2. signapk.jar位置在源代码中:
out/host/linux-x86/framework/signapk.jar

3.platform.x509.pem和platform.pk8均在:
build/target/product/security/platform.pk8

4.如果没有源码的朋友可以使用我分享在微云中的工具:http://url.cn/LFvYbU

Android之编译打包apk时几个常用的技巧

时间: 2024-11-06 19:43:31

Android之编译打包apk时几个常用的技巧的相关文章

cocos2d-x 3.0 引用第三方库 及编译成apk时android mk文件写法

cocos2d-x 3.0 中,如果你需要使用CocosStudio.Extensions扩展库 等等,都需要自己手动添加. 添加步骤如下:(比如说现在我要添加libExtensions,libCocosStudio , libGUI) 1.添加附加项目 右击解决方案--->添加现有项目--->添加:项目目录\cocos2d\extensions\proj.win32\libExtensions,然后你会发现左边多了一个libExtensions扩展库 右击解决方案--->添加现有项目-

在Hudson中,使用ant自动对安卓项目编译打包apk

本文对如何在hudson中配置ant编译打包apk进行说明,主要包括build.xml文件的编写.环境的配置.在Hudson中创建任务. 一.为安卓项目创建build.xml文件 1.打开cmd进入sdk目录下的tools目录,输入: android.bat list target  来查询我们现有的版本list有哪些.如下图: 途中用红框圈出的 id 与蓝框圈出的版本号对应关系,下面需要用到. 2.打开安卓项目工程下的 project.properties 文件,查看target 版本号,如下

ANT编译打包&WIFI调试& adb shell常用命令

ANT编译打包 1:用ADT工具自带的打包:    1:切换到项目目录: 运行,android update project -p . android update project -p ./ --library ../com.example.plugin1.ifs 2:刷新:多了两个目录, 3:local.properties配置: sdk.dir=E:\\samy\\adt-huixin_x86-20140321\\sdk  key.store=./keystore/**** key.sto

Android studio 自定义打包apk名

Android Studio打包应用默认生成的apk名称是:app-release.apk .如果我们要让生成的apk名跟我们版本包名有联系的话,那我们就要自定义生成的apk名了 需要在build.gradle(Module:app)文件下android{ }中添加: // apk name def android.applicationVariants.all { variant -> variant.outputs.each { output -> output.outputFile =

Cocos2dx打包apk时变更NDK引发问题及解决

现在官方的Cocos Studio已经支持打包apk文件,写该随笔的时候还没试过官方的打包功能,所以就按自己的学习顺序先把打包的心得卸下. 问题及最终解决方案: 其中耗时最长的问题就是ndk-r10改成ndk-r9d后一直编译不通过: 最终解决办法是删除项目路径下/proj.android/obj/local/armeabi目录下的所有文件.(当时因为使用cocos2dx2.2.3版本源码学习才遇到该问题,可能cocos2dx最新版本已无该问题). 发现问题过程: 初学Cocos2dx,了解了下

Android Studio中签名apk时遇到的Error Building Android APK - duplicate v4 widget

从字面的意思来看时由于v4包重复引发的错误,心想这个简单,于是在app的libs中查看,删之,因为我是采用在线编译的形式 于是乎查看下依赖树 发现几乎每个项目中都有v4 包 google之后找到一个方法 compile ('你的包'){ exclude group: 'com.android.support', module: 'support-v4' } 这个方法的含义为:编译的包时排除其中的v4包 发现没有用 之后在overflow中找到一个方法 configurations { all*.

Android studio 自定义打包APK名称

Android Studio打包应用默认生成的apk名称是:app-release.apk .如果我们要让生成的apk名跟我们版本包名有联系的话,那我们就要自定义生成的apk名了,要怎么做呢. 我们只需要再build.gradle(Module:app)文件下android{ }中添加: 1 android.applicationVariants.all { variant -> 2 variant.outputs.each { output -> 3 output.outputFile =

Android系统编译环境初始化时Product产品的import-nodes过程

从运行make -f config,mk文件開始,config,mk作为当前的makefile文件.将会被make解析,一般make解析Makefile文件流程首先是载入当中include的各种其它mk文件,同一时候在载入的过程中会初始化自己定义的变量,相似于预编译,在完毕各种初始化后,确定目标以及依赖关系,终于运行目标输出动作. 在config.mk中存在多个须要include的mk文件.这里关注product相关的envsteup.mk 在envsteup.mk从又会include prod

android手机上安装apk时出现解析包错误的一个解决办法

今天下午在学习安卓开发时,学习开发文档中的gridview时,在模拟器上调试程序一切正常,如下图所示: 但当将bin目录下的HelloGridView.apk拷贝到M8安卓系统后进行安装时,出现了“解析包错误”的提示,在网上搜索答案未果后,经过和以前的例子相对比,发现了我在创建android工程时,由于使用的SDK为2.3.3版本,所以选择的minSdkVersion="10",而m8的android版本为2.2.所以试着将AndroidManifest.xml中的minSdkVers