W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
模塊包的最外層目錄必須為該模塊的模塊名,如moduleDemo,然后使用zip壓縮工具將該目錄壓縮成zip格式文件。如下圖:
【**】如果模塊包不符合該規(guī)范,將導(dǎo)致該模塊不被編譯。
Android模塊包內(nèi)部最多只能包含以下4個目錄或文件,大致如圖:
如果開發(fā)者開發(fā)的某模塊,包入了這個4個文件或目錄以外的文件或目錄,需要更改。
●該目錄為可選目錄。
1)、該目錄命名規(guī)范必須為“res_”開頭,后面跟模塊名。例如“res_moduleDemo”。 凡是不符合這個規(guī)范的,需要更改。
2)、res_moduleDemo目錄中內(nèi)容審核: res_moduleDemo的根路徑下最多僅允許包含res子目錄和AndroidManifest.xml文件,如圖:
如果包入了這2個文件或目錄以外的文件或目錄,需要更改。
●該目錄為可選目錄。
該目錄包含:anim、drawable 、drawable-xxxx、layout、layout-xxxx、values、values-xxxx、raw、menu等子目錄。 這些子目錄均為可選。
原則上需要對這些目錄下的所有文件進行命名規(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,很大部分編譯失敗均由此原因引起。
任意drawable、drawable-xxxx目錄下不允許包含名為uz_icon.png和uz_splash_bg.png的圖片資源。如果有,全部刪除。
【**】否則將導(dǎo)致使用該模塊的app其應(yīng)用圖標(biāo)和啟動頁變成默認的。
任意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>
任意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ù)料的問題。
●該文件為可選文件。
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ī)范:
根節(jié)點必須為 <manifest>
。
節(jié)點下只能包含:
<uses-permission>` `<activity>` `<receiver>` `<service>` `<provider>` `<meta-data>
6個類型的子節(jié)點。如果包含其他節(jié)點,需要修改(比如很多開發(fā)者的模塊直接將引擎的AndroidManifest.xml文件打包到模塊包中,導(dǎo)致存在<application>、<supports-screens>
等節(jié)點,這是錯誤的)。
該6個類型的節(jié)點,允許有子節(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é)點。 該配置為引擎配置,不允許模塊引用。如果包含,需要修改。
●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無法使用。
●該目錄為可選目錄。
1)、該目錄為模塊用到的so庫其依賴的so庫所在目錄,可存放多個so文件。
2)、該目錄允許包含子目錄,如armeabi-v7a、arm64、x86、mips等,這些子目錄均為可選。
如果包含了其中之一的子目錄,那么該子目錄下存放的so文件必須保持跟target目錄下的so文件數(shù)量及名稱一致。
3)、該目錄及其子目錄下不允許存放名libsec.so的文件。如果存在,需要刪除。
【**】該文件為引擎文件,由服務(wù)器動態(tài)編譯最新版本,模塊中若包入,將直接導(dǎo)致使用該模塊的app無法使用。
●該文件為必須文件。
該文件的結(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ā)者做更改。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: