打包APK

打包APK

在菜单Build下找到Generate signed App bundle or APK对应用进行打包。但在打包之前,我们还想尽量优化一下apk文件,比如压缩一下体积,混淆代码,制作封面等。

首先来到manifest.xml文件里看看

<application>里我们能看到这样一串

<application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:preserveLegacyExternalStorage="true"
        android:requestLegacyExternalStorage="true"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme"
        android:usesCleartextTraffic="true">

在第一项android:allowBackup="true" 这里,设置了apk允许用户备份,以便于后来用户恢复数据时可以从这里获取。但这样做其实存在备份数据被黑客夺取风险,同时会带来较大的存储开销。所以一般我们设为false


要制作app图标我们可以使用Android Studio自带的插件,在菜单New->Image Asset,上传自己的图片,制作后就全置换到mipmap-***目录下了。


接下来打开项目的build.gradle文件

找到buildTypes配置选项

buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }

这里minifyEnabled false表示不启用最小化安装包,我们这里改为minifyEnabled true,之后Android Studio则为进行如下处理:

1.压缩代码,移除各种无用的实体,包括类、接口、方法、属性、临时变量等

2.混淆代码,例如Student类的名称可能改为a,方法getName的名称可能改为b

此外呢,如果我们还想处理资源文件的最小化,可以添加shrinkResources true这项配置,这样就会自动移除无用的资源文件了。


规范打包

每个App有三个基础信息,App 的图标,App的名称,App的版本号。

图标存在res/midmap-***目录下,名称则在res/values/string.xml中的app_name中。第三个则是App的版本号,版本信息包括build.gradleversionCodeversionName两个参数。其中versionCode是纯数字,而versionName是“数字.数字.数字”的格式。升级App的时候就是根据这个来区分。versionName从前向后表示大版本、中版本、小版本更新。

打包时,选择debug是调试模式,此时会输出调试语句的信息。选择release是发布模式,此时不会调试内容。

多渠道打包

不同的应用市场需要分渠道打包。


代码混淆

反编译会被编译出原有代码,辛苦开发的成果就被盗取了。因此有必要对源码进行加密保护。代码混淆就是保护代码安全的措施之一。Android Studio自带了代码混淆器proGuard

前面介绍了build.gradle下的buildTypes配置就是代码混淆的实现。

buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }

这里的第二个参数就指定了代码混淆的规则,初学者保持默认即可。只需要启动minifyEnabled true即可。


安全加固

混淆只是加大了破解的难度,最后还需要做到安全加固。而360加固保则是专业的加固工具,可以把专业的事交给专业的人来做。加固保后的文件因为签名也被破坏了,所以需要重新签名,可以使用爱加密的APKSign。或者使用安卓sdk 中的apksigner 工具进行重签名。具体路径在你的sdk/build-tools/{sdk版本}/apksigner.bat。用这样的命令将加固后的apk重新签名。

apksigner sign --ks my-release-key.jks --out signed.apk unsigned.apk
posted @ 2025-12-17 22:51  tre2e  阅读(8)  评论(0)    收藏  举报