因为需要有些ndk的开发,cmakelists里需要定义不同的变量,这个在网上搜索解决方案,不是很容易就直接找到答案。

尝试了不少,最后找到解决方案。升级Gradle3.0,这个文章价值高。

在raspi平台下,需要使用到androidthings的库,但全志的R16平台下,支持的android版本低,没有androidthings的库。我就这样做的。

1. 修改 几个app和依赖cpp库的build.gradle和androidmanifest.xml文件。

app的build.gradle加入了:

flavorDimensions "platform"
productFlavors {
raspi {
dimension "platform"
minSdkVersion 23
buildConfigField 'String', "THINGSLIB", "com.google.android.things"
applicationId 'com.estone.uvc.raspirf4463test'
targetSdkVersion 27
versionCode 1
versionName '1.0'
versionNameSuffix '-ras'
}
r16 {
dimension "platform"
minSdkVersion 19
buildConfigField 'String', "THINGSLIB", ""
applicationId 'com.estone.uvc.raspirf4463test'
targetSdkVersion 27
versionCode 1
versionName '1.0'
versionNameSuffix '-r16'
}
} 依赖库的buid.gradle这样修改:
    flavorDimensions "platform"

    productFlavors {
r16 {
dimension "platform"
minSdkVersion 19
targetSdkVersion 23
buildConfigField 'String', "THINGSLIB", ""
testInstrumentationRunner 'android.support.test.runner.AndroidJUnitRunner'
versionCode 1
versionName '1.0'
externalNativeBuild {
cmake {
arguments "-DPLATFORM=R16"
}
}
// applicationIdSuffix ".r16"
}
raspi {
dimension "platform"
minSdkVersion 23
targetSdkVersion 27
buildConfigField 'String', "THINGSLIB", "com.google.android.things"
versionCode 1
versionName '1.0'
externalNativeBuild {
cmake {
arguments "-DPLATFORM=RASPI"
}
}
}
}
rapsi的minisdkversion不能是19,定义THINGSLIB,是要传导到androidmanifest.xml中。
每个app和依赖库的androidmanifest.xml都这样修改:
<!--<uses-library android:name="com.google.android.things" />-->
<uses-library android:name="${THINGSLIB}" /> 2. 修改依赖库的CMakeLists.txt文件,

set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_CURRENT_SOURCE_DIR}/../../../libandroidthings)
find_package(AndroidThings REQUIRED)

add_library(bsp4463 SHARED
RF4463.cpp RF4463.h radio_config_Si4463.h RF4463_JNI.cpp)

target_include_directories(bsp4463 PRIVATE
${PROJECT_DIR}/android-system-properties
${ANDROID_NDK}/sources/android/native_app_glue
${ANDROIDTHINGS_INCLUDE_DIRS})

if(PLATFORM STREQUAL "RASPI")
add_library(androidthings SHARED
IMPORTED)
set_target_properties(androidthings
PROPERTIES IMPORTED_LOCATION
${ANDROIDTHINGS_LIBRARIES})
endif()

if(PLATFORM STREQUAL "RASPI")
ADD_DEFINITIONS(-D__RASPI)
target_link_libraries(bsp4463
android
log
androidthings)
else()
target_link_libraries(bsp4463
android
log)
endif()

依赖库(Cpp库)的build.gradle,通过 arguments "-DPLATFORM=RASPI",把参数传入到cmake中,cmake中检查变量PLATFORM,……。

												

