mac下配置 Jenkins 编译Android apk

一般而言,编译 apk直接用 android studio就可以了。不过如果是希望自动编译,可以使用 Jenkins这个开源工具。

官网:https://jenkins.io/
然后安装的话,官网也提供的好几种方式。推荐使用Docker容器。不过这个玩意我没有使用过。

大致步骤可以参考这个:【转】Mac中jenkins的使用——自动构建

主要说一下需要注意的地方:

首先是环境:

  1. 本地需要配置 gradle 环境变量。【如果不配置,应该也可以,但是后续操作步骤不一样】
  2. 本地有JDK 以及 Android SDK 。【JAVA_HOME,ANDROID_HOME可以不配置,没有什么影响】

然后Jenkins里面可以不用进行任何配置以及插件安装。任何插件都可以不需要的。

然后就是在Jenkins里面新建任务。

直接构建一个自由风格的任务即可。

构建的时候选择参数化构建,选择字符参数。可以设置默认值。

然后在任务里面 build这一个步骤里面选择执行shell 命令。

		echo "start ############################$(date)"
		echo "SOURCE_PATH: "$SOURCE_PATH
		if [ "123${SOURCE_PATH}" = "123" ]
		then
		    echo '源码路径未指定'
		    exit 0
		else
		    echo '源码路径为:'${SOURCE_PATH}
		fi
		
		cd ${SOURCE_PATH}
		
		echo "after cd: "$(pwd)
		
		if [ "abc${MODULE}" != "abc" ]
		then
		    echo "module===$MODULE"
		    echo "only build module ${MODULE}"
		    gradle -p $MODULE clean build
		else
		    echo "build the full project!"
		    gradle clean
		    gradle build
		fi
		
		echo "end ############################$(date)"

然后在每次触发的时候,填入需要编译的项目以及模块的名称即可。

如果是自动化构建的话,这两个参数就写死。然后让Jenkins每次都编译这个项目就可以了。


如果当前项目是需要编译生成 so文件的,也不用特别的配置。只要在对应的modulebuild.gradle里面配置一个ndk{...}即可。

android {
    compileSdkVersion 28
    defaultConfig {
        // ....
        externalNativeBuild {
            cmake {
                cppFlags "-std=c++11"
            }
        }

        // ndk编译生成.so文件
        ndk {
            // 生成的so名字
            moduleName "native-lib"
            // 输出指定体系结构下的so库。
            abiFilters "arm64-v8a", "armeabi-v7a", "x86", "x86_64"
        }


    }
    buildTypes {
        release {
        	// ....
           }
    }
    externalNativeBuild {
        cmake {
            path "src/main/cpp/CMakeLists.txt"
        }
    }
}

dependencies {
// ....
}

配置好 build.gradle之后,执行 gradle -p app build会自动编译出对应的so文件的。

Gradle命令参考:Android Gradle 技巧之二: 最爱命令行

NDK配置参考:Android Studio工程引用第三方so文件

简单总结就是,使用的话,就在对应的modulelib 目录下拷贝对应的 so文件进去。然后在对应的 build.gradleandroid 节点里面配置一下即可。


android {
		// ...
       sourceSets {
        main {
            // 1. 配置在根目录libs下可以加载第三方so库, (最好不要创建jniLibs, 在众多的开源库中可能会引起冲突,还没发现)
            // 2. 运行时会自动将libs目录下的so库拷贝到指定目录
            // 3. 如果自己创建的so不需要重新编译,可以将(app/build/intermediates/transforms)生成的so拷贝到这个目录
            jniLibs.srcDirs = ['libs']
            // 如果是单个文件夹 可以直接这样如下配置
            // jniLibs.srcDir 'libs'
        }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值