当前位置: 首页 > news >正文

网站设计论文分类号怎么做网站 新手做网站

网站设计论文分类号,怎么做网站 新手做网站,免费网站申请注册,网站建设总体规划本章介绍应用安装包的基本制作规范#xff0c;主要包括#xff1a;如何导出既美观又精简的APK文件、如何按照上线规范调整App的相关设置、如何对APK文件进行安全加固以防止安装包被破解。 应用打包 本节介绍APK安装包的打包过程#xff0c;包括#xff1a;如何利用Androi…本章介绍应用安装包的基本制作规范主要包括如何导出既美观又精简的APK文件、如何按照上线规范调整App的相关设置、如何对APK文件进行安全加固以防止安装包被破解。 应用打包 本节介绍APK安装包的打包过程包括如何利用Android Studio导出APK格式的安装包、如何利用Android Studio制作App的个性化图标、如何通过个中国瘦身手段压缩APK文件的大小。 导出APK安装包 开发过程中运行App都是先由数据线连接手机和计算机再通过Android Studio的Run菜单把App安装到手机上。这种方式只能在自己手机上调试应用如果想在别人手机上安装应用就得把App打包成APK文件该文件就是App的安装包然后把APK传给其他人安装。 下面是使用Android Studio打包APK的具体步骤说明 依次选择菜单Build-Generate Signed Bundle/APK…弹出对话框如下图所示。 选中该窗口左下方的APK选项再单击Next按钮进入APK签名对话框如下图所示。 在该窗口选择待打包的模块名如chapter10以及密钥文件的路径如果原来有密钥文件就单击Choose existing…按钮在弹出的文件对话框选择密钥文件。如果首次打包没有密钥文件就单击Create new…按钮弹出密钥创建对话框如下图所示。 单击该Key store path:对话框最右侧的文件夹按钮弹出如下图的文件对话框在此可选择密钥文件的保存路径。 在文件对话框中选择文件保存路径并在下方的File name输入框中填写密钥文件的名字然后单击OK按钮回到密钥创建对话框。在该对话框依次填写密码Password、确认密码Confirm、别名Alias、别名密码Password、别名的确认密码Confirm修改密钥文件的有效期限Validity。对话框下半部分的输入框只有姓名First and Last Name是必填的填完后的对话框如下图。 单击OK按钮回到APK签名对话框此时Android Studio自动把密码和别名都填上了如下图所示。如果一开始选择已存在的密钥文件这里就要手工输入密码和别名。 单击Next按钮进入下一个打包对话框如下图所示。对话框上方可选择APK文件的保存路径对话框中部可选择编译变量Build Variants如果是调试用则编译变量选择release。最后单击Create按钮等待Android Studio生成AKP安装包。 若无编译问题片刻之后会在APK保存路径下看到release目录打开该目录找到名为app-release.apk的安装包文件。把该文件通过QQ或微信传给他人对方手机收到APK文件点击APK即可安装应用。 如果APK文件安装失败则可能是以下原因导致的 App只能升级不能降级假如安装包的版本号小于已安装App的版本号就无法正常安装。版本号在build.gradle.kts中的versionCode节点配置。倘若新、旧App的签名不一致也会造成安装失败。比如该手机之前安装了debug类型的App现在又要安装release类型的版本就会出现签名冲突。 制作App图标 新建一个App工程默认的应用图标都是机器人如果要发布正规的App肯定得更换更醒目得专享图标。可是res目录下又好几种分辨率得mipmap-***目录每种分辨率又有圆角矩形和圆形两类图标加起来要做十几个图标倘若每个图标都手工制作是在要累得够呛。辛好Android Studio早早提供了专门得图标制作插件只要简简单单几个步骤即可自动生成所有规格的应用图标。该插件的具体使用步骤如下。 右击项目结构的模块名称在右键菜单中依次选择菜单New-ImageAsset弹出如下图所示的图标制作对话框。 上图所示的对话框左侧是图标的配置选项右侧是各规格图标的展示效果。在对话框左侧中间找到Path区域单击路径输入框右边的文件夹图标在弹出的文件窗口中选择新图标的素材图片再回到图标制作窗口此时该对话框的界面如下图所示。 由上图可见对话框右侧展示区域一下子全部换成了新的图标完全自动加工好了。接着单击窗口下方的Next按钮跳转到如下图所示的下一页对话框。 单击下一页窗口中的Finished按钮借宿图标制作操作然后再mipmap-***目录下就能看到各种规格的新图标了。 给APK瘦身 App不但要求功能完善其他方面也得综合考虑比如APK安装包的文件大小就是很重要的参考因素。具备同样功能的两个安装包一个很大很占空间另一个较小不怎么占空间用户的选择结果自然不言而喻。如何压缩打包后的APK文件大小也就是所谓的给APK瘦身这涉及很多技术手段最常用的主要有3种去冗余功能、精简无用资源、压缩图片大小。分别介绍如下 1.去除冗余功能 每当开发者创建新的Android项目打开模块的AndroidManifest.xml看到默认的application节点是下面这样的 applicationandroid:allowBackuptrueandroid:iconmipmap/ic_launcherandroid:labelstring/app_nameandroid:roundIconmipmap/ic_launcher_roundandroid:supportsRtltrueandroid:themestyle/Theme.Chapter10注意application节点有两个属性allowBackup和supportsRtl且都被设置为true它俩到底是干什么用的呢 首先看allowBackup该属性若设为true则允许用户备份APK安装包和应用数据以便在刷机或者数据丢失后恢复应用。这里其实隐含着高危漏洞因为备份后的应用数据可能被人复制到其他设备如此一来用户的隐私就会泄露出去账号密码、聊天记录等均可遭窃。所以还是赶紧关闭这个鸡肋功能吧把allowBackup属性值由默认的true改为false。 然后看supportsRtl该属性名称当中的Rtl为“Right-to-Left”从右到左的缩写像中东的阿拉伯语、希伯来文等都是从右到左书写supportsRtl属性值为true时表示支持这种从右向左的文字系统。可是常用的中文、英文都是从左往右书写根本用不着从右到左的倒排共嗯那个因此若无特殊情况可把supportsRtl属性值由默认的true改为false。 关闭备份与倒排功能之后application节点变成了下面这样 applicationandroid:allowBackupfalseandroid:iconmipmap/ic_launcherandroid:labelstring/app_nameandroid:roundIconmipmap/ic_launcher_roundandroid:supportsRtlfalseandroid:themestyle/Theme.Chapter102.精简无用资源 同样打开新项目种模块级别的build.gradle.kts发现buildTypes节点下面是这样的 buildTypes {release {isMinifyEnabled falseproguardFiles(getDefaultProguardFile(proguard-android-optimize.txt),proguard-rules.pro)} }可见有个isMinifyEnabled 属性默认值false该属性的字面意思为是否启用最小化如果将它设置为true则Android Studio在打包APK时会惊醒以下代码处理 压缩代码移除各种无用的实体包括类、接口、方法、属性、临时变量等。混淆代码把类名、属性名、方法名、实例名、变量名替换为简短且无意义的名称例如Student类的名称可能改为a方法getName的名称可能改为b等。 App的Java代码经过压缩和混淆之后打包生成的APK文件会随着变小。除了代码之外应用项目还包括各种资源文件若想移除无用的资源文件包括XML布局和图片就要引入新属性shrinkResources并将该属性值设置为true这样Android Studio在打包APK时会自动移除无用的资源文件。同时开启代码压缩和资源压缩的buildTypes节点示例如下 buildTypes {release {isMinifyEnabled trueproguardFiles(getDefaultProguardFile(proguard-android-optimize.txt),proguard-rules.pro)} }3.压缩图片大小 由于手机屏幕的尺寸有限原始的高清图片与有损压缩后的图片在视觉上没有太大差别因此适当压缩图片质量也是减少APK体积的一个重要途径。App传统的资源图片主要有JPG和PNG两种格式 对于JPG图片来说利用Photoshop打开图片。然后将图片另存即可选择一个合适的压缩率保存即可。 对于PNG图片利用Photoshop打开图片。然后将图片另存选择“存储为Web所用格式”在打开的对话框中的右上角选择保存格式为“PNG-8”然后保存文件即可完成图片压缩。 规范处理 本节介绍App上线前必做的准备工作包括如何正确设置App的版本编号和版本名称、如何把App从调试模式切换到发布模式、如何给多个渠道同时打包APK文件。 版本设置 每个App都有3个基础信息第一个App的图标图标文件为res/mipmap-***目录下的ic_launcher.png第二个是App的名称名称文字保存在res/values/strings.xml的app_name当中第三个是App的版本号版本信息包括build.gradle.kts的versionCode与versionName两个参数其中versionCode为纯数字的版本编号versionCode为带点号的字符串格式如“数字.数字.数字”。 App图标和App名称都好理解在手机桌面上也能看到App的图标和名称那么为什么App还需要版本编号与版本名称这样的版本信息呢这是因为App需要经常升级但不允许App降级也就是说一旦安装了某个版本的App那么之后只能安装版本更新的同名App不能安装版本更旧的同名App。这种只能升级不能降级的判断就依赖于每个APK设定的版本号versionCodeversionCode的数值越大表示该安装包的版本越高versionCode的数值越小表示该安装包的版本越低。依据当前App的版本号与待安装APK的版本号系统方能比较得知是否允许升级App。 至于版本名称versionName则用来标识每次App升级的改动程度按照通常的版本名称格式“数字.数字.数字”第一个数字为大版本号每当有页面改版或代码重构等重大升级时大版本号要加1后面两个数字清零第二个数字为中版本号每当要更新局部页面或添加新功能时中版本号要加1第三个数字清零第三个数字为小版本号每当界面有微调或问题修复时小版本号加1。 每次App升级重新导出APK的时候versionCode与versionName都要一起更改不能只改其中一个。并且升级后的versionCode与versionName只能比原来的大不能原来小。如果没有按照规范修改版本号就产生以下问题 版本号比已安装的版本号小在安装时系统直接提示失败因为App只能做升级操作不能做降级操作。在升级系统应用手机厂商内置的应用非普通应用时如果只修改versionName没修改versionCode重启手机后会发现更新丢失该应用被还原到升级前的版本。这是因为对于系统应用Android会检查versionCode的数值如果versionCode不大于当前已安装的版本号本次更新就被忽略了。 除了系统要求检查应用的基础信息App又是也需要获取自身信息比如应用图标可以从资源图片获取应用名称可调用getString方法来获取。其他像应用包名、应用版本等信息可以编译配置工具defaultConfig获取该类提供了几个配置属性说明如下 applicationId应用包名。buildTypes编译类型。为debug表示这是调试包为release表示这是发布包。versionCode应用的版本编号。versionName应用的版本名称。 下面是获取App基础信息的代码例子 public class AppVersionActivity extends AppCompatActivity {private static final String TAG AppVersionActivity;Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_app_version);ImageView iv_icon findViewById(R.id.iv_icon);iv_icon.setImageResource(R.mipmap.ic_launcher); // 应用图标取自ic_launcherTextView tv_desc findViewById(R.id.tv_desc);try {PackageManager packageManager getPackageManager();PackageInfo packageInfo packageManager.getPackageInfo(getPackageName(), 0);// 应用名称取自app_name应用包名、版本号、版本名称均来自BuildConfigString desc String.format(App名称为%s\nApp包名为%s\n App版本号为%d\nApp版本名称为%s,getString(R.string.app_name), packageInfo.packageName,packageInfo.getLongVersionCode(), packageInfo.versionName);tv_desc.setText(desc);} catch (PackageManager.NameNotFoundException e) {e.printStackTrace();Log.d(TAG, exception: e.getMessage());}} }运行App看到App版本信息的获取页面如下图所示可见分别展示了App的图标、名称、包名以及版本编号和版本名称。 发布模式 为了编码调试方便开发者经常在代码里添加日志还在页面上弹出各种提示。这样固然有利于发现bug、提高软件质量不过调试信息过多往往容易泄露敏感信息例如用户的账号密码、业务流程的逻辑等。从保密角度考虑App在上线必须去掉多余的调试信息也就是生成发布模式的安装包与之相对的时开发阶段的调试模式。 建立发布模式拥有下列两点优势 保护用户的铭感账户信息不被泄露。保护业务逻辑与流程处理的交互数据不被泄露。 发布模式与调试模式的安装包很区分通过菜单Generate Signed Bundle/APK…导出安装包的打包对话框在Build Variants一栏即可选择安装包类型。选中release时表示生成发布模式的安装包选中debug时表示生成调试模式的安装包。 发布模式不是直接删掉调试代码而是通过某个开关控制是否调试信息因为App后续还得修改、更新、重新发布这个迭代过程要不断调试从而实现并验证新功能。App代码可通过代码boolean isDebuggable (0! (getApplicationContext().getApplicationInfo().flags ApplicationInfo.FLAG_DEBUGGABLE));判断当前是发布模式还是调试模式此值为false表示处于发布模式为true表示处于调试模式。于是利用此方法能够控制是否打开日志在开发阶段导出调试包在上架阶段导出发布包这样日志只会在调试包中打印日志不会在发布包中打印。 控制调试信息的工具类主要有两种分别对Log工具和Toast工具加以封装说明如下 1.Log日志 Log工具用于打印调试日志。在App运行过程中日志信息会输出到Logcat窗口。因为最终用户不关心App日志所以除非特殊情况发布上线的App应屏蔽所有日志信息。下面是封装了调试模式的Log工具代码 public class LogUtil {public static boolean isDebug false; // 标志位需要在启动App时同步public static void v(String tag, String msg) {if (isDebug) {Log.v(tag, msg); // 打印冗余日志}}public static void d(String tag, String msg) {if (isDebug) {Log.d(tag, msg); // 打印调试日志}}public static void i(String tag, String msg) {if (isDebug) {Log.i(tag, msg); // 打印一般日志}}public static void w(String tag, String msg) {if (isDebug) {Log.w(tag, msg); // 打印警告日志}}public static void e(String tag, String msg) {if (isDebug) {Log.e(tag, msg); // 打印错误日志}} }2.提示Toast Toast工具在界面下方弹出小窗给用户一两句话的提示小窗暂停一会后消失。由于Toast窗口无交互动作样式也基本固定因此除了少数弹窗在发布时予以保留其他弹窗都应在发布时屏蔽。下面是封装了调试模式的Toast工具代码 public class ToastUtil {public static boolean isDebug false; // 标志位需要在启动App时同步// 不管发布模式还是调试模式都弹出提示文字public static void show(Context ctx, String desc) {Toast.makeText(ctx, desc, Toast.LENGTH_SHORT).show();}// 调试模式下弹出短暂提示public static void showShort(Context ctx, String desc) {if (isDebug) {Toast.makeText(ctx, desc, Toast.LENGTH_SHORT).show();}}// 调试模式下弹出长久提示public static void showLong(Context ctx, String desc) {if (isDebug) {Toast.makeText(ctx, desc, Toast.LENGTH_LONG).show();}} }除此之外AndroidManifest.xml也要区分发布模式与调试模式。应用上架之后若无特殊情况开发者都不希望activity和service对外部开放所以要在activity和service标签下分别添加属性android:exportedfalse表示该组件不允许对外开放。 多渠道打包 对于很对大型App来说针对不同渠道进行精细化运营是必不可少的并且客观上也要求对App分渠道管理。这里所谓的渠道指的是提供App下载的各大应用商店尤其是各大手机厂商预装的自家应用商店包括荣耀、小米、OPPO、vivo等品牌。根据不同渠道打造对应的App安装包带来的好处包括但不限于以下几点 各厂商的底层系统有着不同的适配要求需要分别加以定制。有助于统计各家渠道的App下载量、用户数量以及业务交易量。有助于统计各家厂商的App用户分别展开精准营销活动。 那么应该如何应对App分渠道打包呢倘若每打开一个安装包就要手工改配置手工导出APK无疑费力费神。其实略施小计通过修改build.gradle.kts即可实现自动划分渠道打包的功能。 我们只需给android节点添加flavorDimensions与productFlavors配置指定风味维度与产品风味表示开启多渠道打包功能。配置如下 android {// ......flavorDimensions versionproductFlavors {create(honor) {dimension versionapplicationIdSuffix .honorversionNameSuffix -honor}create(xiaomi) {dimension versionapplicationIdSuffix .xiaomiversionNameSuffix -xiaomi}create(oppo) {dimension versionapplicationIdSuffix .oppoversionNameSuffix -oppo}create(vivo) {dimension versionapplicationIdSuffix .vivoversionNameSuffix -vivo}} }点击同步按钮然后依次选择菜单Build-Generate Singned Bundle/APK…在最后一页的打包对话框中看到多个渠道名称如下图 选中列表中的小米Debug和Release两个版本然后点击Create按钮开始打包。稍等片刻即可在设置的目标路径看到打包好的各渠道安装包了安装包文件名形如app-xiaomi-release.apk这样。 安全加固 本节介绍如何对APK安装包进行安全加固首先通过反编译工具成功破解App源码从而表明对APK实施安全防护的必要性然后说明代码混淆的开关配置并演示代码混淆如何加大源码破解的难度最后描述怎样利用第三方加固网站对APK进行加固以及如何对加固包进行重签名。 反编译 编译是把代码编译为程序反编译是把程序破解为代码。 谁都不想自己的劳动成果被别人窃取何况是辛辛苦苦敲出来的App代码。然而由于Java语言的特性Java写的程序往往很容易被破解只要获得App的安装包就能通过反编译工具破解出改App的完整源码。开发者绞尽脑汁上架一个App结果这个App却被他人从届满到代码都“山寨”了那可是欲哭无泪。为了说明代码安全的重要性下面详细介绍反编译的完整过程警醒开发者防火、防盗、防破解。 首先准备反编译的3个工具分别是apktool、dex2jar、jd-gui注意下载它们的最新版本。下面是这3个工具的简要说明。 apktool对APK文件解包主要用来解析res资源和AndroidManifest.xml。dex2jar将APK包中的classes.dex转为JAR包JAR包就是Java代码的编译文件。jd-gui将JAR包反编译为Java源码。 以Windows环境为例下面是反编译APK的具体步骤。 依次选择开始菜单-Windows系统-命令提示符打开命令窗口进入apktool所在目录运行命令“apktool.bat d -f 解包后的保存目录 待处理的APK文件名”等待反编译过程如下图所示。 反编译完成即可在apktool目录下看到破解目录。apktool的用途是解析出res资源包括AndroidManifest.xml和res/layout、res/values、res/drawable等目录下的资源文件。用压缩软件如WinRAR打开APK文件发现APK安装包其实是一个压缩文件使用WinRAR打开的APK文件的目录结构如下图。 先从APK包中解出classes.dex文件并打开classes.dex将dex开头改为036据了解dex2jar-2.0版本的工具只支持dex开头字节为035和036的Android版本由于高版本的Android编译生成的dex开头字节不同如Android 7.0的dex开头字节是037Android 8.0的dex开头字节是038Android9.0的dex的开头字节是039。 再进入dex2jar所在的目录运行命令.\d2j-dex2jar.bat classes.dex等待转换过程如下图。 转换完毕即可在dex2jar目录下看到新文件classes-dex2jar.jar该JAR包即为Java源码的编译文件。双击打开jd-gui.exe用鼠标把第二步生成的classes-dex2jar.jar拖到jd-gui界面中程序就会自动将JAR包反编译为Java源码反编译后的Java源码目录结构如下 在jd-gui界面依次选择菜单File-Save All Source输入保存路径再单击保存按钮即可在指定目录下生成ZIP文件解压ZIP文件就能看到反编译后的全部Java代码了。 由此可见反编译过程不但破解了Java代码而且res目录下的资源文件也被一起破解了所以如果App不采取以下保护措施整个工程源码就会暴露在大庭广众之下。 代码混淆 前面讲到反编译就能够破解App的工程源码因此有必要对App源码采取防护措施代码混淆就是保护代码安全的措施之一。Android Studio已经自带混淆器ProGuard它的用途主要有下列两点 压缩APK包的大小删除无用代码并简化部分类名和方法名。加大破解源码的难度部分类名和方法名被重命名使得程序逻辑变得难以理解。 代码混淆的配置文件其实一直存在每次在Android Studio新建一个模块该模块的根目录下会自动生成文件proguard-rules.pro。打开build.gradle.kts在android-buildTypes-release节点下可以看到两行编译配置其中便用到了proguard-rules.pro isMinifyEnabled false proguardFiles(getDefaultProguardFile(proguard-android-optimize.txt),proguard-rules.pro )由于Android Studio默认不做代码混淆因此上面第一行的isMinifyEnabled 为false表示关闭混淆功能要把该参数改为true才能开启混淆功能。上面第四行指定了proguard-rules.pro作为本模块的混淆规则文件该文件保存着各种详细的代码混淆规则。 对于初学者来说采用Android Studio默认的混淆规则即可所以无需改动proguard-rules.pro只要把build.gradle.kts里的isMinifyEnabled改为trueAndroid Studio就会按照默认的混淆规则对App代码进行混淆处理。 经过代码混淆后重新生成的APK安装包再用反编译工具破解APK文件反编译后的Java源码结构如下所示 从图中可以看出混淆后的包名与类名都变成了a、b、c、d这样的名称无疑加大了黑客理解源码的难度。 第三方加固及重签名 App经过代码混淆后初步结束了裸奔的状态但代码混淆只能加大源码破译的难度并不能完全阻止被破解。除了代码破解外App还存在其他安全风险比如二次打包、篡改内存、漏洞暴露等情况。对于这些安全风险Android Studio基本无能为力。因此鉴于术业有专攻不妨把APK为文件交给专业网站进行加固处理。例如360加固其网址是https://jiagu.360.com/。开发者要先注册并购买服务后才能使用。 APK加固后可能会破坏原来的签名也就无法在手机上安装此时要对该文件进行重签名才能成为合法的APK安装包。重签名可使用专门的签名软件比如爱加密的APKSign等。 工程源码 文章涉及的所有代码可点击工程源码下载。
http://www.hkea.cn/news/14304200/

