Возникла проблема интеграции Microsoft MIP SDK в android приложение - PullRequest
0 голосов
/ 07 апреля 2020

Я пытаюсь интегрировать Microsoft MIP SDK в Android приложение, SDK имеет несколько заголовочных файлов и .so bin файлов, а также SDK предоставил файл aria- android - java -sdk.aar, который в настоящее время используется одним из файлов .so с использованием API findClass. Я попытался добавить .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)

Есть ли какой-нибудь способ добавить .so зависимый файл aar в android studio, используя cmake Спасибо

1 Ответ

0 голосов
/ 09 апреля 2020

Если вы используете 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;
}

В AAR включен пакет JAR для Protection SDK это необходимо, поскольку оно содержит информацию о root CA, используемом службой MIP. Это требование go будет отменено позднее в этом году.

...