uniapp原生插件開發及打包發布


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插件發布到市場:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM