andorid开发build.gradle 增加几种产品的方法
因为需要有些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 增加几种产品的方法的更多相关文章
- 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 ...
- springboot的build.gradle增加阿里仓库地址以及eclipse增加lombok
该随笔仅限自己记录,请谨慎参考!! 为什么把这2块内容放一个标题里? 发现lombok和eclipse结合的一些问题 关于lombok如何与eclipse结合,网上应该有很多教程,我这块已经做过了,但 ...
- Android开发之深入理解Android Studio构建文件build.gradle配置
摘要: 每周一次,深入学习Android教程,TeachCourse今天带来的一篇关于Android Studio构建文件build.gradle的相关配置,重点学习几个方面的内容:1.applica ...
- Android studio中2种build.gradle文件介绍
根目录下的build.gradle通常不需要修改这个文件中的内容,除非需要添加一些全局的项目构建配置 buildscript { repositories { google() //声明代码托管仓库G ...
- 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 ...
- build.gradle 详解(一)
简述: 1) Java 开发中有两个大名鼎鼎的项目构建 ANT.Maven. 2) Google 推荐使用的 Android studio 是采用 Gradle 来构建项目.Gradle 是一个非常先 ...
- Android Project和app中两个build.gradle配置的区别
Android 开发也挺长时间了,从开始就使用的AndroidStudio开发,但是说下来其实自己对AS(AndroidStudio简称)还真的是不了解不深入.好吧,其实我只知道AS是一个相当强大的工 ...
- Axis2开发WebService客户端 的3种方式
Axis2开发WebService客户端 的3种方式 在dos命令下 wsdl2java -uri wsdl的地址(网络上或者本地) -p com.whir.ezoffi ...
- 对于在Android Studio 的 build.gradle 中的默认applicationId 要不要写呢?
起因 刚完成一个版本的开发.刚上Google play 就有用户反映无法更新应用.错误代码为:Can't install app "****" can' be installed. ...
随机推荐
- tensorflow例子-【老鱼学tensorflow】
本节主要用一个例子来讲述一下基本的tensorflow用法. 在这个例子中,我们首先伪造一些线性数据点,其实这些数据中本身就隐藏了一些规律,但我们假装不知道是什么规律,然后想通过神经网络来揭示这个规律 ...
- Aspnet Mvc 前后端分离项目手记(一) 关于跨域问题(还有前言)
前言,最近的项目使用前后端分离的模式,记录其中一些知识点.经过这个项目,也对前后端分离有了更多理解,尤其是在技术之外的方面. 越来越多的项目采用前后端分离的原因,有两点: 1,技术方面的原因 ...
- git 入门教程之分支总览
分支就是一条独立的时间线,既有分支,必有主干,正如一棵树谈到树枝,必有树干一样的道理.我们先前对git 的全部操作默认都是在主干上进行的,这个主干也是一种特殊的分支,名为 master 分支. 无论是 ...
- 数组方括号有趣的split方法
今天看到了split的方法感觉好神奇的样子 split是javascript内置方法 就像join方法是连接数组并转换为字符串一样split方法是把数组拆分成多个部分,而且每一个部分都是数组的元素. ...
- GUI Design Studio的使用方法
一.GUI Design Studio的介绍 GUI DesignStudio 是一个给应用软件设计图形用户界面的专业工具,它可在画基于web形态的原型时,可以用 Axure RP. Balsamiq ...
- ruby配合gem使用sass
Ruby环境安装 1.Ruby安装包下载地址:http://rubyinstaller.org/downloads/下载对应系统版本的安装包: 2.双击rubyinstaller-2.2.3-x64. ...
- Hashmap误区
HashMap简介 HashMap 是一个散列表,它存储的内容是键值对(key-value)映射.HashMap 继承于AbstractMap,实现了Map.Cloneable.java.io.Ser ...
- git Disconnected:No supported authentication methods available问题解决
在本地克隆gitlab上的项目,报如下错误:Disconnected:No supported authentication methods available(server sent:publick ...
- php curl请求和获取接口数据
curl请求和获取接口数据 class ToolModel{ /** * [http 调用接口函数] * @Author GeorgeHao * @param string $url [接口地址] * ...
- RHEL5.8安装
创建完成后新的虚拟机.使用光盘启动后,启动界面如下图. 大概介绍下显示界面内容的意思: 1.To install or upgrade in graphical mde, press the ...