>>分享Android开发相关的技术 书籍支持  卫琴直播  品书摘要  在线测试  资源下载  联系我们
发表一个新主题 开启一个新投票 回复文章 您是本文章第 22911 个阅读者 刷新本主题
 * 贴子主题:  Android开发实践:用脚本编译Android工程 回复文章 点赞(0)  收藏  
作者:sunshine    发表时间:2020-03-31 12:19:34     消息  查看  搜索  好友  邮件  复制  引用

      一般情况下,我们都是使用Eclipse+ADT插件或者Android studio软件来编译Android工程的,其实,Eclipse或者Android studio仅仅是将一些编译命令封装到可视化界面里而已,通过shell脚本、ADT附带的一些命令以及Ant工具,我们完全可以将Android工程的编译过程自动化,直接通过运行脚本就得到最终的APK文件。
    
      Linux下用脚本编译c/c++程序至少需要两个东西,一个是编译器,如gcc/g++,另一个则是编译配置文件,即Makefile;同理,编译Android程序也同样需要编译器和编译配置文件,由于Android程序是Java开发的,所以编译器一般使用Ant(Apache的核心项目,Java编译器),配置文件则是build.xml,该编译配置文件可以自己手写,也可以通过ADT的工具生成;如果Andrid工程涉及JNI层,则编译命令使用NDK-Build,对应的编译配置文件则是Android.mk。

      前面这段话,简单介绍了使用脚本编译Andriod工程的一些基本工具和关键词,详细的用法就留给读者自己去Google吧,这里给出一个我自己编写的通用脚本,放到你的Android工程的根目录,修改脚本的相关路径的配置,添加执行权限(chmod +x),即可编译你的Android工程了,具体的用法用注释的形式添加在脚本中了,文章最后的附件则是该脚本的测试Android工程。

#!/bin/bash
                                                                                                                                                                                                                                                            
#NOTE: 用法,在本工程根目录下执行 ./build.sh xxx
                                                                                                                                                                                                                                        
#其中,xxx为参数,可以是clean debug release,也可以不带参数,不带参数默认为debug
                                                                                                                                                                                                                                          
#如果参数是 clean,  则会删除所有编译生成的文件              
#如果参数是 debug , 则会生成 debug 版本的apk,位于 bin 目录下
#如果参数是 release,则生成 release版本的apk,位于 bin 目录下
                                                                                                                                                                                                                                            
#NOTE: 如果更改了工程配置,请先删除目录下的build.xml
                                                                                                                                                                                                                                          
#获取本目录的名称,作为build.xml的项目名称
PROJECT_NAME=${PWD##*/}
                                                                                                                                                                                                                                                  
#路径配置,请根据编译环境修改
ANDROID_SDK_PATH=/opt/android/sdk
ANDROID_NDK_PATH=/opt/android/ndk
ANT_PATH=/opt/apache-ant-1.9.0/bin
                                                                                                                                                                                                                                                            
#决定是否生成release版
BUILD_RELEASE=0
                                                                                                                                                                                                                                                            
if [ $1 = "clean" ]
then
    rm -rf gen
    rm -rf obj
    rm -rf libs/armeabi
    echo "clean success"
    exit
fi
                                                                                                                                                                                                                                                
if [ $1 = "debug" ]
then
    BUILD_RELEASE=0
fi
                                                                                                                                                                                                                                                    
if [ $1 = "release" ]
then
    BUILD_RELEASE=1
fi
                                                                                                                                                                                                                                                                        
echo "begin to build..."
                                                                                                                                                                                                                                                            
#判断 build.xml 是否存在,若不存在,则创建一个
#请根据你的目标平台,修改update project命令的最后一个参数,该值为 android list 命令输出结果列表的id值
                                                                                                                                                                                                                                                      
if [ ! -e build.xml ]
then
    echo "No build.xml exist, generate build.xml"
    $SDK_PATH/tools/android update project -n $PROJECT_NAME -p . -s -t 1
fi
                                                                                                                                                                                                                                                                
#判断jni目录是否存在,如果存在,则首先编译jni目录
if [ -d jni ]
then
    echo "build jni, generate libs"
    $ANDROID_NDK_PATH/ndk-build
fi
                                                                                                                                                                                                                                                              
#使用ant来编译
if [ $BUILD_RELEASE ]
then
    $ANT_PATH/ant release
else
    $ANT_PATH/ant debug
fi
echo "build success"

     在Android工程的根目录运行该脚本文件后,会在bin目录下生成apk文件,如果工程目录下没有ant.properties文件和xxx.key文件的话,则只会生成debug版和unsigned-release版,如果希望直接生成签名后的apk文件,则需要给出一个Android key文件,并编写一个ant.properties文件,该文件的编写示例如下:

key.store=ticktick.key
key.alias=ticktick
key.store.password=123456
key.alias.password=123456

   在Android工程的根目录下,如果存在该ant.properties文件,则在编译release版的时候,会自动使用ticktick.key文件来签名生成的apk文件。

   关于使用脚本编译Android工程就介绍到这儿了,希望我的示例脚本能够给初学者提供一些参考和帮助,有任何疑问欢迎留言或者来信lujun.hust@gmail.com交流,或者关注我的新浪微博 @卢_俊 获取最新的文章和资讯。

            
   附件:http://down.51cto.com/data/2364114
----------------------------
原文链接:https://blog.51cto.com/ticktick/1365947

程序猿的技术大观园:www.javathinker.net



[这个贴子最后由 flybird 在 2020-04-17 12:38:01 重新编辑]
  Java面向对象编程-->按面向对象开发的基础范例
  JavaWeb开发-->异常处理
  JSP与Hibernate开发-->Servlet技术详解(Ⅰ)
  Java网络编程-->Web运作原理(Ⅳ)
  精通Spring-->数据库事务的概念和声明
  Vue3开发-->Spring、JPA与Hibernate的整合
  android异步更新UI
  Android 事件处理
  Android Fragments 详细使用
  用Gradle 构建你的android程序
  Android的init过程详解
  Android API 中Toast类的用法
  创建 和使用Android服务
  Android 解码播放GIF图像
  Android多线程断点续传
  Android开发实践:Android.mk模板
  Android资源命名规范
  Android性能优化之视图篇(渲染机制)_移动开发_Applicaton的...
  android使用工具性能优化
  Android_实现商品详情的展示页及布局
  Android Service学习之AIDL, Parcelable和远程服务-学习Andr...
  更多...
 IPIP: 已设置保密
楼主      
1页 0条记录 当前第1
发表一个新主题 开启一个新投票 回复文章


中文版权所有: JavaThinker技术网站 Copyright 2016-2026 沪ICP备16029593号-2
荟萃Java程序员智慧的结晶,分享交流Java前沿技术。  联系我们
如有技术文章涉及侵权,请与本站管理员联系。