Uniapp中怎么開(kāi)發(fā)安卓原生插件?下面uniapp教程欄目給大家介紹一下Uniapp安卓原生插件開(kāi)發(fā)的方法,希望對(duì)大家有所幫助!
Android
環(huán)境準(zhǔn)備
l JAVA環(huán)境 jdk1.8
l Android Studio 下載地址:Android Studio官網(wǎng) OR Android Studio中文社區(qū)
l App離線SDK下載:請(qǐng)下載2.9.8+版本的android平臺(tái)SDK
導(dǎo)入uni插件原生項(xiàng)目
l UniPlugin-Hello-AS工程請(qǐng)?jiān)贏pp離線SDK中查找
l 點(diǎn)擊Android Studio菜單選項(xiàng)File—>New—>Import ProjectApp離線SDK下
插件開(kāi)發(fā)
uni-app插件目前僅支持Module擴(kuò)展和Component擴(kuò)展,暫時(shí)不支持Adapter擴(kuò)展,下面介紹的是Module擴(kuò)展(非UI的功能擴(kuò)展)
1、新建Module,F(xiàn)ile->New->New Module,選擇Android Library,填寫(xiě)信息,點(diǎn)擊Finish
2、編輯新建Module的build.gradle文件,添加依賴,使Module具有開(kāi)發(fā)uniapp插件能力
移除默認(rèn)依賴,修改為 compileOnly fileTree(dir: 'libs', include: ['*.jar']) compileOnly fileTree(dir: '../app/libs', include: ['uniapp-v8-release.aar']) compileOnly "com.android.support:recyclerview-v7:28.0.0" compileOnly "com.android.support:support-v4:28.0.0" compileOnly "com.android.support:appcompat-v7:28.0.0" compileOnly 'com.alibaba:fastjson:1.1.46.android' implementation 'com.facebook.fresco:fresco:1.13.0'
3、編寫(xiě)邏輯,在自己的module中新建一個(gè)java類(lèi),用于編寫(xiě)自己的代碼邏輯
4、代碼實(shí)現(xiàn)
-
-
我們實(shí)現(xiàn)的是一個(gè)Module,需要繼承uni的UniModule
-
擴(kuò)展方法必須加上@UniJSMethod (uiThread = false or true) 注解,判斷是否需要運(yùn)行在UI線程,默認(rèn)true,擴(kuò)展方法必須public,便于通過(guò)uni內(nèi)部調(diào)用
-
-
-
第一個(gè)參數(shù)為傳入的參數(shù),結(jié)構(gòu)為json,通過(guò)key獲取需要的參數(shù),第二個(gè)是回調(diào)函數(shù),用于返回給前臺(tái)頁(yè)面需要的結(jié)果
-
如果需要用到其他權(quán)限,需要進(jìn)行在AndroidManifest.xml文件進(jìn)行申請(qǐng),例如日歷的讀取和寫(xiě)入
-
-
編輯UniPlugin-Hello-AS工程下 “app” Module根目錄assets/dcloud_uniplugins.json文件,在nativePlugins節(jié)點(diǎn)下進(jìn)行注冊(cè),type:module,name填寫(xiě)自己需要暴露的組件名稱(chēng),class填寫(xiě)方法的具體路徑,包名+類(lèi)名
dcloud_uniplugins.json說(shuō)明:
nativePlugins: 插件根節(jié)點(diǎn),可存放多個(gè)插件 hooksClass: 生命周期代理(實(shí)現(xiàn)AppHookProxy接口類(lèi))格式(完整包名加類(lèi)名) type : module 或 component類(lèi)型 name : 注冊(cè)名稱(chēng) class : module 或 component 實(shí)體類(lèi)完整名稱(chēng)
- 在app的build.gradle注冊(cè)自己的組件,名字就是新建的module的名稱(chēng),注冊(cè)時(shí)候,就可以在android studio中使用了
到此為止代碼開(kāi)發(fā)就結(jié)束了,接下來(lái)就是用android studio進(jìn)行打離線包的驗(yàn)證,傳送門(mén)nativesupport.dcloud.net.cn/AppDocs/use…
打包驗(yàn)證
- Hbuildx新建一個(gè)項(xiàng)目,通過(guò)uni.requireNativePlugin進(jìn)行插件調(diào)用
- 當(dāng)前uniapp的相關(guān)打包資料需要準(zhǔn)備好,這邊就不在贅述,AppKey,APPID和安卓包名都需要在android studio中進(jìn)行對(duì)應(yīng)的配置,還有安卓證書(shū)別名以及秘鑰等
- 點(diǎn)擊發(fā)行->本地打包->生成本地打包的App資源
- 將生成的文件復(fù)制粘貼到UniPlugin-Hello-ASappsrcmainassetsapps下,并且修改dcloud_control.xml文件的appid
- 安卓打包參數(shù)配置,包名,證書(shū)別名等(圖1),證書(shū)文件需要放在app下(圖2)AndroidManifest.xml配置包名和AppKey,就是上面第二步的AppKey
- 連接手機(jī),打開(kāi)USB調(diào)試,點(diǎn)擊運(yùn)行
Uniapp 打包
插件生成
編譯生成module的aar文件:選擇Gradle—>插件module—>Tasks—>other—>assembleRelease(運(yùn)行生成module的aar文件)
HBuildX引入該插件
- 項(xiàng)目根目錄新建nativeplugins–>插件名稱(chēng)->android->插件aar文件,android下面同步存放package.json(詳細(xì)介紹)
Tips:插件id必須和文件夾的名稱(chēng)一致
- 打開(kāi)manifest.json,配置原生插件
- 云打包進(jìn)行插件功能驗(yàn)證
IOS
第一步先買(mǎi)個(gè)Mac