亚马逊设备消息存根!Android Studio

Kar*_*ler 10 android android-studio amazon-device-messaging build.gradle android-gradle-plugin

我正在尝试将Amazon Device Messaging与Android Studio集成.首先我跟着(整合你的app-with-adm).我打电话的时候

ADM adm = new ADM(getActivity());
if (adm.isSupported()) {
    // ...
}
Run Code Online (Sandbox Code Playgroud)

logcat上有这个输出:

E/AndroidRuntime(24472):java.lang.RuntimeException:Stub!

E/AndroidRuntime(24472):at com.amazon.device.messaging.ADM.(Unknown Source)

所以我跟随Amazons(将Amazon Libraries与Android Studio集成)的结果相同.

然后我尝试了这个,没有成功.

我的AndroidManifest.xml看起来像这样:

...
<uses-permission android:name="de.mypackage.permission.RECEIVE_ADM_MESSAGE" />
<uses-permission android:name="com.amazon.device.messaging.permission.RECEIVE" />
<permission android:name=".permission.RECEIVE_ADM_MESSAGE" android:protectionLevel="signature" />
...
<application
    android:name=".MyPackageApplication"
    android:allowBackup="true"
    android:allowClearUserData="true"
    android:hardwareAccelerated="false"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme">
...
    <service android:name=".service.ADMNotificationService" android:exported="false" />

    <amazon:enable-feature android:name="com.amazon.device.messaging" android:required="true" />

    <receiver android:name=".service.ADMNotificationService$MessageAlertReceiver"
        android:permission="com.amazon.device.messaging.permission.SEND">
    <intent-filter>
            <action android:name="com.amazon.device.messaging.intent.REGISTRATION" />
            <action android:name="com.amazon.device.messaging.intent.RECEIVE" />
            <category android:name="de.mypackage"/>
        </intent-filter>
    </receiver>
...
</application>
Run Code Online (Sandbox Code Playgroud)

本地build.gradle看起来像这样:

...

dependencies {
    ...
    provided files('libs/amazon-device-messaging-1.0.1.jar')
    ...
}
Run Code Online (Sandbox Code Playgroud)

你有什么想法吗?

was*_*syl 13

您可能在依赖项部分中有这样的内容:

compile fileTree(include: ['*.jar'], dir: 'libs')
Run Code Online (Sandbox Code Playgroud)

这意味着您正在将libs文件夹中的所有jar 文件编译到您的应用中.所以可能的答案是说切换compileprovided工作,但除了provided你做compile了libs文件夹中的所有罐子.

您需要删除该fileTree行,并amazon-device-messaging-1.0.1.jar手动包含您在那里(不包括)的任何罐子.