Android Studio打包混淆带资源的SDK

本文介绍了如何将Android应用打包成SDK,并处理资源混淆的问题。由于第三方服务限制,放弃了插件化方案,选择了jar+apk的方式。内容包括理解apk结构,删除不必要的资源文件,使用AssetManager访问资源,分析Activity资源获取流程,以及混淆并打包jar和apk的详细步骤。注意,Notification的资源处理和so库需手动拷贝到调用工程。
摘要由CSDN通过智能技术生成

           最近要实现一个把自己的整个应用打包成SDK接入到合作公司的应用中,刚开始是想采用插件(如360的DroidPlugin,原理解析链接:分析DroidPlugin,深入理解插件化框架)的形式来做,这样的话很方便,只要提供一个apk就行了。但是问题来了,一个完整的应用里面接入了很多第三方平台的功能,在插件app中运行的话有些第三方服务启动不了,如极光推送。因此只能放弃这种便捷途径。

           我们知道就算应用再大只要把应用代码与资源拷贝到调用工程中一起编译的方法是绝对可行的,只是这种方法看起来有点low而且繁琐麻烦;经过查找资料决定采用jar包+apk的方式来实现,这样我们中只要提供jar+apk+jniLib(如果有)给调用方即可。

          在Android应用中我们是可以访问zip文件(如apk)或者目录中的资源的,这里我们先了解一下一个apk文件的结构,用好压打开一个apk文件,如下图:

图1

          图1中dex文件表示的是代码,resources.arsc中保存了R文件中Id与资源的对应信息,因此在制作资源apk时可以用好压把除了resources.arsc、AndroidMainifest.xml(包含SDK版本信息)、res和META-INF(包含签名信息,用于安全校验)之外的文件全删除以减轻apk大小。

         那么在制作好资源apk后如何在jar中使用其中的资源呢,在类AssetManager通过addAssetPath方法可以添加资源路径,方法代码如下:

    /**
     * Add an additional set of assets to the asset manager.  This can be
     * either a directory or ZIP file.  Not for use by applications.  Returns
     * the cookie of the added asset, or 0 on failure.
     * {@hide}
     */
    public final int addAssetPath(String path) {
        synchronized (this) {
            int 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值