Eclipse中导出到Android Studio的粗心小坑一则
来源:互联网 发布:松江3208g编程类型代码 编辑:程序博客网 时间:2024/06/06 19:59
今天把一个原本是Eclipse下的一个开源项目导入到Android Studio中,Android Studio非常智能,在我导入后,开发了一段时间项目,由于是Eclipse导出时生成的build.gradle文件,所以目录结构没有变化。于是乎我在加上了JNI目录之后,开始加入C代码。等到我编译进手机测试的时候,总是找不到我的库。找不到库的原因一般就是so文件不存在于apk文件中。我就找了一下build\outputs\apk目录下的apk文件,用7zip打开后便是这幅景象:
明明存在jni目录,但是却没有编译so文件进去。
后来我经过一番资料的搜寻得知,既然build.gradle为我们重新映射了目录结构,jni目录是否也正确映射了呢?
果不其然,在main的接收的闭包中没有映射jni目录,仅仅映射了清单文件,assets,src,res这几个常用目录,jni目录没有映射进去。于是乎在build.gradle中加了一句话:
清理了项目,重新Make module,运行一下。果然不会再报找不到库的问题了。
重新用7zip打开apk文件,
lib目录果然存在。
综上所述,由于Eclipse导出的项目的目录和Android Studio不相同,因此编译所需要的目录也需要通过build.gradle脚本告诉gradle在编译时
重新映射这些目录。android studio默认编译使用的目录是/src/main/java, /src/main/res还有/src/main/jni,因为jni很少用到,所以Eclipse在导出gradle的时候没有重新映射,这导致gradle在组织构建apk的时候编译目录中没有找到/src/main/jni,却又不知道开发者将C/C++源码放在了/jni目录中,所以没有编译生成so链接库。解决方法只要在build.gradle当中main的接收闭包参数中加入这一行:
重新make module,运行。解决问题。
后记:
gradle的配置文件非常强大,你可以通过这个机制随意映射你想要的组织的目录风格,可以充分利用gradle脚本去编译生成apk文件,其灵活强大不容小视。这也就知道了Google把开发平台转到Android Studio上、编译系统从ANT或m2android 转移到Gradle上的一个很好的理由吧。当然,现在的Android Studio的版本才到1.1,gradle已经到了2.2.1这个成熟的版本,相比将来还会有更出色的表现。
关于Gradle for Android Studio 的一些知识可以从android开发者官网上找到
传送门:http://developer.android.com/intl/zh-cn/tools/building/configuring-gradle.html
更加具体的描述和build.gradle中的代码块的用法也能在开发者官网上找到:
传送门:http://developer.android.com/intl/zh-cn/tools/building/plugin-for-gradle.html
- Eclipse中导出到Android Studio的粗心小坑一则
- 从eclipse中导出项目到android studio。
- eclipse 项目导出到android studio使用
- 粗心的小明
- android 实现 从eclipse导出项目到android studio
- 将eclipse里的项目移植到android studio中
- 如何将Android Studio的工程导入到eclipse中
- Eclipse项目提交到Android studio中出现的常见问题
- 如何将Android Studio的工程导入到eclipse中
- 如何将Android Studio的工程导入到eclipse中
- 如何将Android Studio的工程导入到eclipse中
- 如何将Android Studio的工程导入到eclipse中
- Eclipse项目迁移到Android Studio中
- eclipse 项目 导入到 Android studio 中
- Eclipse项目导入到Android studio中
- eclipse项目导入到Android Studio中
- eclipse项目导入到Android Studio中
- 从Eclipse中导出的包导入Android Studio中注释全部变乱码
- 第三方支付
- iOS APP网络分析之rvictl(可以捕捉除了Wifi以外的网络类型)
- 用简单的方法做整套UI(教程第一/二/三弹合集)
- iOS开发工具——网络封包分析工具Charles
- 分类回归树CART(上)
- Eclipse中导出到Android Studio的粗心小坑一则
- openstack学习笔记 --- Service
- 更新mac自带的python
- 在Android中创建Socket客户端(实现在线聊天室)
- On the burstiness of visual elements
- mysql创建数据库和表操作外部SQL文件
- manifest原理和用途
- Qt Creator 库设置
- Xilinx FPGA 学习笔记——时钟资源