安卓设计模式最佳实践(二)
原文:
zh.annas-archive.org/md5/CCA23E4331AE2938F4F732DE02106746译者:飞龙
第七章:添加外部库
一个 Android 应用无法独立完成所有功能,它总是需要外部 jars/库的陪伴来实现不同的目标和提供各种服务。几乎每个在商店发布的免费 Android 应用都嵌入了广告,这需要使用外部组件来实现。在 Android 应用中嵌入广告是当今应用开发的一个重要方面。在本章中,我们将继续使用前几章开发的 DistanceConverter 应用,并利用外部库AdMob在我们的应用中嵌入广告。内容包括以下方面:
-
在
AdMob网站创建一个账户 -
添加站点/应用
-
添加广告沉思网络
-
在应用中添加
AdMob -
在清单文件中进行更改
-
在布局文件中添加
AdMob小部件/视图 -
运行应用程序
在 AdMob 网站创建一个账户
AdMob是我们在 Android 应用中嵌入广告的一种方式。要使用AdMob,我们首先需要在www.admob.com网站注册并获取一个账户。注册时,请访问该网站,并在右侧点击使用 AdMob 注册,然后填写表格进行注册。
下面的截图展示了注册表格:
如果我们有现有的 Google ID,可以使用它,否则前面的步骤会创建一个并将其与AdMob账户关联。
添加站点/应用
创建账户后,我们需要添加一个站点/应用(基本上,它标识或作为广告网络放置广告的唯一句柄)。添加站点/应用需要执行以下步骤:
-
从站点与应用菜单中选择添加站点/应用,如前一个截图所示。随后会出现添加站点/应用的屏幕,如下一个截图所示:
-
选择Android 应用,如前一个截图所示,并填写其他详细信息。因为我们的应用不在市场,所以在Android 包 URL中使用http://,如前一个截图所示。
-
选择相应的类别,在本例中我们使用了工具,并在应用描述文本区域添加一些描述。同时,其他字段保持默认,输入验证码并创建站点。这之后会出现以下屏幕:
-
接下来,点击下载 AdMob Android SDK按钮下载
AdMobSDK。下载 SDK 后,点击前往站点/应用按钮,我们的站点应该已经被添加,并会出现在站点列表中,如下一个截图所示: -
状态显示为红色,因为它还没有收到对该网站的任何广告请求。一旦开始收到对该网站的广告请求,它将自动变为绿色。
选择广告网络调解
添加网站/应用程序并下载 SDK 完成后,让我们开始添加广告网络调解(AdMob 调解)。它与其他广告网络协调,帮助我们最大化填充率(表示满足应用发送的广告请求的广告请求的百分比)并增加货币化。它确保随时选择合适的网络来投放广告。有关 AdMob 调解的更多信息,请参考以下网址:
support.google.com/admob/topic/2403413?hl=en&ref_topic=1307209
要添加广告网络调解,请按照给定的步骤操作:
-
导航到网站与应用菜单下的广告网络调解,按照以下步骤操作,如下图所示:
-
选择广告大小为横幅 - 通常 320x50,以支持大多数 iPhone 和 Android 手机在纵向模式下的显示,以及平台为Android。
有关横幅大小和决策的更多信息,请参考以下网址:
developers.google.com/mobile-ads-sdk/docs/admob/smart-banners -
接下来,选择自动刷新,然后指定刷新率,然后点击保存并继续按钮。将会出现以下屏幕。从中选择广告网络,然后如以下截图所示点击继续:
-
从前一个截图中的选项中选择您希望的网络。
注意
我们需要在屏幕底部为所选的网络提供发布者凭据。在本例中,我们有 AdMob 的凭据,因为我们刚刚注册并且只选择了AdMob 网络,如前一个截图所示。然而,只要我们有凭据详情,我们可以自由添加任何数量的网络。此外,我们可以在任何时间点添加任何网络。
将 AdMob SDK 添加到项目中
让我们解压之前下载的 AdMob SDK zip 文件,应该会得到文件夹 GoogleAdMobAdsSdkAndroid-6.*.*。在该文件夹下有一个 GoogleAdMobAdsSdk-6.x.x.jar 文件。将这个 JAR 文件复制到项目的 libs 文件夹中,如下截图所示:
可以以同样的方式添加其他 Java 库以在我们的项目中使用,并且为了在项目中引用 Android 库,相关信息可以在以下网址找到:
developer.android.com/tools/projects/projects-eclipse.html
在清单文件中做出更改
AdMob需要通过互联网请求来获取广告。因此,需要在AndroidManifest.xml文件中添加此权限,如下代码所示:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
换句话说,它还有助于 AdMob SDK 在发送请求之前确定当前可用的互联网连接。
同时,在文件中添加负责获取和显示广告的AdView活动,如下代码所示:
<activity
android:name="com.google.ads.AdActivity"android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize" />
有关集成的更多信息,请参考以下 URL:
developers.google.com/mobile-ads-sdk/docs/
在布局文件中添加 AdMob 小部件/视图
要添加AdMob视图,请在竖屏模式的layout/activity_main.xml文件中添加以下代码:
<com.google.ads.AdView
android:id="@+id/adView"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
ads:adSize="SMART_BANNER"
ads:testDevices="TEST_EMULATOR"
ads:adUnitId="a1516e8871e5b38"
ads:loadAdOnCreate="true"/>
同样,在横屏模式的layout-land/activity_main.xml文件中添加同一部分代码。添加后,将显示错误,这是因为我们还没有为AdView定义命名空间。我们接下来会做这个,错误就会消失。
在 XML 的顶部命名空间部分,与其他命名空间一起添加meta标签:
让我们回顾一下之前使用过的AdView的一些重要标签及其值:
| 项目 | 值 |
|---|---|
ads:adSize | SMART_BANNER:根据屏幕类型和方向使用屏幕宽度调整横幅大小。 |
ads:testDevices | 用于测试代码是否正常。TEST_EMULATOR用于模拟器。如果用于测试,也可以指定设备 ID。从开发转移到生产时应移除。找到设备 ID 的最简单方法是从AdMob SDK 的日志输出中。 |
ads:adUnitId | 发布者 ID。替换为相应的 ID。 |
ads:loadAdOnCreate | 通过膨胀创建视图,并向AdMob发送广告请求。 |
在前一个案例中,我们是通过 XML 加载Adview并发出请求。还有一种方法,通过在MainActivity.java文件的onCreate()方法中放置以下代码来实现,如下代码片段所示:
adView = (AdView)findViewById(R.id.adView);
AdRequest re = new AdRequest();
re.setTesting(true);
adView.loadAd(re)
提示
在 Android 应用准备发布到商店之前,确保移除测试模式。
运行应用程序
经过所有辛勤的工作后,让我们运行应用程序来看看它的样子。在横屏模式下,广告将如下截图所示出现:
在竖屏模式下,广告将如下截图所示出现:
第一次AdMob广告可能需要 1 到 2 分钟才能显示,所以请耐心等待。
总结
在本章中,我们学习了如何通过在 DistanceConverter 应用程序中整合AdMob移动广告,来添加外部库。
在下一章中,我们将学习签署并准备发布应用程序需要什么。
第八章:签名和分发 APK
所有至今为止的辛勤工作,除非我们分发应用供他人使用,否则都是徒劳的。安卓应用在上架分发前必须进行签名。任何安卓应用,无论是用于模拟器,还是分发给朋友、亲戚测试,或者发布到 Google Play 商店,都需要进行电子签名。在本章中,我们将学习如何签名并发布供他人使用。本章将涵盖以下内容:
-
APK (Android 包)
-
准备发布
-
发布编译
-
生成私钥
-
使用 Eclipse ADT 进行发布
-
发布到 Google Play
APK – 安卓包
安卓包(APK)简单来说,类似于可运行的 JAR 或可执行文件(在 Windows 操作系统上),它包含了运行应用所需的一切。
安卓生态系统使用虚拟机,即Dalvik 虚拟机(DVM)来运行 Java 应用。Dalvik 使用自己的字节码,这与 Java 字节码有很大不同。
Android SDK 下的工具dx将我们的 Java 类转换为.dex(Dalvik 可执行文件)。
工具aapt(安卓资源打包工具)将.dex文件和应用资源(XML 和图片)打包到.apk文件中。
准备发布
经过编码和测试的辛勤工作后,应用需要被打包以便发布。打包包括以下步骤。
发布编译
这是发布和分发的第一步。它包括在应用的清单文件中设置包名,配置应用属性,以及发布前的编译。它们包括以下步骤:
-
选择合适的包名:一旦应用发布,就无法撤回,因此需要仔细考虑并选择一个合适的包名。包名可以在应用的清单文件中设置。
-
禁用调试:我们需要确保在发布之前禁用调试。要禁用调试,可以在代码中注释或移除
Log()方法调用。此外,通过从<application>标签中移除android:debuggable属性也可以禁用调试。 -
指出应用图标:每个应用都需要有自己的图标。请确保图标遵循图标指南:
developer.android.com/guide/practices/ui_guidelines/icon_design_launcher.html。图标可以通过使用<application>标签的 icon 属性来指定。
版本控制:这是发布和维护最重要的方面。版本标识应用程序的发布版本,并确定其更新方式。简单来说,每次发布时版本号必须递增。如果没有版本号,未来更新几乎是不可能的。版本信息由以下两个属性提供:
android:versionCode | 这是一个表示应用程序版本的整数。 |
|---|---|
android:versionName | 这是显示给用户以识别设备中安装内容的字符串。 |
这两个属性都可以在 <manifest> 元素下指定。
- 检查权限清单文件:它应该只使用
<uses-permission>标签在清单文件中指定相关权限。
生成私钥
安卓应用程序必须使用我们自己的私钥进行签名。它标识与该应用程序相关联的人、公司或实体。这可以通过使用 Java SDK 中的程序 keytool 来生成。以下命令用于生成密钥:
keytool -genkey -v -keystore <filename>.keystore -alias <key-name> -keyalg RSA -keysize 2048 -validity 10000
我们可以为每个发布的应用程序使用不同的密钥,并为它指定一个不同的名称以进行标识。另外,谷歌期望有效期至少为 25 年或更长时间。一个非常重要的考虑是要备份并安全地存储密钥,因为一旦密钥泄露,就不可能更新已经发布的应用程序。
签名
获取私钥后,我们需要对应用程序进行签名。这是使用 Java SDK 中的程序 jarsigner 完成的。使用以下命令:
jarsigner -verbose -sigalg MD5withRSA -digestalg SHA1 -keystore my-release-key.keystore
my_application.apk alias_name
对齐
一旦 APK 文件被签名,就需要对其进行优化。为此,我们使用 Android SDK 中的 tools/ 目录下的 zipalign 工具。使用方法如下:
zipalign -v 4 your_project_name-unaligned.apk your_project_name.apk
使用 Eclipse ADT 发布
使用 Eclipse Android 开发工具 (ADT),准备发布 部分中提到的所有步骤都可以轻松完成。让我们使用 Eclipse ADT 为前一章中的 DistanceConverter 准备发布。
按照以下步骤操作:
-
右键点击项目 DistanceConverter,然后从上下文菜单中选择 Export。选择 Export Android Application,如下所示截图:
-
Export 向导现在将指导您完成签名过程,包括选择私钥的步骤(如果已经使用工具生成),或者创建新的密钥库和私钥。以下是一些截图,第一张是创建密钥库的截图。
-
现在选择 Create new keystore 并提供 Location 和 Password 的值:
-
在以下屏幕中,我们可以根据下表输入有关密钥创建的其他详细信息:
-
在导出 Android 应用向导中,填写相应的详细信息:
字段 值 别名 DIS– 这是密钥别名名称密码 <密码>有效期 25– 对于在 Google Play 上发布,截至 2033 年 10 月 22 日的期限是必须的名字和姓氏 <姓名>组织单位 个人 组织 个人 市/地区 <城市名称>州/省 <州名称>国家代码(xx) 两个字母代码(例如,US) -
点击完成,结果就会被编译、签名、对齐,并准备好分发。
发布到 Google Play
在 Google Play 上发布非常简单,包括以下步骤:
-
注册 Google Play: 访问并注册
play.google.com/。注册需要 25 美元,过程相当直接,可能需要几天时间才能获得最终访问权限。 -
上传 APK: 注册完成后,用户需要登录并使用上传应用链接上传 APK 文件。此外,他们还需要上传所需的资源,并编辑列表详情,这些是用户在商店浏览应用时将看到的内容。
-
使用发布按钮来完成这项任务。
获取帮助
有关签名和发布的更多信息和支持,请参考以下链接:
摘要
在本章中,我们了解了签名和分发 APK 涉及的步骤,以及如何通过 Eclipse ADT 轻松实现这一过程。