andorid开发build.gradle 增加几种产品的方法的更多相关文章

  1. Android Studio下“Error:Could not find com.android.tools.build:gradle:2.2.1”的解决方法

    ref from: Android Studio下“Error:Could not find com.android.tools.build:gradle:2.2.1”的解决方法http://blog ...

  2. springboot的build.gradle增加阿里仓库地址以及eclipse增加lombok

    该随笔仅限自己记录,请谨慎参考!! 为什么把这2块内容放一个标题里? 发现lombok和eclipse结合的一些问题 关于lombok如何与eclipse结合,网上应该有很多教程,我这块已经做过了,但 ...

  3. Android开发之深入理解Android Studio构建文件build.gradle配置

    摘要: 每周一次,深入学习Android教程,TeachCourse今天带来的一篇关于Android Studio构建文件build.gradle的相关配置,重点学习几个方面的内容:1.applica ...

  4. Android studio中2种build.gradle文件介绍

    根目录下的build.gradle通常不需要修改这个文件中的内容,除非需要添加一些全局的项目构建配置 buildscript { repositories { google() //声明代码托管仓库G ...

  5. android开发里跳过的坑-AS导入NDK工程提示错误 No such property: sdkHandler for class: com.android.build.gradle.LibraryPlugin

    接到一个NDK工程需要调试,导入后发现总是提示错误 Error:(37, 1) A problem occurred evaluating project ':libuvccamera'.> N ...

  6. build.gradle 详解(一)

    简述: 1) Java 开发中有两个大名鼎鼎的项目构建 ANT.Maven. 2) Google 推荐使用的 Android studio 是采用 Gradle 来构建项目.Gradle 是一个非常先 ...

  7. Android Project和app中两个build.gradle配置的区别

    Android 开发也挺长时间了,从开始就使用的AndroidStudio开发,但是说下来其实自己对AS(AndroidStudio简称)还真的是不了解不深入.好吧,其实我只知道AS是一个相当强大的工 ...

  8. Axis2开发WebService客户端 的3种方式

    Axis2开发WebService客户端 的3种方式 在dos命令下   wsdl2java        -uri    wsdl的地址(网络上或者本地)   -p  com.whir.ezoffi ...

  9. 对于在Android Studio 的 build.gradle 中的默认applicationId 要不要写呢?

    起因 刚完成一个版本的开发.刚上Google play 就有用户反映无法更新应用.错误代码为:Can't install app "****" can' be installed. ...

随机推荐

  1. SQL Server2012如何导出sql脚本并且还原数据库

    一  备份数据库 1  选择某一个数据库,右键依次选择:任务==>生成脚本: 2  选择要编写脚本的数据库对象,注意此处可以选择特定的数据库对象,我们可以选择我们需要备份的数据表. 3   在当 ...

  2. PHP实现微信开发中提现功能(企业付款到用户零钱)

    一.实现该功能目的 这几天在小程序里要实现用户从系统中提现到零钱的功能,查了一下文档可以使用 企业付款到用户零钱 来实现: 官方文档:https://pay.weixin.qq.com/wiki/do ...

  3. vmware虚拟机使用静态IP上网的方法

    本文转自:https://www.cnblogs.com/flyfish919/p/7083523.html 作者:云里有棵树 我的物理机使用的是路由wifi,然后虚拟机使用静态IP上网的方法总结如下 ...

  4. 在XPS13 上安装Ubuntu 16.04

    1 准备系统安装U盘 使用常见的光盘工具软件ultraISO. (1)首先使用UltraISO打开Ubuntu-16.04.4-desktop-amd64.iso安装映像. (2)在菜单栏中,选择&q ...

  5. day18常用模块之re模块

    简单认识正则表达式 正则测试工具:http://tool.chinaz.com/regex/ 元字符,单个字符匹配 . 匹配除换行符以外的任意字符 \w 匹配字母数字下划线(word) \s 匹配任意 ...

  6. 网络安全第一集之【SQL注入:sqlmap入门】

    1,安装sqlmap和python环境 2,对于环境变量超长问题 3,使用sqlmap: sqlmap.py -u "http://k2.hlxy.net/csdw/news1.asp?dp ...

  7. gitLib操作笔录《一》:创建分支,切换分支,提交分支到远程,以及基本代码clone与更新提交到远程操作指令

    git 操作经验注:master表示的是主线,origin 表示远程源 创建分支:git checkout -b < branch_name >或 < master >切换分支 ...

  8. 机器学习之--KNN算法简单实现

    # # kNN 分类算法 a = np.array([[1,1],[1.2,1.5],[0.3,0.4],[0.2,0.5]]) #构造样本数据 labels = ['A','A','B','B'] ...

  9. Hadoop Yarn 框架原理及运作机制及与MapReduce比较

    Hadoop 和 MRv1 简单介绍 Hadoop 集群可从单一节点(其中所有 Hadoop 实体都在同一个节点上运行)扩展到数千个节点(其中的功能分散在各个节点之间,以增加并行处理活动).图 1 演 ...

  10. Django——在线教育项目总结

    项目简介 在线教育平台 软件依赖: WEB框架:Django(1.11.7).Django REST framework 前端框架:Vue(2.5.16) 数据库: MySql.redis 支付平台: ...