config.json配置说明 ### 基本结构 ```**_粗体_** { "platform": "android", "version" : "1.0.0", "package": "com.foreveross.user.plugin", "pluginEntry": "com.foreveross.user.plugin.PluginDemo", "identifier" : "PluginDemo", "clobbers":"PluginDemo" "params" : [ ], "android" : { "permission" : [], "uses-permission":[], "activity" : [], "service" : [], "provider" : [], "receiver" : [] } } ``` 参数 是否必须 说明 platform 是 声明插件使用的平台,android平台统一标识为android version 是 插件的版本 package 是 插件的包名 pluginEntry 是 插件的入口类 identifier 是 插件标识 params 否 声明插件参数,用户选择插件构建时根据提示输入参数完成构建,见下文说明 (#philosophy) permission 否 插件所需权限 activity 否 插件需要声明的activity列表 service 否 插件需要声明的service列表 provider 否 插件需要声明的provider列表 receiver 否 插件需要声明的receiver列表 clobbers 否 插件暴露给js使用,对应cordova_plugins.js中的clobbers,若无则默认为插件名称 ### [params] 配置项说明 ``` "params" : [ { "key": "app_id", "display": "App ID", "tips": "推送ID请从后台查询", "default": "dAb38Ba0AbdcOLZB", "persist":true, "required": true } ] ``` 参数 是否必须 说明 key 是 参数标识 display 是 显示名称 tips 否 输入提示 default 否 默认值 persist 是 true|false,true写到AndroidManifeast.xml中,否则写到私有配置中,通过PropertiesUtil的静态方法readProperties(Context,key)函数来读取。 required 是 true|false ,是否必填参数 如标识为 com.foss.user.plugin.push 的插件,包含以下 params: ``` "params" : [ { "key": "JPUSH_CHANNEL", "display": "App ID", "tips": "推送渠道请从后台查询", "default": "dAb38Ba0AbdcOLZB", "required": true }, { "key": "JPUSH_APPKEY", "display": "App Secret", "tips": "推送应用ID请从后台查询", "default": "dAb38Ba0AbdcOLZB", "required": true }, ] ``` config.json配置片段为 "meta-data":[ { "name":"JPUSH_CHANNEL", "value":"{JPUSH_CHANNEL}" },{ "name":"JPUSH_APPKEY", "value":"{JPUSH_APPKEY}" } ] 以上配置将在AndroidManifeast.xml中体现的片段为 ``` <meta-data android:name="JPUSH_CHANNEL" android:value="用户填的JPUSH_CHANNEL值"/> <!-- Required. AppKey copied from Portal --> <meta-data android:name="JPUSH_APPKEY" android:value="用户填的JPUSH_APPKEY值"/> ``` config.json中如果存在需要使用者设定的参数,则需要预留占位符,如上述params[0].key= "JPUSH_CHANNEL",而config.json的配置片段中包含{JPUSH_CHANNEL},则最后{JPUSH_CHANNEL}这个占位变量则会替换成实际用户输入的值. ### [permission] 配置项说明 ``` "permission": [ { "name": "com.foreveross.chameleon.permission.JPUSH_MESSAGE", "protectionLevel": "signature" } ], "uses-permission": [ { "name": "android.permission.BROADCAST_STICKY" }, { "name": "android.permission.RECEIVE_USER_PRESENT" } ], ``` *** 上述配置生成出的 manifest.xml 片段 *** ``` <permission android:name="com.foreveross.chameleon.permission.JPUSH_MESSAGE" android:protectionLevel="signature" /> <uses-permission android:name="android.permission.BROADCAST_STICKY" /> <uses-permission android:name="android.permission.RECEIVE_USER_PRESENT" /> ``` 参数 是否必须 说明 permission 否 声明的权限列表 uses-permission 否 声明插件所需要的权限, [权限列表参考]( http://www.cnblogs.com/GnagWang/archive/2010/12/10/1902272.html) ### [activites] 配置项说明 ``` "activity": [ { "name": "com.foreveross.chameleon_template.MainActivity", "launchMode": "singleTask", "label":"@string/app_name", "intent-filter": [ { "action": [ { "name": "android.intent.action.MAIN" } ] }, { "category": [ { "name": "android.intent.category.LAUNCHER" } ] } ] }, { "label": "@string/app_name", "name": "com.foreveross.chameleon.loginmodule.activity.LoginModuleActivity" } ] ``` *** 上述配置生成出的 manifest.xml 片段 *** ``` <activity android:launchMode="singleTask" android:label="@string/app_name" android:name="com.foreveross.chameleon_template.MainActivity"> <intent-filter> <action android:name="android.intent.action.MAIN"/> <category android:name="android.intent.category.LAUNCHER"/> </intent-filter> </activity> <activity android:label="@string/app_name" android:name="com.foreveross.chameleon.loginmodule.activity.LoginModuleActivity"/> ``` 参数 是否必须 说明 activity 否 activity声明列表, [activity属性参考](http://www.android-doc.com/guide/topics/manifest/activity-element.html) ### [service] 配置项说明 ``` "service": [ { "name": "com.foreveross.bsl.manager.ModuleOperationService" }, { "name": "com.foreveross.chameleon.service.DownloadService", "enabled": true, "exported": "false", "intent-filter": [ { "action": [ { "name": "com.foreveross.action.downloadservice" } ] }, { "category": [ { "name": "android.intent.category.default" } ] } ] } ] ``` *** 上述配置生成出的 manifest.xml 片段 *** ``` <service android:name="com.foreveross.bsl.manager.ModuleOperationService"/> <service> android:name="com.foreveross.chameleon.service.DownloadService" android:enabled="true" android:exported="false" > <intent-filter> <action android:name="com.foreveross.action.downloadservice"/> <category android:name="android.intent.category.default"/> </intent-filter> </service> ``` 参数 是否必须 说明 service 否 service声明列表, [service属性参考](http://www.android-doc.com/guide/topics/manifest/service-element.html) ### [provider] 配置项说明 ``` "provider": [ { "name": "com.foreveross.utils.crypt.WebFileProvider", "authorities": "com.foreveross.crypt.WebFileProvider", "meta-data": [ { "name": "com.foreveross.crypt.WebFileProvider" } ] } ] ``` *** 上述配置生成出的 manifest.xml 片段 *** ``` <provider android:authorities="com.foreveross.crypt.WebFileProvider" android:name="com.foreveross.utils.crypt.WebFileProvider"> <meta-data android:name="com.foreveross.crypt.WebFileProvider"/> </provider> ``` 参数 是否必须 说明 provider 否 provider声明列表, [provider属性参考](http://www.android-doc.com/guide/topics/manifest/provider-element.html) ### [receiver] 配置项说明 "receiver": [ { "name": "com.foreveross.push.socket.ReceiverNetwork", "intent-filter": [ { "action": [ { "name": "android.net.conn.CONNECTIVITY_CHANGE" } ] }, { "meta-data": [ { "name": "android.app.network_state" } ] } ] } ] *** 上述配置生成出的 manifest.xml 片段 *** ``` <receiver android:name="com.foreveross.push.socket.ReceiverNetwork"> <intent-filter> <action android:name="android.net.conn.CONNECTIVITY_CHANGE"/> </intent-filter> <meta-data android:name="android.app.network_state"/> </receiver> ``` 参数 是否必须 说明 receiver 否 receiver声明列表,[receiver属性参考](http://www.android-doc.com/guide/topics/manifest/receiver-element.html) * * * ### 完整示例 ``` { "platform": "android", // 平台 "version" : "1.0.0", "package": "com.foss.user.plugin", // (android) "pluginEntry": "com.foss.user.plugin.MyPlugin", // 插件入口类(ios, android) "code": "MyPlugin", "params": [ { "key": "app_id", // key "display": "App ID", // 显示 "tips": "推送ID请从后台查询", // 提示信息 "default": "dAb38Ba0AbdcOLZB", // 默认值 "required": true // 是否必填 }, { "key": "app_secret", // key "display": "App Secret", // 显示 "tips": "推送secret请从后台查询", // 提示信息 "default": "dAb38Ba0AbdcOLZB", // 默认值 "required": true // 是否必填 } ], "android": { "permission": [ { "name": "com.foreveross.chameleon.permission.JPUSH_MESSAGE", "protectionLevel": "signature" } ], "uses-permission": [ { "name": "android.permission.BROADCAST_STICKY" }, { "name": "android.permission.RECEIVE_USER_PRESENT" } ], "activity": [ { "name": "com.foreveross.chameleon_template.MainActivity", "launchMode": "singleTask", "label":"@string/app_name", "intent-filter": [ { "action": [ { "name": "android.intent.action.MAIN" } ] }, { "category": [ { "name": "android.intent.category.LAUNCHER" } ] } ] }, { "label": "@string/app_name", "name": "com.foreveross.chameleon.loginmodule.activity.LoginModuleActivity" } ], "service": [ { "name": "com.foreveross.bsl.manager.ModuleOperationService" }, { "name": "com.foreveross.chameleon.service.DownloadService", "enabled": true, "exported": "false", "intent-filter": [ { "action": [ { "name": "com.foreveross.action.downloadservice" } ] }, { "category": [ { "name": "android.intent.category.default" } ] } ] } ], "provider": [ { "name": "com.foreveross.utils.crypt.WebFileProvider", "authorities": "com.foreveross.crypt.WebFileProvider", "meta-data": [ { "name": "com.foreveross.crypt.WebFileProvider" } ] } ], "receiver": [ { "name": "com.foreveross.push.socket.ReceiverNetwork", "intent-filter": [ { "action": [ { "name": "android.net.conn.CONNECTIVITY_CHANGE" } ] }, { "meta-data": [ { "name": "android.app.network_state" } ] } ] } ] } } ```