×

android打包.so文件

android打包.so文件(android打包apk)

admin admin 发表于2023-03-29 03:19:09 浏览56 评论0

抢沙发发表评论

本文目录一览:

Android Gradle so文件注意事项

项目管理迁移到gradle已经用了大半年了,对so文件的添加了解的还不清楚,直到今天经过各种试验,总算是得出一些心得。

因为项目需要集成喜马拉雅的SDK,他们提供了播放器的so库,按照他们的官方文档一步一步去集成,包括参考他们SDK DEMO的例子,尝试了快一天,一直报错,报错的原因是找不到so文件,我添加so的方法如下:

1.在project/src/main/目录下建立jniLibs

2.复制SDK提供的armeabi文件夹放到jniLibs下,build.gradle文件无需修改。

3.编译运行,无法成功。

经过多次尝试,我又尝试着自己在jniLibs下建了另外一个文件夹armeabi-v7a,然后把armeabi文件下的两个so文件复制到此目录下:

编译成功,运行也成功,播放器能正常播放了。

armeabi跟armeabi-v7a目录下的两个so文件是一样的,但是不知道为什么加了armeabi-v7a这个目录就好了。

确认so文件是否打包到apk了可以用adb 查看/data/app/com.xxx.xxx/lib/arm(需要root权限)下是否生成了.so文件,比如上面编译成功后,会在此目录下生成相应的so文件-android打包.so文件

之前用高德地图的时候也碰到过这个问题,so无法打包到apk,高德的SDK也只是提供了armeabi,遇到这种情况,我们可以自己建立一个armeabi-v7a的目录去解决问题。

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

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

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

[html] view plaincopy

sourceSets {

main {

jniLibs.srcDirs = ['libs']

}

}

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

[html] view plaincopy

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')

}

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

android studio 怎么打包so库

1) 在硬盘任意位置建立空文件夹 “lib” (注意名字是 “lib” 而不是 “libs” )

2) 把原来的 libs 目录下的 armeabi 文件夹拷贝至 刚建立的 lib 目录下. (armeabi文件夹中的.so文件也会被一并拷入)

3) 将刚建立的 “lib” 目录打包压缩成 .zip 文件, 同时改名为 “armeabi.jar”

4) 将 armeabi.jar 放入原来的 libs 目录下 (和其他第三方jar包放在一起)

5)更新as的第三方库即可

android so库怎么打包的

在apk里打包进.so文件的方法

有两种方法,

1 是在Android.mk文件里增加

LOCAL_JNI_SHARED_LIBRARIES := libxxx

这样在编译的时候,NDK自动会把这个libxxx打包进apk;

放在youapk/lib/目录下。

2 是在应用的目录下手工建

libs/armeabi

目录,然后把libxxx.so拷贝到这个目录下,

这样NDK就会自动把这个libxxx.so打包进apk,位置还是在

放在youapk/lib/目录下。

在代码里,使用

System.loadLibrary("xxx");

就可以加载这个动态库了。

这里要注意,参数只写xxx就可以了,不需要写libxxx,也不需要写libxxx.so。

还有一点要说明,System.loadLibrary这个函数会在如下路径搜索libxxx.so文件:

/system/lib

/data/data/you apk package/lib

但,如果libxxx.so还依赖其它.so文件,比如libyyy.so,则System.loadLibrary只会

在/system/lib目录下去找,如果没找到,它不会自动到/data/data/you apk package/lib

下去找,这个时候就会报动态库没找到的错;

解决方法是在load libxxx.so之前,先load libyyy.so,如下:

System.loadLibrary("yyy");

System.loadLibrary("xxx");

androidstudio怎么将写好的so文件工程打包成jar包

Android Studio的so库导入和Eclipse的方式有些不同。在Android Studio中,要在工程的src/main下面新建一个jniLibs文件夹,然后将所用到的第三方so库复制进来,然后找到Project下的build.gradle文件,在其中添加以下几行代码:-android打包.so文件

buildTypes {

release {

minifyEnabled false

proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'

}

}

task nativeLibsToJar(type: Zip, description: "create a jar archive of the native libs") {

destinationDir file("$projectDir/libs")

baseName "Native_Libs2"

extension "jar"

from fileTree(dir: "libs", include: "**/*.so")

into "lib"

}

然后重新Gradle一下代码,第三方so库就加了进来。

参考