因为需要有些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. loj6077

    题解: 网上的做法好像都是容斥 那就先说一下容斥 首先问题等价于求下面这个式子的方案数 $$\sum_{i=1}^{n} ai (0<ai<i) =k$$ 直接$dp$复杂度是$nk$的, ...

  2. matplotlib散点数据-【老鱼学matplotlib】

    之前我们一直在讲述线段图,这次讲述散点图. 散点图的生成很简单,只要调用plt.scatter()函数就可以. 例如: import numpy as np import pandas as pd i ...

  3. Ubuntu在终端执行命令时出现的错误

    1.在安装jdk时无意间结束了安装进程,然后就提示这个错误 E: 无法获得锁 /var/lib/dpkg/lock - open (11: 资源暂时不可用)E: 无法锁定管理目录(/var/lib/d ...

  4. webpack报错运行时没有定义

    一.问题描述 ReferenceError: regeneratorRuntime is not defined 二.问题分析 缺少regenerator的运行时库,具体原理,可查看babel文章. ...

  5. Spark环境搭建(四)-----------数据仓库Hive环境搭建

    Hive产生背景 1)MapReduce的编程不便,需通过Java语言等编写程序 2) HDFS上的文缺失Schema(在数据库中的表名列名等),方便开发者通过SQL的方式处理结构化的数据,而不需要J ...

  6. 如何设计一个restful风格的API

    1.API接口应该尽量兼容之前的版本,在URL上应保留版本号,并同时兼容多个版本 2.每一个URI代表一个资源 3.请求方式要与http请求方式一致,GET(获取),POST(新增),PUT(更新全部 ...

  7. C# - 获取windows系统特殊文件夹路径

    一.路径分类 1.绝对路径 完整路径,从磁盘符号开始,如:C:\Windows 2.相对路径 以当前路径为起点,不包含磁盘符号,通常使用“..\”符号来访问上级目录中的文件或文件夹. ../Windo ...

  8. 2017-2018 ACM-ICPC, NEERC, Northern Subregional Contest

    A. Auxiliary Project 完全背包. #include<stdio.h> #include<iostream> #include<string.h> ...

  9. Linux 内核参数 arp_ignore & arp_announce 详解

    arp_ignore定义了对目标地址为本机IP的ARP询问的不同应答模式. arp_announce对网络接口(网卡)上发出的ARP请求包中的源IP地址作出相应的限制:主机会根据这个参数值的不同选择使 ...

  10. 十、JSTL标签库

      l JSTL标签库(重点) l 自定义标签(理解) l MVC设计模式(重点中的重点) l Java三层框架(重点中的重点) JSTL标签库 1 什么是JSTL JSTL是apache对EL表达式 ...