`
youzifei
  • 浏览: 66834 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

android apk手动打包

阅读更多

最近在研究apk的编译,有些技术点放到这里作为备注吧。

下面图是手动打包的过程图

 手动编译的流程如下:

1.生成资源文件

2.编译本地库

3.编译java代码

4.生成dex文件

5.打包资源文件

6.生成apk文件

7.对apk文件进行签名

 

1.生成资源文件,使用aapt生成R.java类文件: 

    aapt package -f -m -J ./gen -S res -I D:\tools\java\android-sdk-windows\platforms\android-16\android.jar -M AndroidManifest.xml

    其中  

    -f -m -J ./gen  代表按覆盖的形式在gen目录下生成带包路径的R.java

    -S res指定资源文件 

    -I D:\tools\java\android-sdk-windows-1.6_r1\platforms\android-7\android.jar 指定使用的android类

 

    -f  force overwrite of existing files

    -m  make package directories under location specified by -J

    -J  specify where to output R.java resource constant definitions

    -S  directory in which to find resources.  Multiple directories will be scanned and the first match found (left to right) will take precedence.

    -I  add an existing package to base include set

 

2.编译本地库,使用android SDK提供的aidl.exe把.aidl转成.java文件: 

    usage: aidl OPTIONS INPUT [OUTPUT]

           aidl --preprocess OUTPUT INPUT...

 

    OPTIONS:

       -I<DIR>    search path for import statements.

       -d<FILE>   generate dependency file.

       -p<FILE>   file created by --preprocess to import.

       -o<FOLDER> base output folder for generated files.

       -b         fail when trying to compile a parcelable.

 

    INPUT:

       An aidl interface file.

 

    OUTPUT:

       The generated interface files. 

 

3.编译java代码,编译.java类文件生成class文件

    javac -encoding utf8 -target 1.5 -bootclasspath D:\tools\java\android-sdk-windows-1.6_r1\platforms\android-7\android.jar -d bin/classes src\com\jimmy\*.java src\com\baidu\np\client\*.java gen\com\jimmy\*.java

 

4.生成dex文件,使用android SDK提供的dx.bat命令行脚本生成classes.dex文件: 

    dx.bat --dex --output=d:/workspace/testaa/bin/classes.dex  d:/workspace/testaa/bin/classes 

 

5.打包资源文件,使用Android SDK提供的aapt.exe生成资源包文件(包括res、assets、androidmanifest.xml等):

    aapt.exe package -f -M AndroidManifest.xml -S res -A assets -I D:\tools\java\android-sdk-windows-1.6_r1\platforms\android-7\android.jar -F bin\byreadreader

    将AndroidManifest.xml,res和assets文件夹中的资源文件打包生成byreadreader,用法参见1 

 

6.生成apk文件,第六步 生成未签名的apk安装文件:

    

    D:\tools\java\android-sdk-windows-1.6_r1\tools\apkbuilder.bat d:/workspace/testaa/misc_dj_np.apk -u -z d:/workspace/testaa/bin/byreadreader -f d:/workspace/testaa/bin/classes.dex -rf d:/workspace/testaa/src -rj d:/workspace/testaa/lib

 

    apkbuilder  ${output.apk.file} -u -z  ${packagedresource.file} -f  ${dex.file}  -rf  ${source.dir}  -rj  ${libraries.dir} 

    ${output.apk.file} -u 创建一个未签名的包

    -z  ${packagedresource.file} 将文件压缩,添加到包里面

    -f  ${dex.file} 将文件添加到包里面

    -rf  ${source.dir} 

 

    -u      Creates an unsigned package.

    -z      Followed by the path to a zip archive. Adds the content of the application package.

    -f      Followed by the path to a file. Adds the file to the application package.

    -rf     Followed by the path to a source folder. Adds the java resources found in that folder to the application

        package, while keeping their path relative to the source folder.

 

 

7.对apk文件进行签名, 使用jdk的jarsigner对未签名的包进行apk签名: 

 

    java -jar D:\MyWorks\component\lib\signature\sign.jar keystore/platform.x509.pem keystore/platform.pk8 misc_dj_np.apk  misc_dj_np_sined.apk

    其中

    –keystore f:\explorer\eclipse3.5\bbyread.keystore 为密钥文件

    -storepass byread002为密钥文件密码

    byread 为密钥别名 

    -keypass byread002为密钥别名密码

    -signedjar f:\explorer\byread.apk为签名后生成的apk文件 

    f:\explorer\byreadreader.apk为未签名的文件

 

经过以上7个步骤,就可以获得一个签名的apk了。

 

在反编译的时候

apktool d -f apk/xxx.apk   decode/xxx

查看decode/xxx/res/values 有三个文件 ids.xml, public.xml, string.xml

ids.xml 这个项目有多少id 都在这个ids.xml文件中声明。

public.xml  ids对应的索引。

string.xml 项目的所有string声明 都在这个文件里。

 

 

分享到:
评论

相关推荐

    android sdk和javafx打包androidapk示例

    为了在Android设备上运行JavaFX应用程序,我们需要借助特殊的工具和技术,这就是"android sdk和javafx打包androidapk示例"所涉及的核心内容。 首先,JavaFX SDK包含了一套用于开发和部署JavaFX应用的工具和库。它...

    android_apk_打包工具

    而"android_apk_打包工具"就是为了解决这个问题,它提供了一个自动化、批处理的打包解决方案,使得开发者无需手动操作每个步骤,大大提高了工作效率。 该工具通常包含以下功能: 1. **自动编译**:自动调用Gradle...

    android apk打包工具

    传统的打包流程可能需要手动更改每个版本的配置,而使用这样的工具,可以自动化完成这一繁琐任务,只需要设定好参数,即可一键生成对应渠道的APK。 支持渠道号替换(字符串替换)意味着开发者可以自定义不同的...

    AndroidAPK打包工具

    在Android应用开发中,将应用程序打包成APK文件是发布应用到Google Play或其他安卓设备上的必要步骤。"Android APK打包工具"就是一款专为此目的设计的实用工具,它简化了APK签名的过程,使得开发者可以更快速、更...

    Android之APK打包安装过程.zip_android 打包_run

    Android APK的打包与安装是Android应用开发过程中至关重要的步骤,它涉及到多个阶段,从源代码编译到最终在设备上运行。以下将详细介绍这个过程。 首先,我们需要理解APK是什么。APK(Android Package)是Android...

    安卓APK批量打包工具

    在Android应用开发中,APK批量打包工具是一个非常实用的辅助软件,它能够帮助开发者高效地管理和构建多个版本的应用程序。这个工具的核心功能是进行渠道号替换、资源替换以及包名替换,以满足不同场景下的定制化需求...

    Eclipse插件-Android项目APK渠道号批量打包工具兰贝

    【Eclipse插件-Android项目APK渠道号批量打包工具兰贝】 在Android应用开发过程中,经常需要为不同的分发渠道创建带有特定渠道标识的APK文件,以便追踪每个渠道的下载和用户行为数据。传统的做法是手动修改...

    Android打包APK Sqlite一起打包成APK

    在默认情况下,Android Studio并不会自动将外部的SQLite数据库文件打包进APK。因此,我们需要手动干预这个过程。一种常见的方法是在`assets`目录下放置SQLite数据库文件,因为该目录下的文件会在应用安装时被复制到...

    Android APK管理器

    APK是Android应用的二进制格式,相当于iOS中的ipa文件,是开发者完成编程后,编译、打包并签名生成的安装包。了解这款管理器,我们需要深入探讨其核心功能和工作原理。 首先,该管理器的首要功能是安装SD卡内的APK...

    友盟多渠道打包 Android Apk

    在Android应用开发中,"友盟多渠道打包 Android Apk" 是一个常见的需求,尤其对于那些需要在多个分发渠道发布应用的开发者来说。友盟(Umeng)是中国领先的移动互联网开放平台,提供了多种服务,包括数据分析、推送...

    Android Apk一键反编译 (支持Mac 和 Windows)

    在Android应用开发中,APK文件是应用程序的打包格式,它包含了所有运行在Android设备上的代码、资源和元数据。为了分析、修改或学习APK的内部结构,开发者或者安全研究人员有时需要对APK进行反编译。"Android Apk...

    友盟apk批量打包工具

    友盟apk批量打包工具是一款专为Android应用开发者设计的实用工具,主要功能在于高效地生成多个渠道包。在Android应用的推广过程中,通常需要针对不同的推广渠道制作具有唯一标识的APK文件,以便追踪各个渠道的下载量...

    Unity在Windows全自动打包Android的apk.docx

    Unity在Windows平台上全自动打包Android APK的过程涉及到一系列自动化脚本的编写和执行,主要目标是减少手动操作,提高工作效率。本文将详细阐述这一过程,并重点解析关键步骤和注意事项。 首先,全自动打包是在...

    Android Studio手动打包的教程图解

    下面,我们将详细讲解如何在Android Studio中手动打包APK。 首先,我们要了解为什么需要手动打包。在开发过程中,我们通常使用的是Debug版本的APK,它包含调试信息,允许我们快速部署到设备进行测试。然而,Debug ...

    android 批量渠道打包工具

    批量渠道打包工具是开发者在发布应用时的重要辅助工具,它极大地提高了效率,避免了手动为每个渠道创建单独APK的繁琐过程。传统的打包方式中,开发者需要在AndroidManifest.xml文件中更改渠道标识,然后重新构建APK...

    android多渠道批量打包工具

    在Android应用打包的过程中,通常会在APK文件中嵌入一个渠道标识,这个标识用于区分不同的分发渠道。例如,我们可能需要为Google Play、华为应用市场、小米应用商店等创建不同的APK。在传统的打包方式中,这需要在...

    android shell批量打包

    在Android开发过程中,有时我们需要对应用进行批量打包,特别是在测试、发布或者构建多个版本时,手动逐一打包会非常耗时且容易出错。此时,利用Android Shell命令进行批量打包就显得尤为重要。Android Shell批量...

    Android apk后台静默安装

    在Android系统中,APK(Android Package)是应用程序的基本打包格式,用于在设备上安装和运行。"Android apk后台静默安装"是指在用户无感知的情况下,通过编程或命令行工具,如`pm`(Package Manager)命令,在...

    Android-Android多渠道打包方案兼容AndroidP

    Android多渠道打包方案通常涉及到替换APK中的特定资源或配置文件,以便针对每个渠道进行定制。在Android P(即Android 9.0)中,系统引入了一些新特性和限制,对传统的多渠道打包方式提出了挑战。本文将详细介绍如何...

Global site tag (gtag.js) - Google Analytics