SDL中文论坛

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 3836|回复: 0
打印 上一主题 下一主题

[Android Studio] Android Studio(2.0)

[复制链接]

149

主题

331

帖子

2445

积分

版主

Rank: 7Rank: 7Rank: 7

积分
2445
跳转到指定楼层
楼主
发表于 2016-5-13 23:05:37 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
Android的JNI开发主要有两种情况:一种是使用已经编译好的.so动态库(自用自写的Android.mk);一种是使用c/c++源代码开发(由gradle自动生成Android.mk),现阶段Rose是使用第一种方法。主要原因是第二种生成的“LOCAL_C_INCLUDES”会使编译变复杂并可能失败。

LOCAL_C_INCLUDES是Android.mk中可容许字段,指示C/C++可搜索的头文件目录。用gradle生成时,它不灵活是次要的,更重要是可能造成编辑失败。

举个例子,build.gradle有这样语句。
  1. android {
  2.         sourceSets.main {
  3.                 jni.srcDirs = ['src/main/jni',
  4.                         '../../src-test']
  5.         }
  6. }
复制代码
由它生成的Android.mk是以下语句。
  1. LOCAL_SRC_FILES := \
  2.         C:\ddksample\MyApplication\app\src\main\jni\myCode.cpp \
  3.         C:\ddksample\src-test\plugin.cpp \

  4. LOCAL_C_INCLUDES += C:\ddksample\MyApplication\app\src\main\jni
  5. LOCAL_C_INCLUDES += C:\ddksample\src-test
复制代码

从以上看出,gradle会以每个srcDir生成对应一个LOCAL_C_INCLUDES,当项止存在同名头文件时,rose中就存在不少同名头文件,它会造成编译失败。

当然,自写Android.mk缺点是显而易见的,1)不易维护;2)不能调试NDK代码。但在gradle还不成熟情况下,Rose只能继续采用这种方法。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|丽谷软件|libsdl.cn

GMT+8, 2025-5-2 03:39 , Processed in 0.051175 second(s), 20 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表