安装Amazon Device Messaging
若要在您的应用中使用Amazon Device Messaging(ADM),首先您需要在开发环境中添加ADM JAR。您可以使用Android Studio或命令行执行此操作。
先决条件
如果您尚未准备就绪,请参阅Amazon Device Messaging概览了解ADM架构。获取凭证介绍了获取用于ADM的初始凭证的过程。
要在项目中使用ADM,请在开发计算机上安装以下内容:
- Android SDK(API 15或更高版本)
- 任何Android SDK系统要求,包括JDK
(安装Android Studio时,这些资源已包含在内。)
将ADM添加到Android Studio
要对基于IDE的项目使用ADM,请将ADM库作为外部JAR添加到该项目中。虽然您可以在任何开发环境中使用ADM,但本节介绍了如何将ADM添加到Android Studio。要将ADM添加到Android Studio:
- 下载Amazon Device Messaging(ADM)SDK,并将zip文件解压到方便的位置。
- 确保您已下载并安装Android Studio的最新版本。
- 在Android Studio中,创建一个新的Android项目,或打开一个现有项目。
-
将文件夹结构从Android更改为Project(项目)。
-
在app文件夹内搜索libs文件夹。
- 从ADM zip文件的解压位置复制amazon-device-messaging-1.1.0.jar文件。
-
将该JAR粘贴到libs文件夹。
-
右击该JAR文件,最后单击Add as library(添加为库)。
这会自动将
implementation files('libs/amazon-device-messaging-1.1.0.jar')
命令添加到build.gradle
文件中。 -
最后,由于您只需在编译时而不是运行时使用库,因此将以下声明从
implementation
更改为compileOnly
。将以下代码:dependencies { implementation files('libs/amazon-device-messaging-1.1.0.jar') }
更改为:
dependencies { compileOnly files('libs/amazon-device-messaging-1.1.0.jar') }
警告: 跳过此步骤会导致运行时错误。
从命令行添加ADM
在执行此过程之前,请更新AndroidManifest.xml文件,如集成您的应用中所述。此外,请确保已安装Apache ANT,并且已正确定义ANT_HOME
、JAVA_HOME
和PATH
环境变量。
- 将目录更改为Android SDK的tools/路径。
-
使用以下语法运行一个命令,其中
<path>
是将创建项目的位置,<target Android platform>
是项目要加入的Android平台。要获取可用平台的列表,请运行android list targets
。android create project --path <path> --target <target Android platform> --activity ADMActivity --package com.example.amazon.adm
- 在新项目的根目录处,创建一个名为ext_libs的新目录。
- 导航到Android/DeviceMessaging/lib目录,然后在Amazon Mobile App SDK中,将JAR文件复制到新的ext_libs目录中。
-
在新项目的根目录处,创建一个包含以下内容的custom_rules.xml文件:
<?xml version="1.0" encoding="UTF-8"?> <project name="custom_rules"> <path id="java.compiler.classpath.path"> <fileset dir="ext_libs" includes="*.jar"/> </path> <property name="java.compiler.classpath" refid="java.compiler.classpath.path" /> </project>
-
要生成项目,请从项目的根目录运行以下命令:
ant debug
确保您采用类似的步骤来配置测试应用的项目。
配置Proguard
如果您使用Proguard,请编辑proguard-rules.pro
文件并添加以下配置:
#这应指向存储ADM JAR的目录
-libraryjars libs
-dontwarn com.amazon.device.messaging.**
-keep class com.amazon.device.messaging.** {*;}
-keep public class * extends com.amazon.device.messaging.ADMMessageReceiver
-keep public class * extends com.amazon.device.messaging.ADMMessageHandlerBase
-keep public class * extends com.amazon.device.messaging.ADMMessageHandlerJobBase