W3Cschool
恭喜您成為首批注冊(cè)用戶(hù)
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
模塊包的最外層目錄必須為該模塊的模塊名,如moduleDemo,然后使用zip壓縮工具將該目錄壓縮成zip格式文件。如下圖:
【**】如果模塊包不符合該規(guī)范,將導(dǎo)致該模塊不被編譯。
Android模塊包內(nèi)部最多只能包含以下4個(gè)目錄或文件,大致如圖:
如果開(kāi)發(fā)者開(kāi)發(fā)的某模塊,包入了這個(gè)4個(gè)文件或目錄以外的文件或目錄,需要更改。
●該目錄為可選目錄。
1)、該目錄命名規(guī)范必須為“res_”開(kāi)頭,后面跟模塊名。例如“res_moduleDemo”。 凡是不符合這個(gè)規(guī)范的,需要更改。
2)、res_moduleDemo目錄中內(nèi)容審核: res_moduleDemo的根路徑下最多僅允許包含res子目錄和AndroidManifest.xml文件,如圖:
如果包入了這2個(gè)文件或目錄以外的文件或目錄,需要更改。
●該目錄為可選目錄。
該目錄包含:anim、drawable 、drawable-xxxx、layout、layout-xxxx、values、values-xxxx、raw、menu等子目錄。 這些子目錄均為可選。
原則上需要對(duì)這些目錄下的所有文件進(jìn)行命名規(guī)范的審核。 建議的命名規(guī)范為:mo模塊名資源類(lèi)型_資源名.后綴名。 例如:mo_moduleDemo_anim_aa.xml、mo_moduleDemo_abc.png、mo_moduleDemo_values.xml等。 該審核為非強(qiáng)制,如果開(kāi)發(fā)者模塊資源命名不規(guī)范,可引導(dǎo)其按照《模塊開(kāi)發(fā)指南》中建議的命名規(guī)范對(duì)資源進(jìn)行規(guī)范的命名。
【**】防止?jié)撛诘呐c他人模塊資源沖突的問(wèn)題。
資源沖突,通常在云編譯的時(shí)候,編譯失敗的log中將帶大量類(lèi)似“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)和啟動(dòng)頁(yè)變成默認(rèn)的。
任意values、values-xxxx目錄下的strings.xml文件中,\不允許包含名為app_name的字段**。**例如某模塊的values目錄下包含的strings.xml中有類(lèi)似如下配置:
<resources>
<string name="app_name">ModuleDemo</string>
</resources>
這是不允許的,需要修改。 【**】否則將導(dǎo)致使用該模塊的app其應(yīng)用名稱(chēng)變成該字段定義的。
以下命名是不良好的。 因?yàn)樘胀āH绻麆e人的模塊中strings.xml 中有相同的名字 “action_settings” , 那么這兩個(gè)模塊在一起編譯時(shí)就會(huì)失敗。因此開(kāi)發(fā)者在定義字段時(shí)一定要帶專(zhuān)有的前綴,如: 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中有類(lèi)似如下配置:
<resources>
<style name="AppTheme">
<item name="android:windowNoTitle">true</item>
</style>
</resources>
這是不允許的,需要修改。
【**】否則將導(dǎo)致引擎的相關(guān)主題設(shè)置被更改,引發(fā)一些不可預(yù)料的問(wèn)題。
●該文件為可選文件。
AndroidManifest.xml為標(biāo)準(zhǔn)的xml格式文件,用于配置該模塊所需的權(quán)限,用到的系統(tǒng)組件等。 一個(gè)全面的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)該滿(mǎn)足以下規(guī)范:
根節(jié)點(diǎn)必須為 <manifest>
。
節(jié)點(diǎn)下只能包含:
<uses-permission>` `<activity>` `<receiver>` `<service>` `<provider>` `<meta-data>
6個(gè)類(lèi)型的子節(jié)點(diǎn)。如果包含其他節(jié)點(diǎn),需要修改(比如很多開(kāi)發(fā)者的模塊直接將引擎的AndroidManifest.xml文件打包到模塊包中,導(dǎo)致存在<application>、<supports-screens>
等節(jié)點(diǎn),這是錯(cuò)誤的)。
該6個(gè)類(lèi)型的節(jié)點(diǎn),允許有子節(jié)點(diǎn)。
1)、類(lèi)型的節(jié)點(diǎn)中,不允許包含名為: <activity android:name="com.uzmap.pkg.EntranceActivity"/>
的節(jié)點(diǎn)。 該配置為引擎配置,不允許模塊引用。如果包含,需要修改。
2)、類(lèi)型的節(jié)點(diǎn)中,不允許包含名為: <receiver android:name="com.uzmap.pkg.uzapp.UPExtraBridge" />
的節(jié)點(diǎn)。 該配置為引擎配置,不允許模塊引用。如果包含,需要修改。
3)、類(lèi)型的節(jié)點(diǎn)中,不允許包含名為: <service android:name="com.uzmap.pkg.uzsocket.UPnsService" />
的節(jié)點(diǎn)。 該配置為引擎配置,不允許模塊引用。如果包含,需要修改。
4)、類(lèi)型的節(jié)點(diǎn)中,不允許包含名為: <provider android:name="com.uzmap.pkg.uzapp.UProvider" />
的節(jié)點(diǎn)。 該配置為引擎配置,不允許模塊引用。如果包含,需要修改。
5)、類(lèi)型的節(jié)點(diǎn)中,不允許包含名為: <meta-data android:name="uz_version" />
的節(jié)點(diǎn)。 該配置為引擎配置,不允許模塊引用。如果包含,需要修改。
●source目錄為必須目錄。如果模塊包中沒(méi)有該目錄,需要修改。
1)、該目錄為模塊的代碼導(dǎo)出的JAR文件及其依賴(lài)的JAR所在目錄,可存放多個(gè)JAR文件。
2)、該目錄下均存放的.jar后綴名的文件,如moduleDemo.jar、baidu.jar、tencent.jar。
3)、該目錄不允許包含子目錄。如果包含子目錄,需要修改。
4)、該目錄下不允許存放名為android-support-v4.jar的文件。如果存在,需要修改。
【**】開(kāi)發(fā)者的android-support-v4.jar可能版本很低,導(dǎo)致使用該模塊的app運(yùn)行時(shí)發(fā)生崩潰。
5)、該目錄下不允許存放名類(lèi)似為apiEngine v1.1.0.jar的文件。即引擎文件。 如果存在,需要修改。
【**】該文件為引擎文件,由服務(wù)器動(dòng)態(tài)編譯最新版本,模塊中若包入,將直接導(dǎo)致使用該模塊的app無(wú)法使用。
●該目錄為可選目錄。
1)、該目錄為模塊用到的so庫(kù)其依賴(lài)的so庫(kù)所在目錄,可存放多個(gè)so文件。
2)、該目錄允許包含子目錄,如armeabi-v7a、arm64、x86、mips等,這些子目錄均為可選。
如果包含了其中之一的子目錄,那么該子目錄下存放的so文件必須保持跟target目錄下的so文件數(shù)量及名稱(chēng)一致。
3)、該目錄及其子目錄下不允許存放名libsec.so的文件。如果存在,需要?jiǎng)h除。
【**】該文件為引擎文件,由服務(wù)器動(dòng)態(tài)編譯最新版本,模塊中若包入,將直接導(dǎo)致使用該模塊的app無(wú)法使用。
●該文件為必須文件。
該文件的結(jié)構(gòu)為一個(gè)或者多個(gè)JSON對(duì)象,每個(gè)對(duì)象代表一個(gè)模塊(平臺(tái)允許一個(gè)模塊包中同時(shí)存放多個(gè)模塊的),如:
一個(gè)對(duì)象時(shí)的module.json配置:
{
name:'moduleDemo',
class:'com.apicloud.moduleDemo'
}
多個(gè)對(duì)象時(shí)的module.json配置,對(duì)象與對(duì)象之間以逗號(hào)隔開(kāi):
{
name:'moduleDemo',
class:'com.apicloud.moduleDemo'
},
{
name:'moduleDemo1',
class:'com.apicloud.moduleDemo1'
},
{
name:'moduleDemo2',
class:'com.apicloud.moduleDemo2'
}
同時(shí)需要檢查一下module.json配置中,所有的字符是否均是半角的字符。
凡是不符合以上格式的,均須開(kāi)發(fā)者做更改。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: