模塊審核規(guī)范-Android Eclipse

2022-06-10 10:43 更新

本文檔適用于使用Android Eclipse開發(fā)的模塊

1)、最外層目錄規(guī)范

模塊包的最外層目錄必須為該模塊的模塊名,如moduleDemo,然后使用zip壓縮工具將該目錄壓縮成zip格式文件。如下圖:

【**】如果模塊包不符合該規(guī)范,將導(dǎo)致該模塊不被編譯。

2)、子目錄或文件規(guī)范

Android模塊包內(nèi)部最多只能包含以下4個目錄或文件,大致如圖:

如果開發(fā)者開發(fā)的某模塊,包入了這個4個文件或目錄以外的文件或目錄,需要更改。

2.1 res_模塊名 目錄審核:

●該目錄為可選目錄。

1)、該目錄命名規(guī)范必須為“res_”開頭,后面跟模塊名。例如“res_moduleDemo”。 凡是不符合這個規(guī)范的,需要更改。

2)、res_moduleDemo目錄中內(nèi)容審核: res_moduleDemo的根路徑下最多僅允許包含res子目錄和AndroidManifest.xml文件,如圖:

如果包入了這2個文件或目錄以外的文件或目錄,需要更改。

2.2 res目錄審核:

●該目錄為可選目錄。

該目錄包含:anim、drawable 、drawable-xxxx、layout、layout-xxxx、values、values-xxxx、raw、menu等子目錄。 這些子目錄均為可選。

2.3 命名規(guī)范審核:

原則上需要對這些目錄下的所有文件進行命名規(guī)范的審核。 建議的命名規(guī)范為:mo模塊名資源類型_資源名.后綴名。 例如:mo_moduleDemo_anim_aa.xml、mo_moduleDemo_abc.png、mo_moduleDemo_values.xml等。 該審核為非強制,如果開發(fā)者模塊資源命名不規(guī)范,可引導(dǎo)其按照《模塊開發(fā)指南》中建議的命名規(guī)范對資源進行規(guī)范的命名。

【**】防止?jié)撛诘呐c他人模塊資源沖突的問題。

資源沖突,通常在云編譯的時候,編譯失敗的log中將帶大量類似“error: Resource entry ebpay_text_red is already defined”的log,很大部分編譯失敗均由此原因引起。

2.4 引擎固有資源審核

任意drawable、drawable-xxxx目錄下不允許包含名為uz_icon.png和uz_splash_bg.png的圖片資源。如果有,全部刪除。

【**】否則將導(dǎo)致使用該模塊的app其應(yīng)用圖標(biāo)和啟動頁變成默認的。

2.5 字符資源審核

任意values、values-xxxx目錄下的strings.xml文件中,\不允許包含名為app_name的字段**。**例如某模塊的values目錄下包含的strings.xml中有類似如下配置:

<resources>
    <string name="app_name">ModuleDemo</string>
</resources>

這是不允許的,需要修改。 【**】否則將導(dǎo)致使用該模塊的app其應(yīng)用名稱變成該字段定義的。

以下命名是不良好的。 因為太普通。如果別人的模塊中strings.xml 中有相同的名字 “action_settings” , 那么這兩個模塊在一起編譯時就會失敗。因此開發(fā)者在定義字段時一定要帶專有的前綴,如: modulename_action_settings

<resources>
    <string name="action_settings">Settings</string>
    <string name="title_activity_record">RecordActivity</string>
    <string name="tip">提示</string>
    <string name="dismiss">取消</string>
</resources>

2.6 主題資源審核

任意values、values-xxxx目錄下的styles.xml文件中,\不允許包含名為AppTheme的字段**。**例如某模塊的values目錄下包含的styles.xml中有類似如下配置:

<resources>
    <style name="AppTheme">
        <item name="android:windowNoTitle">true</item>
    </style>
</resources>

這是不允許的,需要修改。

【**】否則將導(dǎo)致引擎的相關(guān)主題設(shè)置被更改,引發(fā)一些不可預(yù)料的問題。

2.7 AndroidManifest.xml文件審核:

●該文件為可選文件。

AndroidManifest.xml為標(biāo)準的xml格式文件,用于配置該模塊所需的權(quán)限,用到的系統(tǒng)組件等。 一個全面的AndroidManifest.xml文件參考如下: <?xml version="1.0" encoding="utf-8"?>

<uses-permission android:name="android.permission.INTERNET" />


<activity android:name="com.apicloud.moduleDemo.DemoActivity"/>


<receiver android:name="com.apicloud.moduleDemo.DemoReceiver" />


