当前位置:首页 » 安卓系统 » androidso文件生成

androidso文件生成

发布时间: 2022-12-15 21:25:49

❶ 怎么用jni生成so文件 android studio

task NativeLibs(type: Copy) {
from(new File(project(':MyProject').buildDir, 'native-libs')) { include '**/*.so' }
into new File(buildDir, 'native-libs')
}

tasks.withType(Compile) { compileTask -> compileTask.dependsOn NativeLibs }

clean.dependsOn 'cleanCopyNativeLibs'

tasks.withType(com.android.build.gradle.PackageApplicationTask) { pkgTask ->
pkgTask.jniDir new File(buildDir, 'native-libs')
}

(2)新版本三种方法:
(2.1)打包前先生成.Jar文件后自动解包到apk文件

task nativeLibsToJar(type: Zip, description: 'create a jar archive of the native libs') {
destinationDir file("$buildDir/native-libs")
baseName 'native-libs'
extension 'jar'
from fileTree(dir: 'libs', include: '**/*.so')
into 'lib/'
}

tasks.withType(Compile) {
compileTask -> compileTask.dependsOn(nativeLibsToJar)
}

下面一句话就是打包生成目录(build\native-libs)中的.jar文件

compile fileTree(dir: "$buildDir/native-libs", include: 'native-libs.jar')

(2.2)手动生成.Jar文件后自动解包到apk文件

