不用 IDE,仅用命令行和 SDK 开发 Android App

   日期:2020-04-30     浏览:129    评论:0    
核心提示:脱离 IDE 开发 Android app。移动开发

文章目录

        • 1.新建项目文件夹
        • 2.创建 java 代码所在文件夹
        • 3.创建 java 文件
        • 4.创建 AndroidManifest.xml 文件
        • 5.创建资源文件目录
        • 6.编译资源文件
        • 7.将 java 文件编译成 .class 字节码文件
        • 8.将字节码文件转换成 dex 格式
        • 9.将所有资源文件打包到一个地方
        • 10.使用 ApkBuilder 工具将 dex 和资源文件打包成 apk 文件
        • 11.使用 zipalign 优化 apk
        • 12.使用 debug 密钥给 apk 签名
        • 13.启动 Android 模拟器
        • 14.安装 apk
        • 15.启动 app
        • 参考文章

1.新建项目文件夹

mkdir Hello

进入该文件夹:

cd Hello\

2.创建 java 代码所在文件夹

mkdir src\dom\domain

3.创建 java 文件

vim src\dom\domain\SayingHello.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 开始插入代码,输入:

<?xml version='1.0'?>
<manifest xmlns:a='http://schemas.android.com/apk/res/android'
  package='dom.domain' a:versionCode='0' a:versionName='0'>
     <application a:label='Saying hello'>
         <activity a:name='dom.domain.SayingHello'>
              <intent-filter>
                 <category a:name='android.intent.category.LAUNCHER'/>
                 <action a:name='android.intent.action.MAIN'/>
               </intent-filter>
          </activity>
      </application>
</manifest>

点击 Esc 退出 vim 编辑模式,输入 :wq 保存。

5.创建资源文件目录

mkdir res

6.编译资源文件

aapt package -f -I E:\ware\Android\sdk\platforms\android-27\android.jar -J src -m -M AndroidManifest.xml -S res -v

其中,E:\ware\Android\sdk\ 是 SDK 安装目录,使用时务必替换为自己的 SDK 路径
由于本例中没有资源文件,所以这一行命令执行后什么也不会生成。

7.将 java 文件编译成 .class 字节码文件

javac -bootclasspath E:\ware\Android\sdk\platforms\android-27\android.jar -classpath src -source 1.7 -target 1.7 src\dom\domain\*.java

这一步执行完成后,src\dom\domain\ 文件夹下会编译出 SayingHello.class 文件

8.将字节码文件转换成 dex 格式

首先使用 jill 将 .class 文件转换为 .jayce

java -jar E:\ware\Android\sdk\build-tools\27.0.3\jill.jar --output classes.jayce src

这一步完成后,当前目录下会生成 classes.jayce 文件

然后使用 jack 将 .jayce 文件转换为 .dex

java -jar E:\ware\Android\sdk\build-tools\27.0.3\jack.jar --import classes.jayce --output-dex .

这一步完成后,当前目录下会生成 classes.dex 文件

9.将所有资源文件打包到一个地方

aapt package -f -F app.apkPart -I E:\ware\Android\sdk\platforms\android-27\android.jar -M AndroidManifest.xml -S res -v

这一步完成后,当前目录下会生成 app.apkPart 文件

10.使用 ApkBuilder 工具将 dex 和资源文件打包成 apk 文件

java -classpath E:\ware\Android\sdk\tools\lib\sdklib-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:\Users\Kevin Wang\.android\debug.keystore" -signedjar app.apk app_aligned.apk androiddebugkey

其中,C:\Users\Kevin 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

大功告成,运行结果:

参考文章

彻底理解Android编译过程 - 脱离IDE开发Android-APP

注1:aaptadbemulator等命令想要直接使用,需要设置环境变量,要不就要用 sdk 中的全路径。
注2:这破玩意花了我两天时间调试,整个过程花里胡哨,结果又比较 low,纯属个人爱好,但调通了还挺爽的。

 
打赏
 本文转载自:网络 
所有权利归属于原作者,如文章来源标示错误或侵犯了您的权利请联系微信13520258486
更多>最近资讯中心
更多>最新资讯中心
0相关评论

推荐图文
推荐资讯中心
点击排行
最新信息
新手指南
采购商服务
供应商服务
交易安全
关注我们
手机网站:
新浪微博:
微信关注:

13520258486

周一至周五 9:00-18:00
(其他时间联系在线客服)

24小时在线客服