Android_组件打包规范


上传到平台的组件包有着严格的目录结构.如果您上传的组件包目录结构不符合规范,会导致您的组件编译失败.

请您按照以下要求来定制您的组件包.

目录规范:


组件包中只包含以下目录或文件:

image

目录详解:

  • AndroidManifest.xml : AndroidManifest.xml - 包含组件使用的Activity,Service,Receiver等相关配置.

      <?xml version="1.0" encoding="utf-8"?>
      <manifest xmlns:android="http://schemas.android.com/apk/res/android"         
      package="com.xhrd.mobile.hybridframework.plugin.baidu_location" 
      android:versionCode="1" 
      android:versionName="1.0" >
    
      <uses-sdk android:minSdkVersion="14" android:targetSdkVersion="23" />
      <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
      <uses-permission android:name="android.permission.BLUETOOTH" />
      <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"></uses-permission>
      <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission>
      <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission>
      <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>
      <uses-permission android:name="android.permission.CHANGE_WIFI_STATE"></uses-permission>
      <uses-permission android:name="android.permission.READ_PHONE_STATE"></uses-permission>
      <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>
      <uses-permission android:name="android.permission.INTERNET"></uses-permission>
      <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"></uses-permission>
      <uses-permission android:name="android.permission.READ_LOGS"></uses-permission>
      <uses-permission android:name="android.permission.VIBRAT E"></uses-permission>
      <uses-permission android:name="android.permission.WAKE_LOCK"></uses-permission>
      <uses-permission android:name="android.permission.WRITE_SETTINGS"></uses-permission>
    
      <application android:allowBackup="true" >
      <!-- 百度定位 -->
      <service
      android:name="com.baidu.location.f"
      android:enabled="true"
      android:process=":remote" >
      <intent-filter>
          <action android:name="com.baidu.location.service_v2.2" ></action>
      </intent-filter>
      </service>
      </application>
      </manifest>
    

  • dex目录 : 存放组件本身以及依赖的dex文件.

    image


  • libs目录 : 存放组件本身以及依赖的jar,如果有so文件也放到这里面(请根据armeabi格式存放).

    image


  • plugin.xml : 包含组件暴露的接口以及属性的配置信息.

         <?xml version="1.0" encoding="UTF-8"?>
    
          <plugin domain="baiduLocation" 
    
          className="com.xhrd.mobile.hybridframework.plugin.baidu_location.BaiduLocationManager" 
    
          scope="app" version="0.0.1"  lifeCycleCallback="true">
    
              <method name="getLocation" >
    
                  <permission name="android.permission.ACCESS_FINE_LOCATION" 
                      rationale="@string/baidu_location_request_access_fine_location_deny_info">
                  </permission>
    
                  <permission name="android.permission.ACCESS_COARSE_LOCATION"
                      rationale="@string/baidu_location_request_access_coarse_location_deny_info">
                  </permission>
    
                  <permission name="android.permission.WRITE_SETTINGS"
                      rationale="@string/baidu_location_request_write_settings_deny_info">
                  </permission>
    
              </method>
    
          </plugin>
    
    • domain : 定义该模块所对应的JS对象名,类似于标准JS中的window,document,Math等对象.

    • className : 定义该扩展模块对应被JS映射的Native端的OC类名.

    • version : 组件版本号.

    • permission : 所需要的权限.

    • scope : 生命周期,不同的作用域,生命周期也就不同.有app,window,local,createNew四种,详情参考下列生命周期.

      • app : 作用域是全局,组件生命周期跟app生命周期相同,调用对象方式rd.JS对象名(例如rd.demo).

      • window : 作用域是窗口,组件生命周期跟window生命周期相同.调用对象方式rd.JS对象名(例如rd.demo).

      • local : 作用域是webview,组件生命周期跟webview生命周期相同.调用对象方式rd.JS对象名(例如rd.demo).

      • createNew : 作用域是webview,每次使用都会创建一个新实例.调用对象方式rd.require('JS对象名')(例如rd.require('demo')).

    • method : 对应模块的方法,分为有返回值和无返回值,当return= "true"表示方法有返回值(不添加字段默认为"false")

    • property : 对应模块的属性,name表示属性名称,value表示属性的值.因为property会按字符串拼接,如果返回是JS的字符串,加单引号,如果是JS的JSON,Number对象,不用加引号.

  • lifeCycleCallback : 是否注册Activity生命周期回调.
  • processor目录 : 存放template模版.

    image

    • template文件内容 :

        <application>
            <meta-data android:name="com.baidu.lbsapi.API_KEY" android:value="BDLOCATION_APIKEY_ANDROID" />
        </application>
      

Android打包规范,请点击查看详情