Ситуация такова - есть Android-приложение с c++ библиотекой (.so файл). Надо использовать эту библиотеку в другом прилождении, не меняя код на c++.
Если создать прилождение, описав все функции для доступа в c++ библиотеку в java-коде и applicationId в gradle и package в AndroidManifest с именем первого приложения, то все работает.
Но если также описать все функции для доступа в c++ библиотеку в java-коде, но поменять applicationId в gradle и package в AndroidManifest на другой, то часть функций не работает.
Примечание - естественно я не меняю имя пакета в java-коде, чтобы работали Java_com_package_name с++ функции.
Мои мысли.
Там есть native функция, которой передается context.
Возможно, надо как-то использовать context от первого прилождения. Есть метод - createPackageContext().
1. Можете, пожалуйста, объяснить как он работает?
2. Как может использоваться context в c++ коде, что он может вызвать? Возможно, надо просто переопределить эти методы в java-классе и все будет работать.
3. К чему вообще может быть доступ из c++ код к Android-приложению? Я так понимаю, он может вызывать java-функции и иметь доступ к assets. К чему он еще имеет доступ?
К чему вообще может быть доступ из c++ код к Android-приложению?
Ко всему вообще. Не только к исполнению функций на стороне Java, но и к зеркальному исполнению кода низкого уровня для проверки правильности результатов работы кода Java.
Ты, определенно, слишком рано взялся за эту задачу. А сама задача, откровенно, попахивает незаконными вещами. Скажем, малварю тебе ни кто тут писать не поможет. Если что, у Тостера в правилах есть пункт 1.2.