0

我正在尝试将 microsoft MIP sdk 集成到 Android App 中,SDK 有一些头文件和 .so bin 文件以及 sdk 提供了 aria-android-java-sdk.aar 文件,该文件正在使用的 .so 文件之一使用查找类 API。我尝试添加 .so 和头文件并将 aar 文件添加到构建脚本中,但我看到以下错误。

  [     1586235339.801 32690: 317 E/void (anonymous namespace)::InitLogManager(JNIEnv *, jclass, jobject, const std::__ndk1Initializing Aria LogManager
2020-04-07 10:25:39.826 32690-317/com.sample.mipintegration A/zygote64: java_vm_ext.cc:504] JNI DETECTED ERROR IN APPLICATION: JNI NewGlobalRef called with pending exception java.lang.ClassNotFoundException: Didn't find class "com.microsoft.applications.telemetry.core.InternalMgrImpl" on path: DexPathList[[directory "."],nativeLibraryDirectories=[/system/lib64, /system/vendor/lib64, /system/lib64, /system/vendor/lib64]]
2020-04-07 10:25:39.826 32690-317/com.sample.mipintegration A/zygote64: java_vm_ext.cc:504]  at java.lang.Class dalvik.system.BaseDexClassLoader.findClass(java.lang.String) (BaseDexClassLoader.java:93)
2020-04-07 10:25:39.826 32690-317/com.sample.mipintegration A/zygote64: java_vm_ext.cc:504]  at java.lang.Class java.lang.ClassLoader.loadClass(java.lang.String, boolean) (ClassLoader.java:379)
2020-04-07 10:25:39.826 32690-317/com.sample.mipintegration A/zygote64: java_vm_ext.cc:504]  at java.lang.Class java.lang.ClassLoader.loadClass(java.lang.String) (ClassLoader.java:312)

有没有办法使用cmake在android studio中添加.so依赖aar文件谢谢

4

1 回答 1

0

如果您使用的是 InformationProtection.AAR,您应该能够直接调用该函数。就像是:

import com.microsoft.informationprotection.MipLibrary;

Func {
    MipLibrary.Init(getApplicationContext());
}

如果您需要拆分 AAR,您需要执行以下操作:

package com.microsoft.informationprotection;

import android.content.Context;

import java.lang.System;
import com.microsoft.applications.telemetry.core.InternalMgrImpl;
import com.microsoft.applications.telemetry.LogConfiguration;

public class MipLibrary {

    static {
        System.loadLibrary("mip_core");
        System.loadLibrary("mip_protection_sdk");
        System.loadLibrary("mip_upe_sdk");
    }

    synchronized static public int Init(Context context) {
        if (sMipLibrary == null)
            sMipLibrary = new MipLibrary();
        if (sLogConfiguration == null) {
            sLogConfiguration = InternalMgrImpl.getConfig();
        }
        return sMipLibrary.Init(context.getClass(), context);
    }

    native int Init(Class<?> contextClass, Context context);

    static private MipLibrary sMipLibrary;
    static private LogConfiguration sLogConfiguration;
}

保护 SDK 的 AAR 中包含一个 JAR,因为它包含有关 MIP 服务使用的根 CA 的信息。这一要求将在今年晚些时候取消。

于 2020-04-08T22:33:11.447 回答