引言:

APK在推广的时候可能会须要动态打包APK。比方公布到不同渠道的时候,须要在manifest文件里改动渠道信息。或者app在推广的时候。须要在apk包里面加上推广人信息等。

环境变量:

1、JDK 1.7
2、Android Build-Tools(将此目录设置到环境变量里去)
3、ApkTool,打包的时候须要用Android Build-Tools的aapt工具

步骤:

  • 下载Apk Tool工具包

最新版本号下载地址:https://bitbucket.org/iBotPeaches/apktool/downloads

  • 解包

将须要解压的apk文件(test.apk)、apktool.jar、apk相应的keystore(test.keystore)放到同一个目录下。然后cd到这个目录

输入解压命令:

java -jar apktool.jar d -f -s test.apk

运行命令后,你会发如今当前目录下生产一个test的目录。在此时你能够改动manifest配置文件,或者向raw、assets目录中加入一些文件

  • 打包

运行完上面操作后,你须要又一次打包。输入以下的命令:

java -jar apktool.jar b test

运行完上面的操作后,生成的未签名的apk文件在  ./test/dist/  文件夹下

  • 签名

将  ./test/dist/  文件夹下的apk文件签名。參考命令例如以下:

jarsigner -digestalg SHA1 -sigalg MD5withRSA -verbose -keystore test.keysotore -storepass keystore_password -keypass keypass_passworld -signedjar test_s.apk ./test/dist/test.apk test.alias

上面的签名參数仅供參考。你可能须要针对不同的情况做稍许的改变。

总结:

以上仅仅是一种打包方式,个人认为是比較快的一种方式。

ApkTool动态打包的更多相关文章

  1. libgdx学习记录19——图片动态打包PixmapPacker

    libgdx中,opengl 1.x要求图片长宽必须为2的整次幂,一般有如下解决方法 1. 将opengl 1.x改为opengl 2.0.(libgdx 1.0版本后不支持1.x,当然不存在这个问题 ...

  2. vue+webpack多个项目共用组件动态打包单个项目

    原文复制:https://www.jianshu.com/p/fa19a07b1496 修改了一些东西,因为sh脚本不能再window电脑执行,所以改成了node脚本.这是基于vue-cli2.0配置 ...

  3. apktool动态破解apk

    那么今天我们就用另外一种方式来破解apk:动态方式,关于动态方式其实很广义的,因为动态方式相对于静态方式来说,难度大一点,但是他比静态方式高效点,能够针对更过的破解范围.当然动态方式很多,所以这里就分 ...

  4. 【转】Maven实战(三)---插件动态打包

    原博文出于:http://blog.csdn.net/liutengteng130/article/details/41622013    感谢! maven把项目的构建划分为不同的生命周期(life ...

  5. maven的动态打包功能

    对于maven而言,打包是其一个非常重要的功能,不仅仅是简单的编译打包的概念,其还通过各种插件支持各种灵活的打包策略.现举一个例子讲解如何动态实现一个web项目的打包: 需求: 现需要对一个web项目 ...

  6. SpringBoot 动态打包

    配置pom.xml <?xml version="1.0" encoding="UTF-8"?> <project xmlns="h ...

  7. apktool重新打包错误

    E:\apktool-install-windows-r05-ibot\apktool-install-windows-r05-ibot\.\test_apk_name\res\layout-larg ...

  8. Eclipse+APKTool动态调试APK

    1. 所需工具 Eclipse. Apktool v2.0.6. 安卓SDK工具. 2. 重编译APK apktool d -d -o test test.apk 此时当前test目录下就是apkto ...

  9. idea maven 动态打包指定环境

    jar pom.xml <!-- 指定文件id --> <profiles> <profile> <id>alpha</id> <pr ...

随机推荐

  1. routes.IgnoreRoute("{resource}.axd/{*pathInfo}")作用

    {resource}.axd 表示后缀名为.axd所有资源 如webresource.axd{*pathInfo} 表示所有路径 作用:使路由系统忽略处理ASP.NET的Web资源文件(WebReso ...

  2. HDOJ多校联合第六场

    先一道一道题慢慢补上, 1009.题意,一棵N(N<=50000)个节点的树,每个节点上有一个字母值,给定一个串S0(|S0| <=30),q个询问,(q<=50000),每次询问经 ...

  3. linux中fork()函数详解(原创!!实例讲解)

    一.fork入门知识 一个进程,包括代码.数据和分配给进程的资源.fork()函数通过系统调用创建一个与原来进程几乎完全相同的进程,也就是两个进程可以做完全相同的事,但如果初始参数或者传入的变量不同, ...

  4. jstring 和char 之间的转换方法

    //jstring to char* char* jstringTostring(JNIEnv* env, jstring jstr) { char* rtn = NULL; jclass clsst ...

  5. java的异常处理机制(try…catch…finally)

    1 引子try…catch…finally恐怕是大家再熟悉不过的语句了,而且感觉用起来也是很简单,逻辑上似乎也是很容易理解.不过,我亲自体验的“教训”告诉我,这个东西可不是想象中的那么简单.听话.不信 ...

  6. 【HDOJ】1706 The diameter of graph

    这么个简单的题目居然没有人题解.floyd中计算数目,同时注意重边. /* 1706 */ #include <iostream> #include <string> #inc ...

  7. Android开发之AlertDialog

    http://www.cnblogs.com/Gaojiecai/archive/2011/12/10/2283156.html http://www.2cto.com/kf/201205/13187 ...

  8. Java中的比较

    Java SE.Java EE.Java ME区别 是什么: Java SE=Java Standard Edition=J2SE= Java标准版 Java EE=Java Enterprise E ...

  9. Java Memory Management(1)

    Java Memory Management, with its built-in garbage collection, is one of the language’s finest achiev ...

  10. 修改tomcat的部署名称

    找到指定工程下面的.setting目录下面的org.eclipse.wst.common.component文件,可以看到以下的配置 <?xml version="1.0" ...