因为需要有些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. [转] vue从入门到进阶:组件Component详解(六)

    https://www.cnblogs.com/moqiutao/p/8328931.html

  2. LeetCode545.Boundary-of-Binary-Tree

    1.头节点为边界节点 2.叶结点为边界节点 3.如果节点在其所在的层中是最左边或最右边,那么也是边界节点. 思路:分成三部分来做:找左边界结点.叶结点.右边界结点. 找左边界结点要遍历root的左子树 ...

  3. ionic 3 热更新 Hot Code Push

    最近用ionic 3 做的app业务做的差不多了,突然想到以后app如果有更新该怎么搞?想到我们的app后期更新应该不大,,最多就是改改bug和增加下用户体验,如果只有一些小的更新,然后提交各个应用商 ...

  4. spark MLlib Classification and regression 学习

    二分类:SVMs,logistic regression,decision trees,random forests,gradient-boosted trees,naive Bayes 多分类:  ...

  5. Python实现字符串反转的几种方法

    面试遇到的一个特无聊的问题--- 要求:在Python环境下用尽可能多的方法反转字符串,例如将s = "abcdef"反转成 "fedcba" 第一种:使用字符 ...

  6. 网络编程-Python高级语法-GIL全局解释器锁

    知识点:GIL全局解释器锁其实和Python没有任何关系,是由于当初编写Python解释器时留下的,它只对多线程有影响,GIL保证同一时刻只有一个线程在运行,即使是多核配置电脑,同一时刻也只会让一个线 ...

  7. Python学习之MySQLdb模块

    摘要: MySQLdb模块用于操作mysql数据库.1.安装MySQLdb模块 yum install MySQL-python -y2.操作流程①.导入模块: import MySQLdb②.连接数 ...

  8. (转)RBAC权限模型——项目实战

    一.前言 权限一句话来理解就是对资源的控制,对web应用来说就是对url的控制,关于权限可以毫不客气的说几乎每个系统都会包含,只不过不同系统关于权限的应用复杂程序不一样而已,现在我们在用的权限模型基本 ...

  9. 前端性能优化 —— 添加Expires头

    简要:添加Expires头能有效的利用浏览器的缓存能力来改善页面的性能,能在后续的页面中有效避免很多不必要的Http请求,WEB服务器使用Expires头来告诉Web客户端它可以使用一个组件的当前副本 ...

  10. Java RE (正则表达式)

    正则表达式,又称规则表达式.(英语:Regular Expression,在代码中常简写为regex.regexp或RE),计算机科学的一个概念.正则表达式通常被用来检索.替换那些符合某个模式(规则) ...