打包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.gradle的versionCode和versionName两个参数。其中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

浙公网安备 33010602011771号