[原]Android打包之跨平台打包

Android自动打包流程详细图:

在前面一些博客我们知道了如何通过命令行打包,如何通过Eclipse打包,如何通过编写shell脚本来进行打包,但是这些都不能很好的跨平台进行打包。

因Python本身具有很好的跨平台特性,故本博就是通过使用Python来进行编写跨平台打包脚本,脚本如下(build.py):

#!/bin/python
# build Android application package (.apk) from the command line using the SDK tools

import os
import re
import sys
import time
import shutil
import hashlib

build_root = os.path.dirname(os.path.abspath(‘__file__‘))
build_source_name = ‘source‘
build_apk_name = ‘FullscreenActivity-release.apk‘
release_apk_path = build_root + ‘/release_apks‘
publish_apks = build_root + ‘/publish_apks‘
android_sdk = os.environ.get(‘ANDROID_SDK‘)
build_tool_ant_path = android_sdk + ‘/tools/ant‘
build_bin_path = ‘bin‘
build_bin_classes_path = ‘classes‘
source_dir = build_root + ‘/‘ + build_source_name    

rev_cmd = "svn info"
rev_pattern = r"Last Changed Rev: ([0-9]*)"

# delete file folder
def delete_file_folder(src):
    if os.path.isfile(src):
        try:
            os.remove(src)
        except:
            pass
    elif os.path.isdir(src):
        for item in os.listdir(src):
            itemsrc = os.path.join(src,item)
            delete_file_folder(itemsrc)
        try:
            os.rmdir(src)
        except:
            pass

# calc file md5
def calcMD5(filepath):
    with open(filepath,‘rb‘) as f:
        md5obj = hashlib.md5()
        md5obj.update(f.read())
        hash = md5obj.hexdigest()
        return hash

