//如果下载失败,则例外… .//
public void onFailure(例外e){
//…然后做某事//
}
})
.addOnSuccessListener(new OnSuccessListener(){
@覆盖
//如果模块已成功下载… //
public void onSuccess(Integer sessionId){
//…然后做某事//
mySessionId = sessionId;
}
});
}
}
您现在可以向动态功能模块添加代码和资源,用户可以在运行时请求模块。
[]( )三 购买前先试用:提供即时应用APK
====================================================================================
它可能不是传统的,可安装的APK,但您可以将应用程序的一部分作为轻量级,独立的Instant Apps APK提供,然后用户可以按需加载。对于那些在极其有限的存储或限制性数据计划中苦苦挣扎的人来说,Instant Apps可能是他们体验您的应用程序的唯一可行方式。
在我们的[三部分Instant Apps系列中,我们创建了一个]( )映射到唯一URL [的多功能Instant Apps APK]( )。URL映射使您的Instant App可以从Web上支持超链接的任何位置访问,包括论坛,推文,Facebook帖子和博客。但是,URL映射也是一个多步骤过程,需要您拥有一个可以托管项目`assetlinks.json`文件的Web域。
在最新版本的Android Studio中,创建Instant Apps APK变得更加容易,因为现在可以创建一个未映射到_任何_ URL 的即时应用程序,从而消除了与URL映射相关的所有复杂性。
在您发布无网址即时应用后,用户可以通过应用的Google Play商家信息上的“ \*\*立即尝试”\*\*按钮访问该应用。
要创建这种“无URL”即时应用程序,您需要:
* Android Studio 3.2或更高版本。
* Instant Apps Development SDK 1.3.0或更高版本。
* 最新版本的Android SDK Build和Platform工具。
支持Instant Apps的项目具有独特的结构。如果您将模块化作为标准应用程序开发过程的一部分进行练习,那么您可能只需要对项目进行一些调整,但如果您的项目_没有_模块化,那么请准备花一些时间重组它。
要支持Instant Apps,您需要创建以下模块:
* \*\*应用模块。\*\*这是“标准”可安装应用程序模块。
* \*\*基础模块。\*\*这包含将在您的所有项目模块中使用的代码和资源,例如您的应用程序的启动器图标。
* \*\*功能模块。\*\*其中包含提供独立功能所需的代码和资源。
* \*\*Instantapp模块。\*\*这是一个容器,它最终会占用您项目的每个功能模块,并将它们转换为Instant App APK。
有关此独特项目结构的更详细信息,请查看:[什么是Android即时应用程序?]( )
* \[Android SDK
什么是Android即时应用程序?
杰西卡索恩斯比\]([https://www.colabug.com/goto/aHR0cDovL2NvZGUudHV0c3BsdXMuY29tL3R1dG9yaWFscy93aGF0LWFyZS1hbmRyb2lkLWluc3RhbnQtYXBwcy0tY21zLTI5Mjgz]( ))
[]( )
如果您正在开始一个新项目,那么您很幸运:您可以创建一个已经具有Instant Apps结构的空白项目。只需正常创建一个新项目,但在提示时选择**此项目将支持即时应用程序**。
然后,您可以正常地为每个模块添加代码和资源。
要测试您的无URL即时应用程序,您需要一个兼容设备,根据官方Android文档,它是运行Android 5.1或更高版本的“最”物理设备。如果您正在使用模拟器,那么您将需要使用Android 8.1或更高版本,x86架构并包含Google API的AVD(Android虚拟设备)。您还需要在测试设备或AVD上登录有效的Google帐户。
要将Instant App置于测试中,请从Android Studio工具栏中选择**Run** > **Run** …,然后选择**Edit Configurations** …
在左侧菜单中,选择**instantapp**。由于我们正在测试无URL的即时应用程序,请找到**URL**字段并删除其中的所有文本。现在选择**Run**。如果设备提示您选择加入Instant App程序,请点击**是,我在**。
您的即时应用程序现在应该出现在屏幕上,无需安装,也无需URL!
在发布应用程序时,您可以完成两次签名过程,以创建单独的可安装和即时应用程序APK - 或者您可以将项目构建为应用程序包。
[]( )四 发布即时应用程序启用的应用程序包
====================================================================================
在Android Studio 3.3 beta 1及更高版本中,您可以将Instant Apps与App Bundle结合使用,以创建一个包含可安装和即时应用程序的\*\*.aab\*\*文件。
要将应用程序设置为发布包含Instant App 的\*\*.aab**文件,请打开项目的**instantapp\*\*模块。
在此模块的**AndroidManifest.xml**文件中,添加以下内容:
<``manifest
xmlns:android``=``"[http://schemas.android.com/apk/res/android]( )"
xmlns:dist``=``"[http://schemas.android.com/apk/distribution]( )"
//Set the targetSandboxVersion to 2//
android:targetSandboxVersion``=``"2"``>
//Add the following//
<``dist:module
dist:instant``=``"true"
/>
</``manifest``>
打开app模块的build.gradle文件,确保您的即时变体versionCode的可安装版本小于其可安装版本:
android {
...
flavorDimensions“flavorDimension”
productFlavors {
即时{
versionCode 1
}
安装{
versionCode 2
}
}
}
从Android Studio菜单栏中选择Build > Generate Signed Bundle / APK,然后照常构建App Bundle,确保使用释放密钥对其进行签名。
[]( )五 删除所有未使用的方法,类,字段,属性和资源
=========================================================================================
未使用的代码和资源很容易找到进入项目的方式,特别是当您使用库时。由于它们为您的应用添加了零值,因此您应该始终追踪并删除不必要的资产,并且有几种工具可以帮助您:
### []( )1.喜欢冒险吗?试试New R8 Code Shrinker
代码缩小可以通过删除未使用的代码和资源来帮助您减小APK的大小。
Android Studio 3.3 beta 1预览了即将推出的R8代码缩小工具,该工具还可以执行desugaring和dexing,据Google称,它比ProGuard更快地缩小代码。
要自己尝试R8,请确保您运行的是Android Studio 3.3 beta 1或更高版本,然后将以下内容添加到gradle.properties文件中:
android.enableR8 =真
### []( )2.使用ProGuard收缩代码
在撰写本文时,R8仍然处于预览状态,因此在它稳定之前,您可能更愿意使用ProGuard从代码中删除未使用的类,方法,字段和属性。
要启用ProGuard,请将以下内容添加到模块级build.gradle文件中:
buildTypes {
发布 {
minifyEnabled是的
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'),'proguard-rules.pro'
}
}
}
请注意,ProGuard可能会删除您的应用程序实际需要的代码,因此您应该在发布之前始终使用ProGuard测试您的项目。
### []( )3.启用资源收缩
一旦启用了代码收缩,就可以使用资源收缩来识别和删除不必要的资源:
buildTypes {
发布 {
//添加以下//
shrinkResources为true
minifyEnabled是的
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'),'proguard-rules.pro'
}
}
}
### []( )4.使用Android Lint改进您的代码
Lint是一种静态扫描工具,可以识别代码中未引用的资源。但是,Lint实际上并未删除这些资源,因此您需要检查其报告并手动删除已识别的资源。
要运行Lint,请从Android Studio工具栏中选择**Analyze** > **Inspect Code** … 如果Lint检测到任何未引用的资源,那么它将在“ \*\*检查结果”\*\*窗口中列出它们。
[]( )六 将PNG,JPEG和BMP转换为WebP
========================================================================================
如果您的项目包含许多drawable,那么压缩它们可以显着减小APK的大小。
如果您的项目`minSdkVersion`是18或更高,那么您可以通过将它们转换为WebP格式来压缩您的PNG,JPEG和BMP。
首先,按住Control键并单击要转换的drawable,然后选择**Convert to WebP …**选择有损或无损编码。选择当编码结果大于原始图像时跳过图像,然后单击**确定**以转换图像。
[]( )七 使用Android Studio的APK分析器检查您的APK
==================================================================================================
有时,您可能无法完全确定导致APK失控的原因。
您可以使用Android Studio的新_APK分析器_识别出与APK大小相关的最大贡献者。此工具可让您探索不同类别文件的绝对大小和相对大小,甚至是单个文件的大小,这样您就可以_确切地_知道应该集中精力的位置。
要分析APK,只需从Android Studio的菜单栏中选择**Build** > **Analyze APK即可**。
在随后的窗口中,选择有问题的APK。APK分析器将在新面板中打开。
对于每个文件和文件夹,APK分析器显示:
* \*\*原始文件大小。\*\*这是磁盘上此项目的解压缩大小。
* \*\*下载大小。\*\*这是项目的估计压缩大小,因为它将由Google Play提供。
* \*\*总下载大小的百分比。\*\*此项目代表的APK总下载大小的百分比。
这不是APK分析器提供的唯一功能。
想象一下,你已经成功削减了APK的大小,并发布了一个轻量级的应用程序,在Google Play上积累了5星级的评论 - 这并不意味着你可以不再担心APK的大小!在某些时候,您将要发布更新,这意味着APK大小将再次成为主要关注点。
虽然监控你的APK从一个版本发展到下一个版本总是一个好主意,但如果APK大小有所增加,那么你_肯定_想仔细看看发生了什么。
您可以使用APK分析器突出显示当前APK与之前的APK之间的所有差异,这可以帮助您了解可以优化的区域和资产,甚至可以完全删除。
要比较APK,首先从Android Studio的菜单栏中选择**Build** > **Analyze APK**。
然后选择最新版本的APK。在APK分析器的右上角,选择\*\*与之前的APK比较…\*\*接下来,选择以前版本的APK。应该会出现一个弹出窗口,突出显示当前APK与之前APK之间的所有差异。
[]( )八 不要忘记Android Go!
===================================================================================
新兴市场代表了全球增长最快的智能手机受众,而Vivo和Oppo等品牌的崛起已经证明,预算设备有可能主导这个快速扩张的市场。
为了帮助Android吸引这些全新且不断增长的受众,谷歌发布了Android Go,这是一款具有性能和存储改进功能的Android版本,旨在为预算友好型设备提供更好的体验,包括内存小于1GB的设备。
Android Go用户可以访问整个Google Play商店,但Google会突出显示针对Android Go优化的应用,包括用户设备上占用少于40MB的应用。
按照本文中的建议,您应该能够为使用它的_每个_人显着减小APK的大小。但是,如果您想专门针对Android Go用户进行一些额外缩减,那么您可以使用[Android的多APK功能]( )发布针对Android Go平台优化的APK。
要创建专用的Android Go应用,您需要创建一个与“常规”应用具有相同包名和签名证书的APK,但具有唯一的版本代码。
在创建Android Go APK时,您还需要将以下内容添加到您的Manifest中:
### []( )想学习更多Android知识,或者获取相关资料请加入Android技术开发交流2群:935654177。本群可免费获取Gradle,RxJava,小程序,Hybrid,移动架构,NDK,React Native,性能优化等技术教程!
**自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。**
**深知大多数Android工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!**
**因此收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。**
![img](https://img-blog.csdnimg.cn/img_convert/7ff34d960ad4255ef5c397052d638787.png)
![img](https://img-blog.csdnimg.cn/img_convert/1e243fa5a9867b9f659337b9d234608a.png)
![img](https://img-blog.csdnimg.cn/img_convert/470a56c94a98e7ce3ca825c8a6d08a04.png)
![img](https://img-blog.csdnimg.cn/img_convert/6a06cd5ec64eba148681fb13867fb04d.png)
![img](https://img-blog.csdnimg.cn/img_convert/14563f1978b75e9350fdae22048d589a.png)
![img](https://img-blog.csdnimg.cn/img_convert/77e8e5e3006c8c6230d10e6e64066ed5.png)
![img](https://img-blog.csdnimg.cn/13f2cb2e05a14868a3f0fd6ac81d625c.png)
**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点,真正体系化!**
**由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新**
**如果你觉得这些内容对你有帮助,可以添加V获取:vip204888 (备注Android)**
![img](https://img-blog.csdnimg.cn/img_convert/34510fccbf2ace9fc32ee0e141ea0dd0.png)
### 尾声
以薪资待遇为基础,以发展为最终目标,要在高薪资的地方,谋求最好的发展!
下面是有几位Android行业大佬对应上方技术点整理的一些进阶资料。
![](https://img-blog.csdnimg.cn/img_convert/dd4c795533998688da90dce24feb8192.webp?x-oss-process=image/format,png)
**一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**
![img](https://img-blog.csdnimg.cn/img_convert/bafaf9a1254c630534b4825fc372af1a.png)
**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点,真正体系化!**
**由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新**
**如果你觉得这些内容对你有帮助,可以添加V获取:vip204888 (备注Android)**
[外链图片转存中...(img-xV3UOLOO-1712894785339)]
### 尾声
以薪资待遇为基础,以发展为最终目标,要在高薪资的地方,谋求最好的发展!
下面是有几位Android行业大佬对应上方技术点整理的一些进阶资料。
[外链图片转存中...(img-fc2dtc7D-1712894785339)]
**一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**
[外链图片转存中...(img-2cRR4uDq-1712894785339)]