这个方式需要自己手动进行.SO文件压缩,具体步骤为:将所有需要使用的.so文件压缩为.zip文件(zip中的文件目录结构为: lib/armeabi/*.so)然后把zip文件后缀改为.Jar然后放到libs生成apk就ok

默认就是自动打包所有.Jar文件:

dependencies {
compile fileTree(dir: 'libs', include: '*.jar')
}

(2.3)这也就是现在正在使用的方式(推荐) ,其实无非就是把.SO文件打包到APK的lib文件夹中,假如仔细阅读了Gradle的使用方法,自然就知道其实Gradle官方在新版已经自动实现了打包.SO文件的.很简单级就是在配置的android节点下加入下面的内容就ok:

sourceSets {
main {
jniLibs.srcDirs = ['libs']
}
}

其他地方无需修改,整个项目的配置文件如下:

apply plugin: 'android'

android {
compileSdkVersion 19
buildToolsVersion "19.0.0"

defaultConfig {
minSdkVersion 16
targetSdkVersion 19
versionCode 1
versionName "1.0"
}
buildTypes {
release {
runProguard false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
}
}
sourceSets {
main {
jniLibs.srcDirs = ['libs']
}
}
}

dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])

❷ android studio 怎么生成so文件格式

1.新建一个Project
2.创建native方法
3.执行Build-Make Project方法
4.命令行生成com_jni_example_NativeUtilsh头文件
5.实现h中的方法
6.配置NDK
7.打开Project的localproperties文件添加NDK路径
8.打开app Mole的buildgradle文件在defaultConfig节点里添加一下代码并执行同步操作
9.生成SO文件
10.使用生成SO文件

❸ android studio 怎么生成so

配置NDK
下载ndk

解压配置环境变量

验证配置成功

设置android studio ndk路径

JNI开发
添加native接口注意写好native接口和System.loadLibrary()。
执行Build->Make Project,生成了.class文件,.class文件的生成路径是在 app/build/intermediates/classes/debug下

javah生成c头文件
点击”View->Tool Windows->Terminal“,打开终端,进入 \app\src\main的目录下执行javah命令:
javah -d jni -classpath <SDK_android.jar>;<APP_classes> <class>

然后就看到\app\src\main\jni\com_fy_administrator_jnitoso_JniUtil.h出现了.
1
然后根据.h文件,创建相对应的.cpp文件

创建Android.mk和Application.mk文件
Android.mk
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)

LOCAL_MODULE := JNIDemo
LOCAL_SRC_FILES := testJni.cpp
LOCAL_SRC_FILES += CAdd.cpp

include $(BUILD_SHARED_LIBRARY)

其中LOCAL_PATH是C/C++代码所在目录,也就是我们的jni目录。
LOCAL_MODULE是要编译的库的名称。编译器会自动在前面加上lib,在后面加上.so。
LOCAL_SRC_FILES是要编译的C/C++文件。
Application.mk
APP_ABI := all

#APP_ABI := armeabi armeabi-v7a x86 mips arm64-v8a mips64 x86_64
配置gradle
在defaultConfig下,配置ndk:
ndk {
moleName "JNIDemo" // 生成的so名字
}

在android标签内配置sourceSets:
sourceSets {
main {
jniLibs.srcDirs = ['libs']
}
}
执行ndk-build命令生成所有cpu架构的so库

❹ 如何获取android 系统的so库

android ndk调用第三方的so库文件的步骤如下:
1.将SO文件直接放到libs/armeabi下,然后代码中System.loadLibrary("xxx");再public native static int xxx_xxx_xxx();接下来就可以直接调用xxx_xxx_xxx()方法;
2.第二种方案,创建自己的SO文件,在自己的SO文件里调用第三方SO,再在程序中调用自己的SO,这种比较复杂,需要建java类文件,生成.h文件,编写C源文件include之前生成的.h文件并实现相应方法,最后用android NDK开发包中的ndk-build脚本生成对应的.so共享库;

❺ android中如何编译出64位so文件

如果是在Linux下编译Android源码,有可能是两个原因:
1. lunch命令有32位和64位的区别,注意选能够编译64位so的命令

2. mk文件中有LOCAL_MODULE_PATH的值比如为$(TARGET_OUT_SHARED_LIBRARIES)/hw的改为LOCAL_MODULE_RELATIVE_PATH := hw,后一种可以分别在lib和lib64下分别生成32位和64位的so文件,这个看看编译后的信息就知道了.

❻ Android提取so文件并使用

参考 http://billhoo.blog.51cto.com/2337751/1125559

在 http://www.jianshu.com/p/5bebc6dfbdec
这篇文章中征程的apk:JniTest.apk把后缀改为JnitTest.zip,打开这个文件,在lib下面会有生成好的.so文件,出来。

可以发现这个.so文件叫libMyTest.so。

然后把这个so文件到新的项目的libsarmeabi下,使用和正常的.so文件一样。然后修改app的gradle中的android节点中加入:

然后在mainjava 建立生成.so文件那个项目的包名, 把NdkJniUtils文件过来。当然封装成jar包更好啦。

到此完成,调用NdkJniUtils的方法即可获得.so文件中的内容。

❼ android studio中怎么打包.so库文件

首先在Android Studio工程的app目录下创建整个jni目录,jni目录里写Android.mk、Application.mk以及各类C/C++和汇编源文件。然后跟原来一样,用ndk_build工具去编,然后工具会自动生成libs目录,里面还有每个你在Application.mk里所指定处理器架构的so文件。

完成之后,编辑你对应mole(类似eclipse中的project)目录下的build.gradle文件,为其添加以下代码:

[html] view plain
sourceSets {
main {
jniLibs.srcDirs = ['libs']
}
}

比如本人mole完整的build.gradle文件如下所示:

[html] view plain
apply plugin: 'com.android.application'

android {
compileSdkVersion 22
buildToolsVersion "21.1.1"

defaultConfig {
applicationId "com.example.way.aligesture"
minSdkVersion 15
targetSdkVersion 22
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
sourceSets {
main {
jniLibs.srcDirs = ['libs']
}
}
}

dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile project(':acra')
compile project(':hwdroid')
}

最后记得选中对应的mole右击synchronize同步一下,以便使其生效。如下图所示,mole目录下回生成一个jniLibs目录,再打包生成的apk就会带上.so了。

❽ android studio JNI开发时 编译成功 但是没有生成.so文件 什么原因

1
在交叉编译的时候怎么都无法生成so文件,javah生成头文件没错,c文件也没错,java文件也没错,
2.原因:是JNI文件夹路径不对
3
在执行javah命令时,我进入的是cd
app/src/main/java
这样jni文件夹在java文件夹下,作为一个包存在,这样就无法生成so文件
执行javah的正确姿势:
4
进入app/src/main目录:cd
app/src/main
执行javah命令:javah
javah
-d
jni
-classpath
./Java
lab.sodino.jnitest.MainActivity
5,
-d
jni
头文件生成到jni文件夹(当前在<Project>\app\src\main目录下,所以.h所在的目录为<Project>\app\src\main\jni

-classpath
./java
指定去当前路径下java下寻找包名指定的类
这样再rebuild一下,就会生成so文件了

热点内容
海上传奇南昌 发布:2025-05-18 01:40:31 浏览:131
php怎么访问地址 发布:2025-05-18 01:29:43 浏览:320
fbe加密 发布:2025-05-18 01:16:34 浏览:250
求中点编程 发布:2025-05-18 01:03:14 浏览:841
安卓pay是什么 发布:2025-05-18 01:02:27 浏览:748
免费手游挂机脚本 发布:2025-05-18 00:55:43 浏览:355
sd卡手机存储系统存储 发布:2025-05-18 00:55:28 浏览:638
pythonlistintstr 发布:2025-05-18 00:48:18 浏览:605
轻应用缓存 发布:2025-05-18 00:31:02 浏览:252
鸟存储空气 发布:2025-05-18 00:20:24 浏览:201