Android SDK 集成指南文档格式.docx
《Android SDK 集成指南文档格式.docx》由会员分享,可在线阅读,更多相关《Android SDK 集成指南文档格式.docx(13页珍藏版)》请在冰豆网上搜索。
∙libs/(cpu-type)/libjcore1xy.so
o各种CPU类型的native开发包。
∙res
o集成SDK必须添加的资源文件
∙example
o是一个完整的Android项目,通过这个演示了JPushSDK的基本用法,可以用来做参考。
AndroidSDK版本
目前SDK只支持Android2.3或以上版本的手机系统。
富媒体信息流功能则需Android3.0或以上版本的系统。
jcenter自动集成步骤
说明
:
使用jcenter自动集成的开发者,不需要在项目中添加jar和so,jcenter会自动完成依赖;
在AndroidManifest.xml中不需要添加任何JPushSDK相关的配置,jcenter会自动导入。
∙如果开发者需要修改组件属性,可以在本地的AndroidManifest中定义同名的组件并配置想要的属性,然后用xmlns:
tools来控制本地组件覆盖jcenter上的组件。
示例:
∙<
manifestxmlns:
android="
∙package="
com.android.tests.flavorlib.app"
∙xmlns:
tools="
∙
∙<
application
∙android:
icon="
@drawable/icon"
name="
com.example.jpushdemo.ExampleApplication"
label="
@string/app_name"
>
serviceandroid:
cn.jpush.android.service.PushService"
process="
:
multiprocess"
∙tools:
node="
replace"
∙……
/service>
/application>
/manifest>
∙臧廷杰整理
∙确认androidstudio的Project根目录的主gradle中配置了jcenter支持。
(新建project默认配置就支持)
∙buildscript{
∙repositories{
∙jcenter()
∙}
∙......
∙}
∙allprojects{
∙在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:
自定义渠道名称"
//用户渠道统计的渠道名称
∙]
∙dependencies{
∙compile'
cn.jiguang.sdk:
jpush:
3.0.5'
//此处以JPush3.0.5版本为例。
jcore:
1.1.2'
//此处以JCore1.1.2版本为例。
注
如果在添加以上abiFilter配置之后androidStudio出现以下提示:
NDKintegrationisdeprecatedinthecurrentplugin.Considertryingthenewexperimentalplugin.
则在Project根目录的gradle.properties文件中添加:
android.useDeprecatedNdk=true
说明:
若没有res/drawable-xxxx/jpush_notification_icon这个资源默认使用应用图标作为通知icon,在5.0以上系统将应用图标作为statusbaricon可能显示不正常,用户可定义没有阴影和渐变色的icon替换这个文件,文件名不要变。
手动集成步骤
∙解压缩jpush-android-release-3.x.y.zip集成压缩包。
∙复制libs/jcore-android_v1.x.y.jar到工程libs/目录下。
∙复制libs/jpush-android_v3.x.y.jar到工程libs/目录下。
∙复制libs/(cpu-type)/libjcore1xy.so到你的工程中存放对应cpu类型的目录下。
∙复制res/中drawable-hdpi,layout,values文件夹中的资源文件到你的工程中res/对应同名的目录下。
说明1:
说明2:
使用androidstudio的开发者,如果使用jniLibs文件夹导入so文件,则仅需将所有cpu类型的文件夹拷进去;
如果将so文件添加在module的libs文件夹下,注意在module的gradle配置中添加一下配置:
android{
......
sourceSets{
main{
jniLibs.srcDirs=['
libs'
]
}
配置AndroidManifest.xml
根据SDK压缩包里的AndroidManifest.xml样例文件,来配置应用程序项目的AndroidManifest.xml。
主要步骤为:
∙复制备注为"
Required"
的部分
∙将标注为“您应用的包名”的部分,替换为当前应用程序的包名
∙将标注为“您应用的Appkey”的部分,替换为在Portal上注册该应用的的Key,例如:
9fed5bcb7b9b87413678c407
小帖士
如果使用androidstudio,可在AndroidManifest中引用applicationId的值,在build.gradle配置中defaultConfig节点下配置,如:
defaultConfig{
applicationId"
cn.jpush.example"
//<
--您应用的包名
……
在AndroidManifest中使用${applicationId}引用gradle中定义的包名
AndroidManifest示例
<
?
xmlversion="
1.0"
encoding="
utf-8"
>
package="
您应用的包名"
android:
versionCode="
303"
versionName="
3.0.3"
<
uses-sdkandroid:
minSdkVersion="
9"
targetSdkVersion="
23"
/>
!
--Required-->
permission
您应用的包名.permission.JPUSH_MESSAGE"
protectionLevel="
signature"
uses-permissionandroid:
android.permission.RECEIVE_USER_PRESENT"
android.permission.INTERNET"
android.permission.WAKE_LOCK"
android.permission.READ_PHONE_STATE"
android.permission.WRITE_EXTERNAL_STORAGE"
android.permission.READ_EXTERNAL_STORAGE"
android.permission.VIBRATE"
android.permission.MOUNT_UNMOUNT_FILESYSTEMS"
android.permission.ACCESS_NETWORK_STATE"
android.permission.WRITE_SETTINGS"
android.permission.ACCESS_WIFI_STATE"
--Optional.Requiredforlocationfeature-->
android.permission.SYSTEM_ALERT_WINDOW"
--用于开启debug版本的应用在6.0系统上层叠窗口权限-->
android.permission.ACCESS_COARSE_LOCATION"
android.permission.CHANGE_WIFI_STATE"
android.permission.ACCESS_FINE_LOCATION"
android.permission.ACCESS_LOCATION_EXTRA_COMMANDS"
android.permission.CHANGE_NETWORK_STATE"
android.permission.GET_TASKS"
@drawable/ic_launcher"
YourApplicationName"
--RequiredSDK核心功能-->
--可配置android:
process参数将PushService放在其他进程中-->
service
enabled="
true"
exported="
false"
intent-filter>
actionandroid:
cn.jpush.android.intent.REGISTER"
cn.jpush.android.intent.REPORT"
cn.jpush.android.intent.PushService"
cn.jpush.android.intent.PUSH_TIME"
/intent-filter>
--since1.8.0option可选项。
用于同一设备中不同应用的JPush服务相互拉起的功能。
-->
--若不启用该功能可删除该组件,将不拉起其他应用也不能被其他应用拉起-->
cn.jpush.android.service.DaemonService"
intent-filter>
cn.jpush.android.intent.DaemonService"
categoryandroid:
/>
--RequiredSDK核心功能-->
receiver
cn.jpush.android.service.PushReceiver"
intent-filterandroid:
priority="
1000"
cn.jpush.android.intent.NOTIFICATION_RECEIVED_PROXY"
android.intent.action.USER_PRESENT"
.conn.CONNECTIVITY_CHANGE"
--Optional-->
android.intent.action.PACKAGE_ADDED"
android.intent.action.PACKAGE_REMOVED"
dataandroid:
scheme="
package"
/receiver>
activity
cn.jpush.android.ui.PushActivity"
configChanges="
orientation|keyboardHidden"
theme="
@android:
style/Theme.NoTitleBar"
android.intent.category.DEFAULT"
/activity>
--SDK核心功能-->
cn.jpush.android.ui.PopWinActivity"
@style/MyDialogStyle"
cn.jpush.android.service.DownloadService"
receiverandroid:
cn.jpush.android.service.AlarmReceiver"
--Userdefined.用户自定义的广播接收器-->
您自己定义的Receiver"
--Required用户注册SDK的intent-->
cn.jpush.android.intent.REGISTRATION"
--Required用户接收SDK消息的intent-->
cn.jpush.android.intent.MESSAGE_RECEIVED"
--Required用户接收SDK通知栏信息的intent-->
cn.jpush.android.intent.NOTIFICATION_RECEIVED"
--Required用户打开自定义通知栏的intent-->
cn.jpush.android.intent.NOTIFICATION_OPENED"
--接收网络变化连接/断开since1.6.3-->
cn.jpush.android.intent.CONNECTION"
--Required.Forpublishchannelfeature-->
--JPUSH_CHANNEL是为了方便开发者统计APK分发渠道。
-->
--例如:
--发到GooglePlay的APK可以设置为google-play;
--发到其他市场的APK可以设置为xxx-market。
--渠道统计报表位于控制台页面的“统计”-“用户统计”-“渠道分布”中-->
meta-dataandroid:
JPUSH_CHANNEL"
value="
developer-default"
--Required.AppKeycopiedfromPo