Использование Android NDK во фреймворках

#java #android #android-ndk #android-source

#java #Android #android-ndk #android-исходный код

Вопрос:

Здравствуйте, я пытался вызвать библиотеку JNI в Android Keyguard (frameworks / base / packages / SystemUI). Я смог сделать это в настройках Android, но теперь мне нужно, чтобы это вызывалось в Keyguard. В настоящее время общий объект находится в стадии сборки. Он находится в каталоге /system / lib64 (мой, используемый в настройках Android, также находится в 32-разрядной библиотеке). Он не вызывается, когда я должен его использовать. В logcat не отображаются ошибки, указывающие на отсутствие jni

Мой Android.mk Файл в /jni папке.

 LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MULTILIB := both
LOCAL_MODULE := liblock-jni
LOCAL_SRC_FILES := lock-jni.c
LOCAL_C_INCLUDES  =$(JNI_H_INCLUDE)
LOCAL_CFLAGS  = -O0 -g3
include $(BUILD_SHARED_LIBRARY)
  

Это объявление в моей функции для класса Java.

 JNIEXPORT jstring JNICALL Java_com_android_keyguard_LockJni_stringFromJNI(JNIEnv *env, jobject thisObj , jstring inJNIStr) {
  

У меня есть метод, определенный подобным образом, чтобы вызывать его в моем классе jni. Это находится

 package com.android.keyguard;


import android.app.Activity;
import android.widget.TextView;
import android.os.Bundle;
import android.util.Log;



public class LockJni
{

    public native String  stringFromJNI(String param);

    static {
           Log.d( "library loaded:", "hello");


        System.loadLibrary("lock-jni");
    }
                public LockJni(){

                }
}
  

Спасибо за помощь!!

Комментарии:

1. где вы вызываете stringFromJNI?

2. Я вызываю это в Android KeyguardAbsLayoutVIew