IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> 浅析Android APP上线前的准备工作 -> 正文阅读

[移动开发]浅析Android APP上线前的准备工作


前言

本文介绍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类用于在界面下方弹出小窗提示。除了少数弹窗可予以保留(如“再按一次返回键退出”),其他弹窗都应在发布时屏蔽。
  3. 提醒对话框AlertDialog
    提醒对话框常用于各种与用户交互的操作。

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

代码如下(示例):


import android.util.Log;

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

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

    /**
     * 如果是要发布了,可以在application里面把这里release一下,这样子就没有log输出了
     */
    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加固平台

例:腾讯云加固平台:
在这里插入图片描述

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

  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2021-11-28 11:24:56  更:2021-11-28 11:25:57 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 5:22:01-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码