1、android 类加载器(DexClassLoader的用法),调用其他apk的类中的方法:方式一:   然后在Host中利用下面的方式调用  PackageManager pm = getPackageManager();
        List<ResolveInfo> resolveInfos =  pm.queryIntentActivities(new Intent("            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-06-29 22:42:35
                            
                                171阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            前言最近开发的组件时常出现了运行时加载so库失败问题,每天都会有java.lang.UnsatisfiedLinkError的错误爆出来,而且线上总是偶然复现,很疑惑。所以本文将从AOSP源码简单跟踪Android中的动态链接库so的加载原理,试图找出一丝线索。加载入口# System.loadLibrary[System.java]public static void loadLibrary(S            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-08-17 13:34:07
                            
                                1432阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            一、概述  本节介绍一下so的加载原理,促使我写这个小节的原因有两点:  1.可以在给App瘦身的时候提供参考依据  2.可以给so插件化提供参考依据  下面就开始看so的加载原理吧。二、so加载原理分析  2.1.so的编译类型  在Android中只支持三种CPU架构:x86体系、mips体系、arm体系。而当前主流的是arm体系,mips体系和x86体系基本上已经被淘汰了。所以我们在做App            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-07-25 20:57:52
                            
                                428阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            # Java JNI 加载 SO 文件的简要指南
Java Native Interface (JNI) 是一种编程框架,可以让 Java 代码调用其他语言编写的程序。通常情况下,它用于与 C 或 C++ 编写的本地库进行交互。在 Android 开发中,JNI 也常用于加载和调用 SO(Shared Object)文件。本文将探讨如何在 Java 应用中使用 JNI 加载 SO 文件,并提供代            
                
         
            
            
            
            一、JNI原理1.java加载本地so库的过程:(1)在java类中加载本地.so库文件,并声明native方法;(native方法就是C/C++方法) (也就是在java层只需要加载对应的JNI库和声明由关键字native修饰的函数) (2)在C代码中实现so库中对应的方法; (3)在java层需要调用native方法的地方进行调用;·从动态加载开始看: 动态加载so库:NDK就是用动态加载,动            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-08-03 09:57:40
                            
                                80阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            别人写好的动态库,需要自己写jni包一层,这样就可以在java中调用这个库了。其实还有第二种方法,就是使用jna来调用,这样不用写jni,但是今天我们不讨论jna的用法。这里介绍如何在Android Studio中,编写jni调用他人的.so动态库。复制动态库到项目他人提供的库,需要包含头文件,和.so文件。先看一下我的项目主要目录: 把他人提供的so库放在libs目录下,如图所示,我这里他人提供            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-08-31 19:38:54
                            
                                76阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            JNI及sojava如何调用so库里的方法JNI:Java Native Interface的缩写,用Java调用so库就叫着JNI调用方法://在Java中申明一个Native方法 pub            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2023-05-25 09:58:43
                            
                                269阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            Android JNI 使用的数据结构JNINativeMethod详解:Andoird 中使用了一种不同传统Java JNI的方式来定义其native的函数。其中很重要的区别是Andorid使用了一种Java 和 C 函数的映射表数组,并在其中描述了函数的参数和返回值。这个数组的类型是JNINativeMethod,定义如下:typedef struct {
const char* name;            
                
         
            
            
            
            背景:对于Android工程 Eclipse里编译好的.so文件放到 libs\armeabi下以后, 这样.so文件就可以打包到apk文件里,在apk装到手机上以后  在libs\armeabi下的.so文件应该就会解压到/data/data/这里是你project的包名(比如com.first.second)/lib下。问题:写了个测试的android JNI app,.so已经放到了            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2021-07-30 15:22:06
                            
                                364阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            背景:对于Android工程 Eclipse里编译好的.so文件放到 libs\armeabi下以后, 这样.so文件就可以打包到apk文件里,在apk装到手机上以后 在libs\armeabi下的.so文件应...            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2013-10-21 13:53:00
                            
                                107阅读
                            
                                                                                    
                                2评论
                            
                                                 
                 
                
                             
         
            
            
            
            Java层通过System.load或System.loadLibrary来加载一个so文件,它的定义在Android源码中的路径为libcore/ojluni/src/main/java/java/lang/System.java,执行流程如下:接下来,让我们具体看下System.loadLibrary这个方法的实现。/**
     * Loads the system library spe            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-07-18 18:08:50
                            
                                230阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            在本文我们跳过JNI的底层机制,读者最好先把它想象为本地代码和java代码的粘合剂通俗地说,JNI是一种技术,通过这种技术可以做到以下两点: ·  Java程序中的函数可以调用Native语言写的函数,Native一般指的是C/C++编写的函数。 ·  Native程序中的函数可以调用Java层的函数,也就是在C/C++程序中可以调用Java的函数。Android 中调用C/C            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-09-19 11:48:43
                            
                                79阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            1、so文件介绍    “so”文件是使用C/C++编写生成的,在Android 平台上快速编译、打包该文件,它是一个动态链接库,而生成“so”文件其实就是JNI开发。2、JNI开发简介 (1)、JNI简介   JNI全称为Java Native Interface(JAVA本地调用)。从Java1.1开始,JNI成为java平台的一部分,它允许Java代码和其他语言写的代码(如C&C++            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-07-06 14:58:58
                            
                                124阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            Android JNI 开发 调用Opencv 的so库Android JNI 开发简介:NDK 简介NDK 基础概念ABI 是什么在Android Studio中调用OpenCV的so库补充图文教程 Android JNI 开发简介:JNI是Java Native Interface的缩写,它提供了若干的API实现了Java和其他语言的通信(主要是C&C++)。从Java1.1开始,J            
                
         
            
            
            
            前言音视频开发可以说是当下最主流的技术之一了。原本音视频开发应该是要从C/C++ 基础讲起的,由于篇幅实在过长,就将C/C++教程上传在GitHub了。我们就直接从JNI开始讲起。如有需要C/C++全套入门教程的,可以在我的GitHub获取。那么该篇文章开始就直接进入 NDK 学习了,在进入 NDK 学习之前我们还要学习 JNI 基础。介绍JNI 是 Java 程序设计语言功能功能最强的特征,它允            
                
         
            
            
            
            以图形库skia为例,具体过程如下:1、建立完整的android开发环境,JAVA层的环境SDK、JDK、eclipse都要装,C&C++层的环境NDK、cygwin、git也都要装好。2、下载完整的skia代码,代码自己到google上搜吧(重要提示:wiki,TortoiseSVN)3、通过git下载android源码:xxxx/core,xxxx/base,xxxx/skia三个文件            
                
         
            
            
            
            作为一个移动应用开发者,随着需求的日益增多,Android项目的越来越臃肿,代码量越来越大,现在冷静下来回头看看我们的代码,有多少代码跟业务逻辑没什么关系的 所以,本人自不量力,在github上建了个开源项目,希望能一定程度地简化我的代码-。-现在第一个版本完成,希望有兴趣的朋友能加入一起完善。本人才疏学浅,代码中有写得不妥的地方希望大家不吝赐教哈!github地址:https://gi            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-07-12 10:14:29
                            
                                51阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            一、既有jar包又有so库  比如:百度地图)只需要将jar包放在 libs目录下,然后选中右键add as library 。so 文件也放在libs目录下即可。  二、Android Studio 调用符合JNI标准的 so库 (这类so必须要知道,包含本地方法的包名和类名,否则无法调用)     1. 将SO文件直接放到libs/armeabi下或者jniLibs(这个            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-07-28 11:21:11
                            
                                513阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            引言有时候我们在android开发JNI的时候,会涉及到引用第三方的so和头文件引用。现在网上也有相应的资料,但是还是感觉不全和描述不清晰。这里进行整理一些,方便大家参考。准备工作NDK,进行JNI开发,Android studio中的NDK肯定是需要配好的。需要注意一点的是,如果上比较新的NDK版本的话,在toolchains目录会少几种,需要去下载比较旧的版本把缺失的放进去。原因大概是Goog            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-07-24 21:56:38
                            
                                341阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            文章目录1、简介2、先编译出一个第三方非标准so库1)android studio 新创建一个项目2) main 新创建 jni 文件夹3) 新建 .cpp 文件和 .h 实现 求和功能4)、编写 CMakeLists.txt 用来编译 cpp 文件到so5)配置编译环境6)、编译第三方 非标准 库3、新项目 引用第三方 so 库1)新建 android studio 项目2)新建 java 类            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-07-31 17:16:52
                            
                                2200阅读
                            
                                                                             
                 
                
                                
                    