20、Android集成极光推送(20180813)

Android SDK 版本

目前SDK只支持Android 2.3或以上版本的手机系统。富媒体信息流功能则需Android3.0或以上版本的系统。

jcenter 自动集成步骤

说明 : 使用jcenter自动集成的开发者,不需要在项目中添加jar和so,jcenter会自动完成依赖;在AndroidManifest.xml中不需要添加任何JPush SDK 相关的配置,jcenter会自动导入。

  • 如果开发者需要修改组件属性,可以在本地的 AndroidManifest 中定义同名的组件并配置想要的属性,然后用 xmlns:tools 来控制本地组件覆盖 jcenter 上的组件。示例:

    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
        package="com.android.tests.flavorlib.app"
        xmlns:tools="http://schemas.android.com/tools">
    
        <application
            android:icon="@drawable/icon"
            android:name="com.example.jpushdemo.ExampleApplication"
            android:label="@string/app_name" >
    
            <service android:name="cn.jpush.android.service.PushService"
                android:process=":multiprocess"
                tools:node="replace" >
    
                ……
            </service>
    
        ……
      </application>
    
      ……
    </manifest>
    
  • 确认android studio的 Project 根目录的主 gradle 中配置了jcenter支持。(新建project默认配置就支持)

    buildscript {
        repositories {
            jcenter()
        }
        ......
    }
    
    allprojets {
        repositories {
            jcenter()
        }
    }
    
  • 在 module 的 gradle 中添加依赖和AndroidManifest的替换变量。

    android {
        ......
        defaultConfig {
            applicationId "com.xxx.xxx" //JPush上注册的包名.
            ......
    
            ndk {
                //选择要添加的对应cpu类型的.so库。
                abiFilters 'armeabi', 'armeabi-v7a', 'arm64-v8a'
                // 还可以添加 'x86', 'x86_64', 'mips', 'mips64'
            }
    
            manifestPlaceholders = [
                JPUSH_PKGNAME : applicationId,
                JPUSH_APPKEY : "你的appkey", //JPush上注册的包名对应的appkey.
                JPUSH_CHANNEL : "developer-default", //暂时填写默认值即可.
            ]
            ......
        }
        ......
    }
    
    dependencies {
        ......
    
        compile 'cn.jiguang.sdk:jpush:3.1.5'  // 此处以JPush 3.1.5 版本为例。
        compile 'cn.jiguang.sdk:jcore:1.2.3'  // 此处以JCore 1.2.3 版本为例。
        ......
    }
    

 : 如果在添加以上 abiFilter 配置之后android Studio出现以下提示:

    NDK integration is deprecated in the current plugin. Consider trying the new experimental plugin

则在 Project 根目录的gradle.properties文件中添加:

    android.useDeprecatedNdk=true

 : 使用NDK r17时,可能Android Studio会出现以下提示:

    A problem occurred starting process ‘command 
    ‘/Users/xxx/Library/Android/sdk/ndk-bundle/toolchains/mips64el-linux-android-4.9/prebuilt
    /darwin-x86_64/bin/mips64el-linux-android-strip”

    系统找不到指定的文件

这是因为NDK r17 之后不再支持mips平台,在build.gradle里增加如下配置可解决

    android {

        defaultConfig {
            .....
        }

        packagingOptions { 
            doNotStrip '*/mips/*.so' 
            doNotStrip '*/mips64/*.so' 
        }
    }

说明:若没有res/drawable-xxxx/jpush_notification_icon这个资源默认使用应用图标作为通知icon,在5.0以上系统将应用图标作为statusbar icon可能显示不正常,用户可定义没有阴影和渐变色的icon替换这个文件,文件名不要变。

配置 AndroidManifest.xml


    <!-- Required -->
    <permission
        android:name="您应用的包名.permission.JPUSH_MESSAGE"
        android:protectionLevel="signature" />

    <!-- Required -->
    <uses-permission android:name="您应用的包名.permission.JPUSH_MESSAGE" />
    <uses-permission android:name="android.permission.RECEIVE_USER_PRESENT" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.WRITE_SETTINGS" />
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />

    <!-- Optional. Required for location feature -->
    <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" /> <!-- 用于开启 debug 版本的应用在6.0 系统上 层叠窗口权限 -->
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" />
    <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
    <uses-permission android:name="android.permission.GET_TASKS" />
    <uses-permission android:name="android.permission.VIBRATE" />

添加代码

public class ExampleApplication extends Application {
@Override
    public void onCreate() {
        super.onCreate();
        JPushInterface.setDebugMode(true);
        JPushInterface.init(this);
    }
}
扫描二维码关注公众号,回复: 2761679 查看本文章

猜你喜欢

转载自blog.csdn.net/lanxuan1993/article/details/81630192