Android Studio 添加 lib*.so 文件

Android Studio 是一个全新的 Android 开发环境,基于IntelliJ IDEA. 类似 Eclipse ADT,Android Studio 提供了集成的 Android 开发工具用于开发和调试,在IDEA的基础上,Android Studio 提供:

  1. 基于Gradle的构建支持
  2. Android 专属的重构和快速修复
  3. 提示工具以捕获性能、可用性、版本兼容性等问题
  4. 支持 ProGuard 和应用签名
  5. 基于模板的向导来生成常用的 Andoid 应用设计和组件
  6. 功能强大的布局编辑器,可以让你拖拉 UI 控件并进行效果预览
    ——————— 百度百科

Android Stuido 是Google发布的全新的 Android 开发工具,采用了新的 Gradle 构建系统,与 Eclipse 或者 Ant 方式的构建系统有很大区别。为了方便使用 Eclipse 的开发者迁移项目到 Android Studio,在最新的 Eclipse ADT 插件中提供了导出项目为 Gradle 的工具,使用方法:

打开菜单: File -> Export

export

然后选择要导出的项目,导出成功后会在项目的根目录下生成 build.gradle 文件,之后再用 Android Stuido 导入这个项目就完成了迁移

尽管有 ADT 提供的插件方便迁移 Eclipse 项目,但是导出并不是很完美;因为 Android Studio 使用的是新的 Gradle 构建系统,对 JNI 的支持方式有所不同,按上面的方式导出的项目,打包时 *.so 文件不会自动的添加到 APK;下面来介绍 Android Studio 添加 *.so 的几种方式:

1. 使用 Android Studio 建立的项目添加 *.so

如果直接使用 Android Studio 建立项目,项目结构与 Eclipse 建立的项目结构是不同的:

  • [module_name]
    • ············[src]
    • ················[main]
    • ····················[jniLibs] ———————- JNI 目录
    • ·····························[armeabi]
    • ·····························[armeabi-v7a]
    • ·····························[x86]
    • ·····························[mips]

使用 Android Studio 建立的项目,直接将 *.so 按上面的目录结构放置就可以了。

示例项目:

jnipath

代码调用:

1
2
String libName = "helloNDK"; // the module name of the library, without .so
System.loadLibrary( libName );

2. 编辑 build.gradle

如果是使用的 Eclipse 导出的项目或者由于别的原因 *.so 必须放置在其他的目录,这时可以编辑 build.gradle 脚本,自定义 *.so 目录:

  • 方法一:

    1
    2
    3
    4
    5
    6
    
    android {
        // .. android settings ..
        sourceSets.main {
          jniLibs.srcDir 'src/main/myCppLibraries' // <-- Set your folder here!
        }
     }
    
  • 方法二:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    
    task copyNativeLibs(type: Copy) {
        from fileTree(dir: 'libs', include: '**/*.so' )  into  'build/native-libs'
    }
    
    tasks.withType(Compile) { compileTask -> compileTask.dependsOn copyNativeLibs }
    
    clean.dependsOn 'cleanCopyNativeLibs'
    
    tasks.withType(PackageApplication) { pkgTask ->
        pkgTask.jniFolders = new HashSet()
        pkgTask.jniFolders .add(new File(projectDir, 'build/native-libs'))
    }
    
    
    转载:http://ruikye.com/2014/08/30/androidstudio_so/
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值