浅析Android APP上线前的准备工作

浅析Android APP上线前的准备工作,第1张

浅析Android APP上线前的准备工作

文章目录
  • 前言
  • 一、版本设置
  • 二、上线模式
    • 1.上线模式的说明
    • 2.控制调制信息
    • 3.AndroidManifest.xml的配置修改
    • 4.数据安全
    • 5.apk加固
        • 1.加固工具
        • 2.apk重签名
  • 三、平台入驻
  • 总结


前言

本文介绍App上线前必须做的准备工作,包括正确设置版本信息,例如设置App图标、App名称、App版本号;把开发模式切换到上线模式,除了代码的切换外,还需修改AndroidManifest.xml;对关键业务数据进行加密处理,加密算法主要有MD5、RSA、AES、3DES、SM3等。


一、版本设置

开发一个正式App需要定制几类版本信息,包括但不限于App图标、App名称和App版本号。

(1)App图标
App图标文件默认是res/mipmap-***目录下的ic_launcher.png

修改APP图标的方法大致有两种:
1.直接将想要替换的APP图标命名为ic_launcher.png,复制粘贴到mipmap文件夹进行覆盖式替换
2.将新的APP图标放置于mipmap文件夹下,并在application中进行配置文件的信息修改(icon属性)

(2) App名称
App名称保存在res/values/strings.xml的app_name中

修改APP名称的方法也无外乎两种:
1.修改strings的app_name对应的值
2.修改上文中application配置文件中的label属性

(3)App版本号
App版本号放在build.gradle的versionCode与versionName两个参数中。versionCode必须为整型值,每次升级版本时值都要加1。versionName的字符串格式为“大版本号.中版本号.小版本号”。


在实际开发中,有一种做法是在APP中常量文件中添加VersionCode&&VersionName的组合,用于检测系统APP的更新情况,也可以在Manifest.xml文件的application的配置属性中查看该属性

Versionname的使用说明:
VersionName格式形如“数字.数字.数字”,具体规则说明如下:
(1)第一个数字为大版本号,有重要功能升级时,大版本号要加1,后面两个数字清零;
(2)第二个数字为中版本号,每次要进行功能更新时,中版本号加1,第三个数字清零;
(3)第三个数字为小版本号,在有问题修复与界面微调时,小版本号加1。

二、上线模式 1.上线模式的说明

从保密需要考虑,App在上线前需要去掉多余的调试信息,形成上线模式。与之相对的是开发阶段的开发模式。
建立上线模式的好处有以下3点:
(1)保护用户的敏感账户信息不被泄露。
(2)保护业务逻辑与流程处理信息不被泄露。
(3)把异常信息转换为更友好的提示信息,改善用户体验。

代码如下(示例):

2.控制调制信息

控制调试信息的公共类主要有3种,分别对Log类、Toast类和alertDialog类进行封装。

  1. 日志Log
    Log类用于打印调试日志。除非特殊情况,发布上线的App应屏蔽所有日志信息。
  2. 提示Toast
    Toast类用于在界面下方d出小窗提示。除了少数d窗可予以保留(如“再按一次返回键退出”),其他d窗都应在发布时屏蔽。
  3. 提醒对话框alertDialog
    提醒对话框常用于各种与用户交互的 *** 作。

在这一阶段,常见的做法是对调试信息类,如Log进行封装,可以设置一个布尔类型的标志位,当其值设为False的时候,一键使得所有Log方法无法打印调试信息,当然这一做法要考虑到安全性问题,例如下面我进行封装的LogUtil方法

代码如下(示例):

import android.util.Log;

public class LogUtil {
    public static String sTAG = "LogUtil";

    //控制是否要输出log
    public static boolean sIsRelease = false;

    
    public static void init(String baseTag, boolean isRelease) {
        sTAG = baseTag;
        sIsRelease = isRelease;
    }

    public static void d(String TAG, String content) {
        if (!sIsRelease) {
            Log.d("[" + sTAG + "]" + TAG, content);
        }
    }

    public static void v(String TAG, String content) {
        if (!sIsRelease) {
            Log.d("[" + sTAG + "]" + TAG, content);
        }
    }

    public static void i(String TAG, String content) {
        if (!sIsRelease) {
            Log.d("[" + sTAG + "]" + TAG, content);
        }
    }

    public static void w(String TAG, String content) {
        if (!sIsRelease) {
            Log.d("[" + sTAG + "]" + TAG, content);
        }
    }