<service android:name="com.apicloud.moduleDemo.DemoService" />


<provider android:name="com.apicloud.moduleDemo.DemoProvider" />


<meta-data android:name="moduleDemo" />

結(jié)合上表中的代碼,AndroidManifest.xml應(yīng)該滿足以下規(guī)范:

2.7.1 根節(jié)點審核

根節(jié)點必須為 <manifest> 。

2.7.2 子節(jié)點審核

節(jié)點下只能包含:

<uses-permission>` `<activity>` `<receiver>` `<service>` `<provider>` `<meta-data>

6個類型的子節(jié)點。如果包含其他節(jié)點,需要修改(比如很多開發(fā)者的模塊直接將引擎的AndroidManifest.xml文件打包到模塊包中,導(dǎo)致存在<application>、<supports-screens>等節(jié)點,這是錯誤的)。

該6個類型的節(jié)點,允許有子節(jié)點。

2.7.3 不允許的節(jié)點

1)、類型的節(jié)點中,不允許包含名為: <activity android:name="com.uzmap.pkg.EntranceActivity"/> 的節(jié)點。 該配置為引擎配置,不允許模塊引用。如果包含,需要修改。

2)、類型的節(jié)點中,不允許包含名為: <receiver android:name="com.uzmap.pkg.uzapp.UPExtraBridge" /> 的節(jié)點。 該配置為引擎配置,不允許模塊引用。如果包含,需要修改。

3)、類型的節(jié)點中,不允許包含名為: <service android:name="com.uzmap.pkg.uzsocket.UPnsService" />的節(jié)點。 該配置為引擎配置,不允許模塊引用。如果包含,需要修改。

4)、類型的節(jié)點中,不允許包含名為: <provider android:name="com.uzmap.pkg.uzapp.UProvider" />的節(jié)點。 該配置為引擎配置,不允許模塊引用。如果包含,需要修改。

5)、類型的節(jié)點中,不允許包含名為: <meta-data android:name="uz_version" />的節(jié)點。 該配置為引擎配置,不允許模塊引用。如果包含,需要修改。

2.8 source 目錄審核:

source目錄為必須目錄。如果模塊包中沒有該目錄,需要修改。

1)、該目錄為模塊的代碼導(dǎo)出的JAR文件及其依賴的JAR所在目錄,可存放多個JAR文件。

2)、該目錄下均存放的.jar后綴名的文件,如moduleDemo.jar、baidu.jar、tencent.jar。

3)、該目錄不允許包含子目錄。如果包含子目錄,需要修改。

4)、該目錄下不允許存放名為android-support-v4.jar的文件。如果存在,需要修改。

【**】開發(fā)者的android-support-v4.jar可能版本很低,導(dǎo)致使用該模塊的app運行時發(fā)生崩潰。

5)、該目錄下不允許存放名類似為apiEngine v1.1.0.jar的文件。即引擎文件。 如果存在,需要修改。

【**】該文件為引擎文件,由服務(wù)器動態(tài)編譯最新版本,模塊中若包入,將直接導(dǎo)致使用該模塊的app無法使用。

2.9 target 目錄審核:

●該目錄為可選目錄。

1)、該目錄為模塊用到的so庫其依賴的so庫所在目錄,可存放多個so文件。

2)、該目錄允許包含子目錄,如armeabi-v7a、arm64、x86、mips等,這些子目錄均為可選。

如果包含了其中之一的子目錄,那么該子目錄下存放的so文件必須保持跟target目錄下的so文件數(shù)量及名稱一致。

3)、該目錄及其子目錄下不允許存放名libsec.so的文件。如果存在,需要刪除。

【**】該文件為引擎文件,由服務(wù)器動態(tài)編譯最新版本,模塊中若包入,將直接導(dǎo)致使用該模塊的app無法使用。

2.10 module.json文件審核:

●該文件為必須文件。

該文件的結(jié)構(gòu)為一個或者多個JSON對象,每個對象代表一個模塊(平臺允許一個模塊包中同時存放多個模塊的),如:

一個對象時的module.json配置:

{
    name:'moduleDemo',
    class:'com.apicloud.moduleDemo'
}

多個對象時的module.json配置,對象與對象之間以逗號隔開:

{
    name:'moduleDemo',
    class:'com.apicloud.moduleDemo'
},
{
    name:'moduleDemo1',
    class:'com.apicloud.moduleDemo1'
},
{
    name:'moduleDemo2',
    class:'com.apicloud.moduleDemo2'
}

同時需要檢查一下module.json配置中,所有的字符是否均是半角的字符。

凡是不符合以上格式的,均須開發(fā)者做更改。

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號