如何在Ionic Cordova构建中正确包含第三方AAR文件

vltsax25  于 2023-05-01  发布在  Ionic
关注(0)|答案(2)|浏览(195)

我正在使用Cordova 9。0.1和离子型5。4.14
我使用plugman构建了一个自定义插件,并且能够成功地添加它并使用ionic cordova run android从我的ionic项目中调用它,通过显示一吐司“干杯!“(懂了吗?)
因此,现在我正在通过添加第三方SDK来使用Android Java,我正在尝试为其编写JavaScript桥。
我的项目结构如下所示:

MyProjectRoot
 -custom_plugins
   -MyCustomPlugin
     -src
       -android
         3rdPartySDK.aar
         mycustomplugin.gradle
         MyCustom.java
      -www
         MyCustom.js
       package.json
       plugin.xml
 -src
   USUAL-WEB-APP-STUFF-HERE
 ionic.config.json
 package.json

为了清楚起见,项目的其余部分没有包括在内,我相信这些是突出的部分。
我包里的 cordova 部分。json看起来像:

"cordova": {
 "plugins": {
  "cordova-plugin-whitelist": {},
  "cordova-plugin-statusbar": {},
  "cordova-plugin-device": {},
  "cordova-plugin-splashscreen": {},
  "cordova-plugin-ionic-webview": {
    "ANDROID_SUPPORT_ANNOTATIONS_VERSION": "27.+"
  },
  "cordova-plugin-ionic-keyboard": {},
  "cordova-plugin-mycustomplugin": {}
},
"platforms": [
  "android"
]
}

我添加了mycustomplugin。使用以下内容进行分级:

dependencies {
  compile(name:'3rdPartySDK', ext: 'aar') {
    transitive = true;
  }
 }

插件的android部分。xml看起来像这样:

<platform name="android">
    <source-file src="src/android/MyCustom.java"
                 target-dir="src/cordova-plugin-mycustomplugin/MyCustomPlugin"/>
    <config-file parent="/*" target="res/xml/config.xml">
        <feature name="MyCustomPlugin">
            <param name="android-package" value="cordova.plugin.mycustomplugin.MyCustomPlugin"/>
        </feature>
    </config-file>
    <framework custom="true" src="src/android/mycustomplugin.gradle" type="gradleReference" />
    <lib-file src="src/android/3rdPartySDK.aar"/>
</platform>

我的Java文件看起来像这样:

package cordova.plugin.mycustomplugin;

import com.3rd.party.sdk.MobileAPI;
import org.apache.cordova.CordovaPlugin;
import org.apache.cordova.CallbackContext;

public class MyCustom extends CordovaPlugin {

@Override
public boolean execute(String action, JSONArray args, CallbackContext callbackContext) throws JSONException {

 if (action.equals("initSDK")) {
        try {
            MobileAPI mobileAPI = MobileAPI.getInstance(cordova.getActivity().getApplicationContext());
            mobileAPI.destroy();
            mobileAPI.initSDK(2);
        }catch (Exception e) {
            e.printStackTrace();
         }
       }
 return false;
 }

在尝试使用第三方SDK之前,ionic cordova run android按预期工作。
现在,cordova.cmd build android步骤失败,并显示消息:

Could not resolve all files for configuration ':app:debugCompileClasspath'.
 > Could not find :3rdPartySDK:.
 Required by:
 FAILED
  project :app

我只是从大量的Stack Overflow和搜索引擎研究中得到这么远。
我缺少什么知识?

tktrz96b

tktrz96b1#

对于其他遇到这一点的人来说,这里是为我解决问题的变化:
1.在custom_plugins/MyCustomPlugin/src/android目录中创建lib目录
1.把aar文件移到那里
1.将compile(name:'3rdparty-sdk-4.1', ext: 'aar')添加到构建的依赖项部分。gradle文件
1.添加以下行到插件的android部分。XML

<source-file src="src/android/libs/3rdparty-sdk-4.1.aar" target-dir="libs"></source-file>
 <framework custom="true" src="src/android/build.gradle" type="gradleReference" />
mspsb9vt

mspsb9vt2#

实际上对我有效的是,基于EMangini建议,将compile替换为以下形式的implementation

dependencies {
    implementation fileTree(include: ['*.aar'], dir: 'libs')
}

相关问题