    public static void e(String TAG, String content) {
        if (!sIsRelease) {
            Log.d("[" + sTAG + "]" + TAG, content);
        }
    }
}

如上,当isRelease属性为false时候,才会进行调制信息的打印,当为true的时候,则不会,相对应的Toast、Dialog也可同样进行二次封装或进行自定义View的再书写实现该效果

3.AndroidManifest.xml的配置修改

AndroidManifest.xml也要区分开发模式与上线模式,有3点修改。
(1)application标签中加上属性android:debuggable="true"表示调试模式,默认false表示上线模式。在上线发布时要把该属性设置为false。
(2)App发布后,没有特殊情况,开发者都不希望activity和service对外开放。但其默认是对外部开放的,所以要在activity和service标签下分别添加属性android:exported= “false”,表示该组件不对外开放。
(3)App默认安装到内部存储,因为手机的存储空间有限,所以应该尽量让App选择安装到SD卡,避免占用宝贵的内部存储空间。

(1)需要注意的是,在Android较新版本中,打包apk已经不需要手动进行debuggable属性进行设置,默认情况下我们都是需要设置的,但如果打包的是debug版本的apk文件,那么这个debuggable属性就自动设置为true,反之,如果打包的是release版本的apk文件,那么这个debuggable属性就自动设置为false。

以下是官方文档给出的解释:

Avoid hardcoding the debug mode, leaving itout allows debug and release builds to automatically assign one.
It is best to leave out theandroid:debuggable attribute from the manifest. If you do, then the tools willautomatically insert android:debuggable=true when building APK to debug on anemulator or device. And when you perform a release build such as Exporting APK,it will automatically set it to false.
If on the other hand you specify a specificvalue in the manifest file, then the tools will always use it. This can lead toaccidentally publishing your app with debug information.

翻译过来就是

避免硬编码调试模式,保留itout允许调试和发布版本自动分配一个。
最好在清单中省略android:debugable属性。如果您这样做,那么在构建APK以便在模拟器或设备上调试时,工具将自动插入android:debuggable=true。当您执行发布构建(如导出APK)时,它会自动将其设置为false。
另一方面,如果您在清单文件中指定了一个特定值,那么工具将始终使用它。这可能导致意外发布带有调试信息的应用程序。

(2)关于Activity和Service的Exported属性问题,涉及跳转(Intent-filder)问题,但本文仅做APP上线前的简单部署,因而不做深入说明

(3)关于设置默认安装存储位置的问题,可在AndroidManifest.xml进行属性设置,具体如下:


4.数据安全

数据安全涉及的内容篇幅过多,核心便是加密,包括但不限于对SharedPreference、SQLite、传输数据进行加密工作处理;加密算法的内容浩如烟海,在本文就不做赘述了。

5.apk加固 1.加固工具

apk加固如果自己从头来进行加固,涉及的安全知识篇章实在过于庞大,对于普通的应用开发者来说懂安全固然是一件好事,但是要求所有的应用开发者都对安全知识具有熟练的掌握难免不现实,这里我们推荐使用几个第三方apk加固平台

  • 腾讯云的apk加固平台
    腾讯云应用加固,可在线加固
  • 360的apk加固平台
    -360应用加固平台,需下载

例:腾讯云加固平台:

2.apk重签名

平台加固后的apk需要重新进行签名,重签名的方法有很多很多啊,有javasigner、apksigner还有许多的可视化签名工具,这里我们使用javasigner工具进行签名,需要注意的是javasigner目前只支持V1的签名方式,若要对apk进行V2签名,可使用Android SDK中附带的apksigner进行签名。

javasigner签名步骤:
1.重新下载加固后的apk文件,放置于指定的文件夹下
我们这里放置于unamed的文件夹下

2.一行命令进行重签名打包

jarsigner -verbose -keystore keystore文件路径 -signedjar 签名后生成的apk路径 待签名的apk路径 别名

例:

需要注意的是,javasinger命令位于java jdk目录的bin目录下,可以在该文件夹下启动命令行,当然也可设置环境变量直接启动

然后我们便发现打包成功了

三、平台入驻

完成了以上准备工作之后就可以将应用发布到相关平台啦,填写相关信息之后经平台审核就可以在相关平台下载自己发布的移动应用了!

总结

apk上线之前的准备工作很多,笔者这里只是简略地介绍了客户端的一些相关准备工作,希望大家都可以顺利完成自己的移动应用上线工作!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5611955.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-15
下一篇 2022-12-15

发表评论

登录后才能评论

评论列表(0条)

保存