脚本是基于 Windows 的批处理写的,用类Unix操作系统的伙伴们很容易就可以把他们转成 Bash 的脚本,要记得把 .bat 的内容替换哦,斑驳 Arch 里面装的 Android-SDK 里面的官方脚本都是不带 .sh 后缀名的,请注意区分
不多说了,上代码
@echo off
REM 再次感谢您使用斑驳编写的脚本
REM 针对本脚本斑驳并不负任何责任
REM 所有的内容遵循 GPL 协议
REM
REM 欢迎您在必要的条件下,再次发布此脚本
REM
REM 斑驳敬上
REM
title Compile and Package apk - NEO's Edition is Okay~
color 0a
REM Android-SDK 路径
set sdkpath=D:\Program Files\android-sdk
REM API-Level
set apilevel=7
REM java bin 目录
set jhome=C:\Program Files\Java\jdk1.6.0_32
REM java 版本
set jversion=1.6
REM 包名的设置
set package=your.package.name
REM 签名别名
set keyalias=alias
REM 开发者名字
set cname=Neo
REM 单位名字
set unit=CorpName
REM 组织名称
set org=Org
REM 城市
set city=Location
REM 州、省
set state=State
REM 国家
set country=Home
REM 签名密码
set storepass=Password
set keypass=Password
REM 准备目录
set javasrc=%package:.=\%
if not exist assets md assets
if not exist libs md libs
if exist bin rd /s /q bin
if exist gen rd /s /q gen
md bin gen
echo REM 创建 gen 目录后,生成 R.java
"%sdkpath%\platform-tools\aapt.exe" package -f -m -J gen -S res -I "%sdkpath%\platforms\android-%apilevel%\android.jar" -M AndroidManifest.xml
echo REM 编译 java
"%jhome%\bin\javac" -encoding UTF-8 -target %jversion% -bootclasspath "%sdkpath%\platforms\android-%apilevel%\android.jar" -d bin src\%javasrc%\*.java gen\%javasrc%\R.java -classpath libs\*.jar
echo REM 生成 dex
if exist "%cd%\bin\classes.dex" del /f /q "%cd%\bin\classes.dex"
call "%sdkpath%\platform-tools\dx.bat" --dex --output="%cd%\bin\classes.dex" "%cd%\bin" "%cd%\libs"
echo REM 资源文件处理
"%sdkpath%\platform-tools\aapt.exe" pacakge -f -M AndroidManifest.xml -S res -A assets -I "%sdkpath%\platforms\android-%apilevel%\android.jar" -F bin\resources.ap_
echo REM 生成未签名的 APK [已废弃的方法]
call "%sdkpath%\tools\apkbuilder.bat" "%cd%\bin\%package%.apk" -u -z "%cd%\bin\resources.ap_" -f "%cd%\bin\classes.dex" -rf "%cd%\src" -nf "%cd%\libs" -rj "%cd%\libs" > %tmp%\err.log 2>&1
type %tmp%\err.log | find /v "THIS TOOL IS DEPRECATED." | findstr /v "^$"
if exist %keyalias%.keystore goto signapk
echo REM 生成证书
"%jhome%\bin\keytool.exe" -genkey -alias %keyalias% -keyalg RSA -validity 2015 -keystore %keyalias%.keystore -dname "CN=%cname%,OU=%unit%,O=%org%,L=%city%,S=%state%,C=%country%" -storepass %storepass% -keypass %keypass%
:signapk
echo REM 签名 apk
"%jhome%\bin\jarsigner.exe" -keystore %keyalias%.keystore -storepass %storepass% -keypass %keypass% -signedjar %package%.apk bin\%package%.apk %keyalias%
echo REM 清理目录
rd /s /q bin gen