uniapp原生插件開發及打包發布
一.下載unipp提供的sdk包:
官方鏈接:https://nativesupport.dcloud.net.cn/AppDocs/usesdk/android
二.開發原生插件:
1.創建android空項目:
2.創建Module模塊:
3.配置libs:
將sdk中的包lib.5plus.base-release.aar、android-gif-drawable-release@1.2.23.aar、uniapp-v8-release.aar和oaid_sdk_1.0.25.aar拷貝到創建的空項目中的libs目錄下;
注意:如果需要集成的第三方sdk存在so庫文件,只需添加armeabi-v7a、arm64-v8a、x86三個文件夾即可,否則會導致在部分手機上無法運行。
4.配置build.gradle
apply plugin: 'com.android.application' android { compileSdkVersion 29 defaultConfig { applicationId "com.example.myapplication" minSdkVersion 21 targetSdkVersion 28 versionCode 1 versionName "1.0" multiDexEnabled true ndk { abiFilters 'x86', 'armeabi-v7a', 'arm64-v8a' } } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } } } dependencies { implementation fileTree(dir: 'libs', include: ['*.aar', '*.jar'], exclude: []) implementation 'androidx.appcompat:appcompat:1.0.0' implementation 'androidx.legacy:legacy-support-v4:1.0.0' implementation 'com.alibaba:fastjson:1.1.46.android' }
5.申請appkey:
申請appkey 參考官方鏈接https://nativesupport.dcloud.net.cn/AppDocs/usesdk/appkey
6.配置Androidmanifest.xml中的appkey:
application節點下的meta-data節點屬性
android:name="dcloud_appkey"不改
android:value="替換為自己申請的Appkey" 修改為自己申請的appkey
<application ...> <meta-data android:name="dcloud_appkey" android:value="替換為自己申請的Appkey" />
二.注冊插件:
拷貝下載的sdk文件夾中的assets/dcloud_uniplugins.json(完整路徑Android-SDK@3.2.3.81011_20210826\UniPlugin-Hello-AS\app\src\main\assets)
方案一:(無特殊需求,使用此方案)
在“app” Module根目錄assets/dcloud_uniplugins.json文件。 在moudles節點下 添加你要注冊的Module
方案二:(需要初始化的需求,使用此方案)
1.創建一個實體類並實現UniAppHookProxy接口,在onCreate函數中添加組件注冊相關參數 或 填寫插件需要在啟動時初始化的邏輯。
public class RichAlert_AppProxy implements UniAppHookProxy { @Override public void onCreate(Application application) { //當前uni應用進程回調 僅觸發一次 多進程不會觸發 //可通過UniSDKEngine注冊UniModule或者UniComponent } @Override public void onSubProcessCreate(Application application) { //其他子進程初始化回調 可用於初始化需要子進程初始化需要的邏輯 } }
2.在hooksClass節點添加你創建實現UniAppHookProxy接口的實體類完整名稱填入其中即可
nativePlugins
: 插件跟節點 可存放多個插件hooksClass
: 生命周期代理(實現AppHookProxy接口類)格式(完整包名加類名)plugins
: 插件數組name
: 注冊名稱class
: module 或 component 實體類完整名稱type
: module 或 component類型。
二.調試原生插件:
1.使用hx(hbuiderx)創建uniapp項目
2.創建vue頁面或者nvue,在js中第一行獲取插件對象var testModule = uni.requireNativePlugin("TestModule")
3.然后使用插件對象就可以調用到插件中的方法
4.在hx上的菜單上:發行-原生app-本地打包-生成本地app打包資源;
5.打包完成會在控制台上輸出打包信息,我們關注的是打包路徑;
6.打包資源放入創建的android空項目對應的目錄中:
android空項目的資源路徑:app/src/main/assets/apps/appid/www,如果沒有某個目錄自己手動建立即可;
appid獲取方式:
在uniapp項目中打開文件manifest.json中就可以查看到。
7.拷貝sdk中提供的data文件夾:
路徑位於Android-SDK@3.2.3.81011_20210826\SDK\assets
8.修改拷貝的data文件夾下的dcloud_control.xml:
appid替換為自己的appid
<hbuilder> <apps> <app appid="__UNI__FE33477" appver=""/> </apps> </hbuilder>
appid獲取方式:
在uniapp項目中打開文件manifest.json中就可以查看到。
9.引用插件:
在app項目下的 build.gradle文件dependencies節點中添加app插件
// 添加uni-app插件
implementation project(':創建的Module模塊名稱')
10以真機方式允許項目或者調試;
三.原生插件aar打包:
1.
四.uniapp本地插件:
五.uniapp插件發布到市場: