不用 IDE,僅用命令行和 SDK 開發 Android 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,純屬個人愛好,但調通了還挺爽的。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章