概述
linux下完全命令行搭建android开发环境和开发编译过程
author: 布智道
date: 2010.08.19
参考网上别人的经验加上自己的一点点探索,得出了此文.
现在只是完成了开发环境和编译打包,调试还要继续探索.
以下所有的测试都是在ubuntu 9.10上操作
当然相信其它版本也可以
ubuntu和debian应该可以直接按以下的操作进行
redhat或centos可能在安装java sdk时有所不同
而ms windows下可能除了安装java sdk, android sdk, android tools不同外
还要注意目录名'/'改为''
0, sudo apt-get install sun-java6-jdk
1, download sdk and tools
wget https://dl-ssl.google.com/android/repository/tools_r06-linux.zip
wget https://dl-ssl.google.com/android/repository/android-1.5_r04-linux.zip
2, install sdk and tools
cd /opt
unzip android-1.5_r04-linux.zip
unzip tools_r06-linux.zip
3, fixed apkbuilder bug for me (我自己修改的)
edit file /opt/tools_r06-linux/apkbuilder
append follow content into line 49
###### append begin ######
if [ ! -r "$frameworkdir/$jarfile" ]
then
progdir="$0"
frameworkdir=`dirname "$progdir"`/lib
libdir=`dirname "$progdir"`/lib
fi
###### append end ######
4, 处理环境变量
export JAVA_HOME=/usr/lib/jvm/java-6-sun
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:$JRE_HOME/lib:${CLASSPATH}
export JAVA_PATH=${JAVA_HOME}/bin:${JRE_HOME}/bin
export
PATH=${PATH}:${JAVA_PATH}:/opt/android-1.5_r04-linux/tools:/opt/tools_r06-linux
5, 以下以android sdk里的HelloActivity为例子介绍
cd android-1.5_r04-linux/samples/HelloActivity
mkdir bin
mkdir assets
mkdir -p gen/com/example/android/helloactivity
6, 使用aapt命令生成R.java类文件:
例:
aapt package
-f -m -J gen
-S res
-I /opt/android-1.5_r04-linux/android.jar
-M `pwd`/AndroidManifest.xml
其中
-f -m -J gen 代表按覆盖的形式在gen目录下生成带包路径的R.java
-S res 指定资源文件
-I android.jar 指定使用的android
-M AndroidManifest.xml 指定程序的配置文件
7, 使用aidl命令把.aidl转成.java文件 (没有.aidl文件则跳过)
aidl -p${android-framework} -I${srcdir} dir="${srcdir} **/*.aidl
8, 编译.java类文件生成class文件:
例:
javac -encoding GB18030
-target 1.5
-bootclasspath /opt/android-1.5_r04-linux/android.jar
-d bin
src/com/example/android/helloactivity/*.java
gen/com/example/android/helloactivity/R.java
9, 使用dx命令行脚本生成classes.dex文件:
例:
dx --dex --output=bin/classes.dex bin
其中
classes.dex为生成的目标文件
bin为class文件所在目录
10, 使用aapt生成资源包文件(包括res、assets、androidmanifest.xml等):
例:
aapt package -f -M AndroidManifest.xml
-S res
-A assets
-I /opt/android-1.5_r04-linux/android.jar
-F bin/resources.ap_
将AndroidManifest.xml,res和assets文件夹中的资源文件打包生成resources.ap_
11, 使用apkbuilder命令生成未签名的apk安装文件:
apkbuilder ${output.apk.file}
-u -z ${packagedresource.file}
-f ${dex.file}
-rf ${source.dir}
-rj ${libraries.dir}
例:
/home/pxw/Public/tools_r06-linux/apkbuilder bin/hello.apk
-v -u -z bin/resources.ap_
-f bin/classes.dex
-rf src
其中
bin/hello.apk 为生成的apk
-z bin/resources.ap_ 为资源包
bin/class.dex 为类文件包
12, 使用jdk的keytool生成证书(密钥)
keytool -genkey
-alias android.keystore
-keyalg RSA
-validity 365
-keystore android.keystore
Enter keystore password:
输入keystore密码:[密码不回显]
Re-enter new password:
再次输入新密码:[密码不回显]
What is your first and last name?
您的姓名是什么?
[Unknown]: android
What is the name of your organizational unit?
您的组织单位名称是什么?
[Unknown]: www.android.com.cn
What is the name of your organization?
您的组织名称是什么?
[Unknown]: www.android.com.cn
What is the name of your City or Locality?
您所在的城市或区域名称是什么?
[Unknown]: ShenZhen
What is the name of your State or Province?
您所在的州或省份名称是什么?
[Unknown]: GuangDong
What is the two-letter country code for this unit?
该单位的两字母国家代码是什么
[Unknown]: CN
Is CN=android, OU=www.android.com.cn, O=www.android.com.cn, L=ShenZhen,
ST=GuangDong, C=CN correct?
[no]: yes 正确否, yes
Enter key password for输入的主密码
(RETURN if same as keystore password):
(如果和 keystore 密码相同,按回车):
其中
-validity为证书有效天数
输入密码时没有回显,只管输入就可以,一般位数建议使用20位,需要记下来后面
还要用
13, 使用jdk的jarsigner对未签名的包进行apk签名:
jarsigner -keystore ${keystore}
-storepass ${keystore.password}
-keypass ${keypass}
-signedjar ${signed.apkfile}
${unsigned.apkfile}
${keyalias}
例如:
jarsigner -verbose
-keystore android.keystore
-signedjar bin/hello_signed.apk
bin/hello.apk
android.keystore
或者:
jarsigner -verbose
-keystore android.keystore
-storepass 123456
-keypass 123456
-signedjar bin/hello_signed.apk
bin/hello.apk
android.keystore
其中
–keystore f:explorereclipse3.5bbyread.keystore 为密钥文件
-storepass byread002为密钥文件密码,和keytool输入的一样
-keypass byread002为密钥别名密码,和keytool输入的一样
-signedjar bin/hello_signed.apk为签名后生成的apk文件
bin/hello.apk为未签名的文件
byread 为密钥别名
最后
以上就是爱笑季节为你收集整理的linux下android编译,linux下完全命令行搭建android开发环境和开发编译过程的全部内容,希望文章能够帮你解决linux下android编译,linux下完全命令行搭建android开发环境和开发编译过程所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复