相关文章:

  • 做网站推广的工作好吗苏州中设建设集团有限公司网站
  • 开一个做网站的工作室cn域名的网站
  • 在哪里可以学习做网站网站制作报价维持地建网络
  • 新手如何入侵一个网站手机做推广比较好的网站
  • 有哪些做PPT背景网站厦门营销型网站建设公司
  • 设计网站100个免费百度云盘网站开发
  • 定州市住房和建设局网站莱芜规划
  • 云主机建网站软件北京网站制作团队
  • 做门头上那个网站申报wordpress调用文章标签
  • 做彩票网站12306网站谁做的
  • php能自己做网站吗网站底部备案字体设置
  • 网页设计制作手机网站便宜的做网站公司
  • 做企业网站怎么接活网站项目设计与制作
  • 吉林市建设厅网站互联网营销专家
  • 厦门怎么没有 网站备案wordpress 关闭warning
  • 广州番禺区地图高清版大图seo外包 杭州
  • 网站颜色搭配实例网页版微信登录显示二维码已失效
  • 网站怎么做才能将名声打响珠宝网站建设公司
  • 注册网站有什么用网站推广 软件
  • 顺义做网站的厂家杭州网站建设响应式
  • 鲜花团购网站建设广州汽车网络推广服务
  • 购物网站后台模板网站推广策划案
  • 网站备案号 查询在手机上怎么制作网站
  • 苏州大型网站建设公司解决wordpress后台加载非常缓慢
  • 湖北省建设厅网站怎么打不开广州建站快车
  • 建设网站书陕西网站建设品牌公司推荐
  • 免费网站建设排行榜wordpress的文章置顶有什么用
  • 太原网站制作小程序郑州制作网站推荐
  • 用什么软件上传网站网站开发的四个高级阶段包括
  • 湖北聚四方建设有限公司网站谁给个能用的网址