2016-12-14 40 views
2

我寫了一個不使用依賴或模塊的Android應用程序,只有一個活動,並且有一個佈局文件。如何在命令行上無需Gradle創建Android apk?

如何在不使用Gradle(或其他「構建系統」或「依賴管理」軟件)的情況下在命令行上構建我的應用程序的apk文件?

+1

如果您不喜歡Gradle,您可以查看另一個構建系統(例如Maven,Buck)。如果這不是問題......避免Gradle的原因是什麼? – CommonsWare

+1

我不想要構建系統。我想建立。 – aoeu

+0

構建一個Android應用程序[涉及大量工作](http://tools.android.com/tech-docs/new-build-system/build-workflow)。該頁面上的圖表將幫助您根據涉及的不同工具和部分開始工作。 – CommonsWare

回答

9

使用以下步驟要手動構建你的apk,如果你不想用ant/gralde來構建。但您至少必須安裝Android SDK。

  • aapt

  • 使用javac創建R.java所有Java源代碼編譯到*.class

  • 使用dx把所有*.classdex文件,如輸出爲classes.dex

  • 創建來自資產的APK的初始版本,資源和AndroidManfiest.mk,e。克輸出是MyApplication.apk.unaligned

  • 使用aapt添加classes.dex在步驟3中生成的MyApplication.apk.unaligned

  • 使用的jarsigner簽署MyApplication.apk.unaligned與調試或釋放鍵

  • 使用zipalign對準最終APK,例如輸出是MyApplication-debug.apkMyApplication-release.apk如果用釋放密鑰簽名

  • 完成

我創建了一個示例腳本做上述所有的東西,看here

事實上,一些文章討論過這個話題,請參閱以下鏈接。

https://www.apriorit.com/dev-blog/233-how-to-build-apk-file-from-command-line

https://spin.atomicobject.com/2011/08/22/building-android-application-bundles-apks-by-hand/

+0

謝謝,那正是我想知道的!漂亮的shell腳本,也感謝文章。 – aoeu

0

簡短的回答是: 你無法

而且長:

創建apk文件的過程並不像接縫容易。 https://developer.android.com/studio/build/index.html

您不僅需要:

  • 瑪吉資源,創建R檔
  • 源代碼編譯爲Java,然後類的Dalvik
  • 包裝資源,然後用所有創建zip必要的文件
  • 登錄它與你的鑰匙,

但好做很多,一個,我真的mean it

有一點。

在哪裏,如果ü使用Android工作室

  • 只要按一下綠色三角形來構建和安裝
  • 或者,如果你想realease APK,建設 - >組裝發佈的.apk

更妙的是你可以使用簡單的命令來執行這些任務

./gradlew assembleRelease 
+0

得到溫暖....感謝煩擾提及*任何Gradle實際上在幕後做的事情(而不是說「只是使用它」),但是當我說「在命令行上沒有gradle」時,我的意思是不使用Gradle包裝器。 – aoeu

+0

你能告訴我爲什麼你要「建立」? 因爲我真的沒有看到進入所有使用構建系統的麻煩的一點:)我的意思是構建系統是爲了讓程序員只用一個命令來構建應用程序。爲什麼不使用它? – Inverce

0

alijandro了一份完美的答卷。我設法編寫了簡單的ANT腳本,該腳本使用AdMob構建生產APK並且無需使用Gradle。一對夫婦有用的意見:

  1. 如果你想混淆你必須罐子(javacdx步驟之間)編譯的類類和在其上運行proguard

  2. 對於AdMob你必須提取以下從ZIP檔案罐(如 C:\Users\<User>\AppData\Local\Android\sdk\extras\google\m2repository\com\google\android\gms\play-services-ads\10.2.6\play-services-ads-10.2.6.aar):

    • 播放服務的廣告,10.2.6.jar
    • 播放服務的廣告,精簡版,10.2.6.jar
    • 播放服務鹼基10.2.6.jar
    • 播放服務,地下室10.2.6.jar
    • 播放服務 - 皆伐-10.2.6.jar
    • 播放服務 - 蓋斯 - 10.2.6.jar
    • 播放服務的任務,10.2.6.jar

這些檔案也應傳遞javacdx

  • 對於AdMob有幾個附加的簡單配置步驟以及
  • Gradle做了很多與機器人項目亂,所以自己的腳本看起來像單一溶液即將投入生產的項目

    相關問題