1.新建项目文件夹
mkdir Hello
进入该文件夹:
cd Hello
2.创建 java 代码所在文件夹
mkdir srcdomdomain
3.创建 java 文件
vim srcdomdomainSayingHello.java
进入 vim 编辑模式,点击 i 开始插入代码,输入:
package dom.domain;
import android.widget.TextView;
public final class SayingHello extends android.app.Activity
{
public void onCreate( final android.os.Bundle activityState )
{
super.onCreate( activityState );
final TextView textV = new TextView( SayingHello.this );
textV.setText( "Hello world" );
setContentView( textV );
}
}
点击 Esc 退出 vim 编辑模式,输入 :wq 保存。
4.创建 AndroidManifest.xml 文件
vim AndroidManifest.xml
进入 vim 编辑模式,点击 i 开始插入代码,输入:
package='dom.domain' a:versionCode='0' a:versionName='0'>
点击 Esc 退出 vim 编辑模式,输入 :wq 保存。
5.创建资源文件目录
mkdir res
6.编译资源文件
aapt package -f -I E:wareAndroidsdkplatformsandroid-27android.jar -J src -m -M AndroidManifest.xml -S res -v
其中,E:wareAndroidsdk 是 SDK 安装目录,使用时务必替换为自己的 SDK 路径
由于本例中没有资源文件,所以这一行命令执行后什么也不会生成。
7.将 java 文件编译成 .class 字节码文件
javac -bootclasspath E:wareAndroidsdkplatformsandroid-27android.jar -classpath src -source 1.7 -target 1.7 srcdomdomain*.java
这一步执行完成后,srcdomdomain 文件夹下会编译出 SayingHello.class 文件
8.将字节码文件转换成 dex 格式
首先使用 jill 将 .class 文件转换为 .jayce
java -jar E:wareAndroidsdkbuild-tools27.0.3jill.jar --output classes.jayce src
这一步完成后,当前目录下会生成 classes.jayce 文件
然后使用 jack 将 .jayce 文件转换为 .dex
java -jar E:wareAndroidsdkbuild-tools27.0.3jack.jar --import classes.jayce --output-dex .
这一步完成后,当前目录下会生成 classes.dex 文件
9.将所有资源文件打包到一个地方
aapt package -f -F app.apkPart -I E:wareAndroidsdkplatformsandroid-27android.jar -M AndroidManifest.xml -S res -v
这一步完成后,当前目录下会生成 app.apkPart 文件
10.使用 ApkBuilder 工具将 dex 和资源文件打包成 apk 文件
java -classpath E:wareAndroidsdktoolslibsdklib-26.0.0-dev.jar com.android.sdklib.build.ApkBuilderMain app.apkUnalign -f classes.dex -u -z app.apkPart
这里会产生一个警告:THIS TOOL IS DEPRECATED. See --help for more information.,这个工具过时了,但暂时没有什么影响,可以继续使用。这一步完成后,当前目录下会生成 app.apkUnalign 文件
11.使用 zipalign 优化 apk
zipalign -f -v 4 app.apkUnalign app_aligned.apk
这一步完成后,当前目录下会生成 app_aligned.apk 文件
12.使用 debug 密钥给 apk 签名
jarsigner -verbose -keystore "C:UsersKevin Wang.androiddebug.keystore" -signedjar app.apk app_aligned.apk androiddebugkey
其中,C:UsersKevin Wang 是你的用户地址,可在命令行输入 %USERPROFILE% 查看自己的地址,这里使用的 Android debug 密钥库,接下来会让你输入密码,默认密码是 android
这一步完成后,当前目录下会生成 app.apk 文件。这一个 apk 文件就是最终的 apk 了,可以直接安装到真机上运行,或者使用 Android 模拟器安装运行。
13.启动 Android 模拟器
先查看已有的 Android 模拟器:
emulator -avd -list-avds
启动 Android 模拟器
emulator -avd Pixel_2_API_28
其中,Pixel_2_API_28是模拟器名字,从上一步列出的已有模拟器中选择一个即可。
14.安装 apk
新开一个命令行窗口,安装 apk
adb install app.apk
15.启动 app
adb shell am start -n dom.domain/.SayingHello
大功告成,运行结果:
参考文章
注1:aapt,adb,emulator等命令想要直接使用,需要设置环境变量,要不就要用 sdk 中的全路径。
注2:这破玩意花了我两天时间调试,整个过程花里胡哨,结果又比较 low,纯属个人爱好,但调通了还挺爽的。