怎么把so打包文件打包进apkk

命令方式将so文件打包进apk_文档下载
亿万文档 免费下载
当前位置: &
& 命令方式将so文件打包进apk
命令方式将so文件打包进apk
本文详细介绍了将SO文件打包进apk的步骤
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE_TAGS := user eng
LOCAL_MODULE
:= libapptest
LOCAL_SRC_FILES := callapp.c
LOCAL_C_INCLUDES += \
$(JNI_H_INCLUDE)
LOCAL_PRELINK_MODULE := false
include $(BUILD_SHARED_LIBRARY)
LOCAL_MODULE_TAGS :要和工程的一致,否则编译不通过
LOCAL_C_INCLUDES += \
$(JNI_H_INCLUDE)
为了让jni编译通过,因为工程通过jni调用本地库
#include &jni.h&
JNIEXPORT jint JNICALL Java_test_jni_jnitest_appadd
(JNIEnv *env, jobject obj, jint x, jint y){
return x +y;
d) 把工程文件放到SDK platform\packages\apps目录下,然后进入该目录,
命令里输入mm,进行该工程的编译.(之前要再platform之前把工程目标设定好)
e) 编译出来的apk 在platform/out/target/product/sk886x/system/app里可
以找到,其中sk886x 是目标平台. 打开该apk文件,可以看到libapptest.so存在在包里的libs/armeabi文件夹里. 运行该apk,可以正常运行,显示正确答案.
2. 本地库so文件里加打印消息.
a) 这样修改jni文件夹下Android.mk.添加
LOCAL_SHARED_LIBRARIES := libutils
b) Callapp.c如下
#include &jni.h&
#define LOG_TAG &TestThunderLib&
#undef LOG
#include &utils/Log.h&
JNIEXPORT jint JNICALL Java_test_jni_jnitest_appadd
(JNIEnv *env, jobject obj, jint x, jint y){
LOGD(&TEST %d+%d=%d&,x,y,x+y);
return x+y;//add22(x,y);
c) 重新再工程根目录输入mm,编译得到apk,运行到目标机,通过uart 敲
入命令 logcat,会发现有 log 输出 TEST 55 + 66 = 121 等正确信息
3. 在以上的基础上,我引进另外的库文件,给callapp.c调用.
a) 此库我们用NDK 编译出来,请保证和目标平台版本一致.文件如下: i. Add.c
#include &add.h&
Word文档免费下载: (下载1-4页,共4页)
在 apk 里打包进.so 文件的方法有两种,一 是在 Android.mk 文件里增加 “LOCAL_JNI_SHARED_LIBRARIES := libxxx” ,这样在编译的时候,NDK 自动会把这个 lib...打开 windows cmd 命令行 进入工程文件夹的 src 目录 运行编译命令 生成 JNI ...So 库会被自动打包进 apk,结果如果运行调用成功。 文档贡献者 macrowh 贡献于...编译打包:(重新把修改过的文件打包为 APK 格式) 打包命令为:apktool b DJ(DJ...文件,开头和结尾必须分别为“lib”和“.so”,否则是丌会打包到 apk 文件中 ...终端命令+APK编译_计算机软件及应用_IT/计算机_专业...文件打包成 jpg.tar 后,并 且将其用 compress ...通过 unzip 行命令解压,指定字符集 unzip -O CP...如何通过命令行或者使用代码打开一个 apk 文件
17:30 1669 人阅读 评论(0) 收藏 举报 androidnulleclipsepathstringtools 命令行打开方式: 1、首先...(这个命令就是说回编译 f 文件夹,b 是回编译,f 是指 F http://code....甚至可以通过把一些不是 so 文件的文 件通过改名打包到 apk 中,具体能干些...HelloWorld项目创建到打包生成apk】_计算机软件及应用...2 来可以熟悉下命令行,如果设置没问题的情况下会出现...项目文件 用 cgywin 将该项目打包为.so 文件 将...如果有 SO 文件,就把它直接 拉出来 三、将刚才拉出的文件放进你的虚拟机,厨房对应的目录下 system/lib 四、将刚才的百度输入法 APK 移动到虚拟机厨房 system...那么在这篇拙文中我强调 3 点: 1、如何将编译好的 SO 文件打包到 APK 中?...布局文件中添加两个编辑框,一个用来发送命令,一个用来 接收命令: [html] view...HelloWorld项目创建到打包生成apk】_计算机软件及应用...2 来可以熟悉下命令行,如果设置没问题的情况下会出现...项目文件 用 cgywin 将该项目打包为.so 文件 将...中的方法: 1 (1)源码编译后,把apk拷贝到out\...(2) 执行命令make snod , 把添加的spk编到system...解压apk,如其中lib(.so)文件,把 .so文件copy到...在eclipse里,.so文件eclipse会帮助我们自动打包进apk文件,通常是放在:libs/armeabi目录,然后把libxxx.so拷贝到这个目录下,这样NDK就会自动把这个libxxx.so打包进apk,安装后位置是在放在your_apk_package_name/lib/目录下。
android studio就有些不同了,下面给大家介绍一下,方法很简单,一学就会。
这里给大家介绍三种方法,来自网络和QQ群:
将需要打包进apk内的so文件放入项目文件夹下的libs目录,然后在app内(注意是app内的,不是project的)的build.gradle中的android { & & & &}中添加如下代码
&span style="font-size:14"&&span style="font-size:14"&sourceSets {
jniLibs.srcDirs = ['libs']
}&/span&&/span&
添加后是这样的(仅为范例):
&span style="font-size:14"&apply plugin: 'android'
compileSdkVersion 19
buildToolsVersion "19.0.0"
defaultConfig {
minSdkVersion 16
targetSdkVersion 19
versionCode 1
versionName "1.0"
buildTypes {
runProguard false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
sourceSets {
jniLibs.srcDirs = ['libs']
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
这样就可以把so文件打包进apk了,这是笔者亲测可用的一个。
2.来自QQ群:
在项目内新建目录:jniLibs文件夹(与res目录同级),然后将so文件放入其中,不用配置gradle内即可自动打包
这个方法,未测试,但来自google官方文档,必然有用。
来自QQ群:Android Studio Tech
1) 在硬盘任意位置建立空文件夹 &lib& (注意名字是 &lib& 而不是 &libs& )
2) 把原来的 libs 目录下的 armeabi 文件夹拷贝至 刚建立的 lib 目录下. (armeabi文件夹中的.so文件也会被一并拷入)
3) 将刚建立的 &lib& 目录打包压缩成 .zip 文件, 同时改名为 &armeabi.jar&
4) 将 armeabi.jar 放入原来的 libs 目录下 (和其他第三方jar包放在一起)
5)更新as的第三方库即可
网络上挺认同的方法,不知道适不适用于正式版的as。
经历了这个事件,才发现浏览官方文档是多么的重要,不过在天朝&伟大的墙&内,可是苦了我们开发者了。
希望各位志同道合的朋友:再忙也要看看官方文档!再忙也要看看
阅读(...) 评论()匿名用户不能发表回复!|
每天回帖即可获得10分可用分!小技巧:
你还可以输入10000个字符
(Ctrl+Enter)
请遵守CSDN,不得违反国家法律法规。
转载文章请注明出自“CSDN(www.csdn.net)”。如是商业用途请联系原作者。android 打包.so到apk -
- ITeye博客
博客分类:
1,首先在Android.mk文件加入下面的设置,说明要调用的so库。
LOCAL_JNI_SHARED_LIBRARIES := libxxx \
&&&&&&&&&&&&&&&&&&&&&&&&&&&&& libyyy \
2,在应用的目录下手工建libs/armeabi目录,然后把libxxx.so, libyyy.xo拷贝到这个目录下。
3, 在代码里,使用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");
4,用adb install 安装apk后,这些库会放在 /data/data/youapk/lib/目录下。
浏览: 188425 次
来自: 北京
不是说 android 5.0 才支持Camera2吗?
xmp_toolkit 导入会出错呀 还是不能再eclipse ...
liuxiaomei_1990lxm 写道它怎么也自动找不到我 ...
它怎么也自动找不到我自己配置的mysql数据库,这是什么原因呢 ...

我要回帖

更多关于 文件打包进apk 的文章

 

随机推荐