本文目录一览:
- 1、Android Gradle so文件注意事项
- 2、android studio中怎么打包.so库文件
- 3、android studio 怎么打包so库
- 4、android so库怎么打包的
- 5、androidstudio怎么将写好的so文件工程打包成jar包
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库就加了进来。
参考