草庐IT

android - 检查 C/ native 代码中的 .apk 签名

我开发了一个Android应用程序,其中还包含一个用C编写的native部分(不依赖于应用程序)。如果共享库不工作,应用程序本身就毫无用处。我想让native部分(一个共享库)只做它的工作,如果存在一个未修改的应用程序版本(.apk),它已经交付。对我来说最好的方法是这样的:安装应用共享库检查应用程序/.apk的签名/哈希仅当签名与已知签名匹配时才工作通过这种方式,我想保护我的应用程序免受修改和盗版。这样做有什么技巧吗?我刚刚找到了在Java中检查自己的签名的帖子,但如果可以反编译应用程序,那就不是开玩笑了。 最佳答案 由于我被要求

android - 如何将字节数组从 android java 类传递到 JNI C NDK?

我在java类中有字节数组,我想将该字节数组传递给JNIC类,我无法在JNIC中访问该数组,请帮忙。 最佳答案 您需要像这样声明接收数组的JNI函数(在Java中):privatenativevoidsendData(byte[]data);您可以像调用任何其他函数一样调用该函数:sendData(buffer);然后在您的C代码中实现如下函数:JNIEXPORTvoidJNICALLJava_com_packageXXX_yourClass_sendData(JNIEnv*env,jobjectthiz,jbyteArraydat

java - 安卓NDK : Calling Java functions from C++

我是JNI的新手,在将我的C++iOS代码移植到JNI之前,我想弄清楚某些事情是如何工作的。我成功地让NDK示例之一在AndroidStudio中运行,我可以看到Java如何调用C++函数。我一直在四处搜索并获取大量代码,但我无法让它在我的特定实现中工作。为了测试它是如何工作的,我在java中设置了一个简单的文本日志函数,我试图从我的native代码调用它,但我遇到了问题。这是我的Java函数:publicstaticvoidlog(Strings){Log.d("Native",s);}和C++:voidLog(std::strings){JNIEnv*env;g_JavaVM->G

android - 如何使用 NDK 查找我的 C++ 编写的 Android 应用程序的内存使用情况

我正在使用NDK将一个用C++编写的游戏移植到Android。我需要知道它在运行时消耗了多少内存。我正在寻找以编程方式查找用C++编写的Android应用程序的内存使用情况。 最佳答案 这两个函数基于JonnyBoy的回答。staticlonggetNativeHeapAllocatedSize(JNIEnv*env){jclassclazz=(*env)->FindClass(env,"android/os/Debug");if(clazz){jmethodIDmid=(*env)->GetStaticMethodID(env,c

为什么没有Docker-Compose Env_file工作,但环境会做?

当我在docker-compose.yml中使用env_file时,它可以正确构建,但是当我尝试使用docker-compose时,我的节点应用程序可以在process.env对象中找到env_file变量。这是我的Docker-Compose文件:node1:container_name:node01env_file:./env/node1.production.env#environment:#-SOME_VALUE=9599build:context:./node1dockerfile:dockerfileports:-"3000:3000"networks:-dev_net这是我的no

java - 在 Android 上用异常替换 JNI 崩溃

这个问题在这里已经有了答案:ARTpreventsanyJavacallsfromJNIduringnativesignalhandling(1个回答)关闭4年前。我开发了一个使用nativeC库的Android应用程序。我可以使用JNI成功地编译整个东西,并且一切顺利。但是,nativeC库有时会崩溃(最常见的是SIGSEGV)。反过来,这会导致我的应用程序崩溃,而不会向用户发出任何有意义的通知。我想要实现的是:使用信号处理程序(sigaction)在native代码中捕获信号以防止随机崩溃在C库中抛出Java可以捕获的异常在Java中捕获异常,为用户生成有意义的警告消息并保持应用运

odoo16前端框架源码阅读——env.js

env.js(env的初始化以及服务的加载)路径:addons\web\static\src\env.js这个文件的作用就是初始化env,主要是加载所有的服务。如orm,title,dialog等。1、env.js的加载时机前文我们讲过前端的启动函数,start.js,其中有这么两句,这里有两个函数makeEnv和startServices,都在同级目录的env.js里constenv=makeEnv();awaitstartServices(env);2、makeEnv()exportfunctionmakeEnv(){return{bus:newEventBus(),services:{}

android maven 插件在 Eclipse 中没有获取 ANDROID_HOME env 变量

我正在开发一个Android应用程序项目,它是一个Maven项目。当我尝试以“maveninstall”运行时,这就是我得到的:“无法在项目android-client上执行objective-com.jayway.maven.plugins.android.generation2:android-maven-plugin:3.1.1:generate-sources(default-generate-sources):没有AndroidSDK路径可以找到。您可以在pom文件的插件配置部分使用...或...或在命令行上使用-Dandroid.sdk.path=...或通过设置环境变量A

Anaconda莫名其妙出现:Unable to create process using ‘C:\Users\<UserName>\.conda\envs\YOLOV5_obb\python.exe

今天在anaconda装了一个新环境后电脑莫名其妙的出现了报错Unabletocreateprocessusing‘C:\Users\MasterLee.conda\envs\YOLOV5_obb\python.exe“C:\Users\MasterLee.conda\envs\YOLOV5_obb\Scripts\pip-script.py”installnumpy’原因是我之前用的都是python3.7,但是今天新环境用了python3.9.而后者没有被添加进系统环境变量。理论上应该是自动添加的啊,不知道哪里出现问题了。于是手动添加。打开下面的路径:C:\Users\你的用户名字\AppD

android - 在 Android 中从 native c 返回 jbyteArray

我使用nativec将数据从音频文件读取到jbyte指针。现在我想将它作为jbyteArray发送到java。jbyteArrayJava_com_app_audio_player_readData(JNIEnv*env,jobjectjobj,jstringreadPath){FILE*fin;constchar*inFile=(*env)->GetStringUTFChars(env,readPath,0);fin=fopen(inFile,"r");fseek(fin,0,SEEK_END);//seektoendoffileintsize=ftell(fin);//getcur