# get source code from svn Repository
def get_source_code():
    if (os.path.exists(release_apk_path)):
        print release_apk_path + ‘ exists!‘
    else:
        os.makedirs(release_apk_path)       

    if (os.path.exists(source_dir)):
        os.chdir(source_dir)
        os.system(‘svn update‘)
    else:
        os.makedirs(source_dir)
        os.chdir(source_dir)
        os.system(‘svn checkout https://github.com/clarck/AutoBuildProject/trunk .‘)

# clear classes file folder
def clear_classes_folder():
    classes_abs_path = source_dir + ‘/‘ + build_bin_classes_path
    if (os.path.exists(classes_abs_path)):
        delete_file_folder(classes_abs_path)
    else:
        os.makedirs(classes_abs_path) 

# get svn revision
def get_revision():
    rev = os.popen(rev_cmd).read()
    m = re.search(rev_pattern, rev)
    if m == None:
        return None
    return m.group(1)

# get current time
def get_time():
    return time.strftime(‘%Y-%m-%d_%H-%M-%S‘, time.localtime(time.time()))

# ant build
def ant_build():
    os.system(‘android update project -p . --target android-19‘)
    os.system(‘ant clean & ant release‘)

# copy apk file to target folder
def copy_apk():
    apk_file = source_dir + ‘/‘ + build_bin_path + ‘/‘ + build_apk_name
    target_apk_file = release_apk_path + ‘/‘ + build_apk_name
    if (os.path.exists(apk_file)):
        shutil.copyfile(apk_file, target_apk_file)
    else:
        print apk_file + ‘ is not exists!‘

# delete source code files
def delete_source_file():
    delete_file_folder(source_dir)

# publish apk
def publish(date, rev):
    if (os.path.exists(publish_apks)):
        print publish_apks + ‘ exists!‘
    else:
        os.makedirs(publish_apks)

    md5 = calcMD5(release_apk_path + ‘/‘ + build_apk_name)
    apk_file = release_apk_path + ‘/‘ + build_apk_name
    publish_file = publish_apks + ‘/‘ + date + ‘_‘ + rev + ‘_‘ + ‘release.apk‘
    shutil.move(apk_file, publish_file)
    delete_file_folder(release_apk_path)

# main function
def main():
    get_source_code()
    clear_classes_folder()
    rev = get_revision()
    date = get_time()
    ant_build()
    copy_apk()
    publish(date, rev)    

if __name__ == ‘__main__‘:
    main()

最后执行:python build.py即可。

时间: 2024-08-07 01:25:06

[原]Android打包之跨平台打包的相关文章

[原]Android打包之Eclipse打包

Android自动打包流程详细图: 步骤一: 在工程中新建一个build.xml. 步骤二: 给工程配置ant工具. 选择ant工具的步骤如下: Windows->Shown view->Ant 这样就出项了ant视图框.在ant视图框中单击右键,选择addBuilderfile添加ant编译文件. 添加好ant编译文件后,我们还需要对编译文件进行设置:选中编译文件,右键单击选择Run As->external Tools configurations 弹出了ant编译的配置框. 在编译

[原] Android自动打包之命令行打包

Android自动打包流程详细图: 总结为以下几个步骤: 1. 生成R文件 2. Java代码编译成class文件 3. class文件生成dex文件 4. 打包资源 5. 生成apk 6. 创建密匙 7. 签名apk 下面用Ubuntu命令行来打包,流程如下: 1. 生成R文件,命令如下: aapt package -f -m -J $BUILD_SOURCE_PATH/$ANDROID_GEN \ -A $BUILD_SOURCE_PATH/$PACKAGE_RESOURCE_FILE \

[原]Android打包之Eclipse打多渠道包

Android自动打包流程详细图: 步骤一和步骤二参考:[原]Android打包之Eclipse打包 步骤三:编写build.xml <?xml version="1.0" encoding="UTF-8"?> <project name="AndroidTouchDemo"> <!-- 指定配置文件 --> <property file="default.properties">

cocos2dx Android 使用ant 批量打包

参考文章: 例子:http://www.2cto.com/kf/201305/208139.html http://blog.csdn.net/ljb_blog/article/details/12709983 eclipse 如何支持ant:http://www.cnblogs.com/sw926/p/3238512.html 环境介绍: 引擎:cocos2dx2.2.2 开发平台:mac jdk 1.7 注:参考了以上文章,最后发现打包也不用自己下ant,也不用命令行, 而是设置 <proj

Android开发把项目打包成apk,安卓到手机上,或者提交到app应用商店

#1.用Eclipse的话导出app其实还是很容易的.大家看我的步骤.有图有真相哦 选择一个项目 创建一个新的,位置随便,下面是密码 这里都是一些名字,地区,组织,国家.看你们自己的了 选择你要存放apk的位置 打完收工 Android开发把项目打包成apk,安卓到手机上,或者提交到app应用商店,布布扣,bubuko.com

Android开发把项目打包成apk-(转)

做完一个Android项目之后,如何才能把项目发布到Internet上供别人使用呢?我们需要将自己的程序打包成Android安装包文件--APK(Android Package),其后缀名为".apk".将APK文件直接上传到Android模拟器或Android手机中执行即可进行安装.Android系统要求具有其开发者签名的私人密钥的应用程序才能够被安装.生成数字签名以及打包项目成APK都可以采用命令行的方式,但是通过Eclipse中的向导我们会更加方便地完成整个流程,打包发布的过程非

android 用命令行打包生成 apk

android 用 ant 进行 build. android sdk 下面的 tools/ant 下面的 build.xml 就是 build 的整个过程. 其中的 build 参数可在 ant.properties 文件中进行 override.也可以自己定制 build 的脚本. 用 ant build 非常简单 1)安装 ant 并加入到系统 path 变量中 2)为项目生成 build.xml android update project -p . 3)生成 debug 版本 ant

Android Gradle 指定 Module 打包

Android Gradle 指定 Module 打包 项目中有许多的可以直接独立运行的 Module ,如何在 Gradle 中将签名文件配置好了,那么就不需要普通的手动点击 Generate Signed APK,使用 Terminal更加方便. 指定Module打包命令 输入: ./gradlew :<ModuleName>:assembleRelease 示例: ./gradlew :sampleApp:assembleRelease [error]command not found

转载分享:Android APP二次打包操作步骤介绍

看到好的技术教程就想转载一下,不喜勿喷!谢谢配合,仅供菜鸟学习研究,不要做坏事哦\(^o^)/~ 关于Android APP 二次打包现象已经屡见不鲜,为何"打包党"就吃准了Android平台,二次打包的操作过程到底有多简单? 本文将从Android apk的结构.二次打包的工具.步骤等方面向移动开发者说明二次打包操作的简单性,从而引起开发者对APP安全的重视,并及时对APP进行代码混淆或加固 保护等安全措施. 安卓apk的文件结构首先来看一下Android apk的内部文件结构. 随