美文网首页
Android打包,通过命令行来控制C++代码的宏

Android打包,通过命令行来控制C++代码的宏

作者: ReadyShow | 来源:发表于2020-10-20 16:48 被阅读0次

    参数传递流程

    image.png

    实现

    gradle对命令行参数的响应

    Android默认的C++构建方式

    在默认的Android构建方式时,是支持debug类型,构建debug包时:./gradlew assembleDebug

    对于C++构建配置如下:

    android {
        buildTypes {
            release {
                minifyEnabled false
            }
            debug {
                externalNativeBuild {
                    cmake{
                        arguments '-DCMAKE_BUILD_TYPE=DEBUG'
                    }
                }
            }
        }
        externalNativeBuild {
            cmake {
                path "./src/CMakeLists.txt"
            }
        }
        packagingOptions {
            //        exclude 'lib/*/libc++_shared.so'
            doNotStrip "**.so"
        }
    }
    

    只需在debug类型下,加入自定义的一个参数CMAKE_BUILD_TYPE,那么这个参数就能传入CMakeList。

    自定义的打包任务

    自定义的,不符合Android默认规则的gradle任务,需要自定义一个参数:
    假设如下:./gradlew assembleRelease -PcppDebug

    那么gradle如下:

    def cppDebug = project.hasProperty('cppDebug')
    
    // 自定义C++构建时,传入参数
    arguments '-DCMAKE_BUILD_TYPE=' + (cppDebug ? 'DEBUG' : 'RELEASE')
    

    CMakeList接受参数,生成代码内的宏

    # debugif (CMAKE_BUILD_TYPE STREQUAL DEBUG)
        message('当前编译开启了DEBUG宏!!!')
        add_definitions(-DDEBUG)
    endif ()
    

    C++代码文件内使用宏

    #ifdef DEBUG
    // 配置了debug,就会输出日志
    #pragma message("Warning:debug编译时!")
    #endif
    

    相关文章

      网友评论

          本文标题:Android打包,通过命令行来控制C++代码的宏

          本文链接:https://www.haomeiwen.com/subject/spvdmktx.html