當前位置:首頁 » 安卓系統 » androidant打包

androidant打包

發布時間: 2022-05-26 05:53:59

A. android studio 怎麼安裝ant

近年來,由於公司項目的越來越龐大和復雜,我們的項目走上了插件化開發之路,由於之前一直是用Eclipse開發的,而Eclipse裡面本身集成了Ant腳本的,所以模塊化編譯打包發版都很方便,成熟。但是考慮到以後Google可能更重視AndroidStudio的維護,對於我們這些還有著很長程序開發之路要走的人來說,學習這個新的IDEA很有必要,況且公司項目主要還是用Eclipse來開發的,為了保持相同的項目結構,只能棄gradle不用了,所以今天的重點是ant在androidstudio中的使用。

AndroidStudio派生自Intellij項目,裡麵包含了我們開發Android應用所需的各種插件,它基於gradle來構建,但是Google公司將ant插件幹掉了,所以先安裝ant吧。

一、Ant插件的安裝

由於之前我安裝過IntellijIdea,所以我就用一個比較偷懶的方式,直接從那兒復制插件過來啦:

B. Android怎麼把一個現有工程打包成sdk

方法一
使用eclipse導出jar包:我們知道一個java項目是可以用eclipse導出jar包的,安卓工程也一樣,只要按普通的方法export就可以了。不過,export出來的包是沒有混淆過的,如果你要混淆,還需要單獨對你的jar包執行一次proguard程序,可參考proguard使用指南。
方法二
使用腳本打包:我個人比較喜歡該方法,因為android工程項目並不是只有JAVA代碼,有的資源也需要提供出來,而使腳本可以更加定製化一些。
android的SDK默認提供了一個ant打包的腳本,具體使用方法,可參考之前的BLOG,使用ant打包APK及依賴包最佳解決辦法
我們可以看出,打包,最終調用的其實是android sdk下的ant腳本,既然安卓已經幫我們寫好了ant腳本,我們就好好利用。
使用上面的BLOG中介紹的方法,先在工程目錄中生成你的build.xml,然後自己寫一個target

<target name="sdk"
depends="-set-release-mode, -release-obfuscation-check, -compile, -post-compile, -obfuscate">
</target>
這段target代碼,就是只執行到了混淆的腳本。然後我們在build.xml中選擇右鍵,run as, 第二個ant Build,然後選擇要執行的target為我們加上的sdk。
等執行完成後,就會在project/bin/proguard/obfuscated.jar找到你所要的jar包。

C. cocos2dx用ant打包出現if 語句與安卓SDK沖突的問題

你要是寫出NDK的版本,以及錯誤信息。
建議使用r9d版本,r10版本有問題。
這里給題主幾個小建議,方便發現問題的所在
1、在bat腳本中 set NDK_LOG=1,打開make的日誌輸出
2、在mk文件中通過$(info xxxxx) ,輸出你定義的信息,方便定位是哪兒了問題

D. 用 ant 打包 android 一直出現 class.dex does not exists 急急急!!在線等

用ant在命令行創建以一個android項目 命令是 android create project -k com.test.ant -n TestAnt -a MainActivity -t 2 -p E:\JazzyYang\TestAnt
然後進入該目錄下 敲ant debug
然後
BUILD FAILED
E:\JazzyYang\androidsdk\android-sdk-windows\tools\ant\ant_rules_r3.xml:395: The
following error occurred while executing this line:
E:\JazzyYang\androidsdk\android-sdk-windows\tools\ant\ant_rules_r3.xml:209: com.
android.sdklib.build.ApkCreationException: E:\JazzyYang\Android_Work\bin\classes
.dex does not exist

E. 使用ant腳本打包android項目,包含library項目,如何設置依賴項目

設置方法如下:
1.生成R.java類文件:
Eclipse中會自動生成R.java,ant和命令行使用android SDK提供的aapt.ext程序生成R.java;

2.將.aidl文件生成.java類文件:
Eclipse中自動生成,ant和命令行使用android SDK提供的aidl.exe生成.java文件;

3.編譯.java類文件生成class文件:
Eclipse中自動生成,ant和命令行使用jdk的javac編譯java類文件生成class文件;

4.將class文件打包生成classes.dex文件:
Eclipse中自動生成,ant和命令行使用android SDK提供的dx.bat命令行腳本生成classes.dex文件;

5.打包資源文件:
Eclipse中自動生成,ant和命令行使用Android SDK提供的aapt.exe生成資源包文件;

6.生成未簽名的apk安裝文件:
Eclipse中自動生成debug簽名文件存放在bin目錄中,ant和命令行使用android SDK提供的apkbuilder.bat命令腳本生成未簽名的apk安裝文件;

7.對未簽名的apk進行簽名生成簽名後的android文件就可以了。

F. ant打包安卓apk怎麼實現.9圖識別,現在就是報錯,在不改圖的情況下可以完成識別不

跟.9沒關系吧,最好能把錯誤的log日誌列印出來

G. Ant 打包 編譯不通過 eclipse可以 命令行不行

在命令行中編譯Eclipse 中的整個工程:
用命令行模擬eclipse中Android Project編譯流程
1、新建一個Android Project,目前的目錄結構如下圖:

2、點擊右鍵,Build Project,此時的目錄結構如下圖:

此時gen目錄下產生了R.java,bin目錄在工程目錄中,顯示如上,沒有任何內容;但是在終端查看,內容有改變,如下:
只剩下一個classes文件夾,此文件夾為空
對應的命令:
在工程目錄下執行如下代碼:
生成R文件:
aapt p -f -m -J gen -S res -I ~/android-sdk-linux/platforms/android-18/android.jar -M AndroidManifest.xml
3、點擊右鍵,再一次Build Project

4、點擊右鍵Run as Android Application

對應的命令:
在工程目錄下執行以下命令:
生成resources.ap_:
aapt package -f -S res -I ~/android-sdk-linux/platforms/android-18/android.jar -A assets/ -M AndroidManifest.xml -F bin/resources.ap_
生成classes.dex:
dx --dex --output=bin/classes.dex bin/classes
生成HelloWorld_unsigned.apk:
apkbuilder bin/HelloWorld_unsigned.apk -v -u -z bin/resources.ap_ -f bin/classes.dex -rf src -nf libs
簽名apk,使用debug key,別名為androiddebugkey,密碼是android:
jarsigner -verbose -keystore ~/.android/debug.keystore -signedjar bin/HelloWorld_signed.apk bin/HelloWorld_unsigned.apk androiddebugkey
對齊apk:
zipalign -v 4 bin/HelloWorld_signed.apk bin/HelloWorld.apk
移除臨時apk:
rm bin/HelloWorld_unsigned.apk bin/HelloWorld_signed.apk
安裝apk:
adb install bin/HelloWorld.apk
5、點擊右鍵,Android Tools->Export Signed Application Package
同樣的步驟,只是簽名使用的自己創建的數字證書(release版),最後的apk不保存在bin目錄下,而是由用戶指定。

H. 如何配置android studio環境實現ionic的編譯,運行與打包

1.1配置Java環境
下載jdk,jre(jre好像是跟jdk一起的,jdk1.8.0_101,jre1.8.0_101)
參考文檔:如何配置jdk,jre的參考文檔
配置的環境變數:PATH(jre/bin以及bin目錄),ClASSPATH(lib以及lib/tools.jar目錄),JAVA_HOME(jdk的安裝目錄)
測試配置java變數是否成功的方法是:在dos命令行輸入:java -v,以及javac
1.2配置ant環境(同樣需要配置環境變數)
下載地址:ant下載地址
配置環境變數:系統變數PATH(ant的bin目錄環境);
測試ant安裝是否成功:在dos命令行輸入ant -v 如果顯示ant版本說明安裝成功。
1.3下載Android studio(目前安裝的是2.2版本的android studio;)
下載地址:android studio 下載地址

I. android如何使用ant批量打包

ps :後期熟悉ant的話,可以使用純ant腳本或者使用另一種更好的自動化打包工具(maven)關鍵代碼如下:package com.cn.ant; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import java.util.ArrayList; import org.apache.tools.ant.DefaultLogger; import org.apache.tools.ant.Project; import org.apache.tools.ant.ProjectHelper; public class AntTest { private Project project; public void init(String _buildFile, String _baseDir) throws Exception { project = new Project(); project.init(); DefaultLogger consoleLogger = new DefaultLogger(); consoleLogger.setErrorPrintStream(System.err); consoleLogger.setOutputPrintStream(System.out); consoleLogger.setMessageOutputLevel(Project.MSG_INFO); project.addBuildListener(consoleLogger); // Set the base directory. If none is given, "." is used. if (_baseDir == null) _baseDir = new String("."); project.setBasedir(_baseDir); if (_buildFile == null) _buildFile = new String(projectBasePath + File.separator + "build.xml"); //ProjectHelper.getProjectHelper().parse(project, new File(_buildFile)); // 關鍵代碼 ProjectHelper.configureProject(project, new File(_buildFile)); } public void runTarget(String _target) throws Exception { // Test if the project exists if (project == null) throw new Exception( "No target can be launched because the project has not been initialized. Please call the 'init' method first !"); // If no target is specified, run the default one. if (_target == null) _target = project.getDefaultTarget(); // Run the target project.executeTarget(_target); } // private final static ArrayList<String> flagList = new ArrayList<String>(); //也可以使用集合,不過需要手動添加項 private final static String[] flagList = new String[]{"htc","moto","oppo"};//此處初始化市場標識 private final static String projectBasePath = ""; //項目的根目錄,需要配置 private final static String ApkPath = ""; //要改名後拷貝的目錄,需要配置 private final static String placeHolder = ""; //佔位符,需要配置 public static void main(String args[]) { //flagList.add("htc"); //flagList.add("moto"); //flagList.add("oppo"); try { System.out.println("---------ant批量自動化打包開始----------"); for(String flag : flagList){ //先修改manifest文件:讀取臨時文件中的@market@修改為市場標識,然後寫入manifest.xml中 String tempFilePath = projectBasePath + File.separator + "AndroidManifest.xml.temp"; String filePath = projectBasePath + File.separator + "AndroidManifest.xml"; write(filePath,read(tempFilePath, flag)); //執行打包命令 AntTest mytest = new AntTest(); mytest.init( projectBasePath + File.separator + "build.xml", projectBasePath); mytest.runTarget("clean"); mytest.runTarget("release"); //打完包後執行重命名加拷貝操作 //String flag = "htc"; File file = new File(projectBasePath + File.separator +"bin"+File.pathSeparator+"MainActivity-release.apk");//bin目錄下簽名的apk文件 file.renameTo(new File(ApkPath + File.separator + "MainActivity_"+flag+".apk")); } System.out.println("---------ant批量自動化打包結束----------"); } catch (Exception e) { e.printStackTrace(); System.out.println("---------ant批量自動化打包中發生異常----------"); } } public static String read(String filePath,String replaceStr) { BufferedReader br = null; String line = null; StringBuffer buf = new StringBuffer(); try { // 根據文件路徑創建緩沖輸入流 br = new BufferedReader(new FileReader(filePath)); // 循環讀取文件的每一行, 對需要修改的行進行修改, 放入緩沖對象中 while ((line = br.readLine()) != null) { // 此處根據實際需要修改某些行的內容 if (line.contains(placeHolder)) { line = line.replace(placeHolder, replaceStr); buf.append(line); } else { buf.append(line); } buf.append(System.getProperty("line.separator")); } } catch (Exception e) { e.printStackTrace(); } finally { // 關閉流 if (br != null) { try { br.close(); } catch (IOException e) { br = null; } } } return buf.toString(); } /** * 將內容回寫到文件中 * * @param filePath * @param content */ public static void write(String filePath, String content) { BufferedWriter bw = null; try { // 根據文件路徑創建緩沖輸出流 bw = new BufferedWriter(new FileWriter(filePath)); // 將內容寫入文件中 bw.write(content); } catch (Exception e) { e.printStackTrace(); } finally { // 關閉流 if (bw != null) { try { bw.close(); } catch (IOException e) { bw = null; } } } } }

J. Ant打包功能求解!BUILD FAILED

你看看後面是不是有這樣的錯誤:
BUILD FAILED
D:\android\sdk\tools\ant\build.xml:649: The following error occurred while executing this line:
D:\android\sdk\tools\ant\build.xml:694: Execute failed: java.io.IOException: Cannot run program "D:\android\sdk\build-tools\23.0.0_rc2\bin\aapt.exe" (in directory "D:\Cocos\HelloCocos\proj.android"): CreateProcess error=2, 系統找不到指定的文件。
at java.lang.ProcessBuilder.start(ProcessBuilder.java:1048)
at java.lang.Runtime.exec(Runtime.java:620)
....

看提示:系統找不到指定的文件。是哪個文件呢?是這個:D:\android\sdk\build-tools\23.0.0_rc2\bin\aapt.exe,你去你的sdk目錄下看看是否有這個文件夾和文件bin\aapt.exe;沒有的話自己新建一個,然後將aapt.exe和zipalign.exe復制進去,這兩個文件在你D:\android\sdk\build-tools\23.0.0_rc2目錄下。然後在編譯。我的錯誤就是這樣解決的。不知道能否解決你的問題。個人經驗,僅供參考。

熱點內容
紅警咋解壓 發布:2025-08-21 22:42:58 瀏覽:887
負73的源碼 發布:2025-08-21 22:31:51 瀏覽:675
安卓tabs是干什麼的 發布:2025-08-21 22:27:52 瀏覽:164
演算法可能解 發布:2025-08-21 22:27:33 瀏覽:691
用一台電腦作為共享伺服器 發布:2025-08-21 22:25:34 瀏覽:661
觸動精靈腳本過期 發布:2025-08-21 22:10:34 瀏覽:891
無法訪問iis 發布:2025-08-21 22:04:05 瀏覽:262
win7asp伺服器搭建 發布:2025-08-21 22:02:13 瀏覽:594
手機端編寫腳本 發布:2025-08-21 21:46:54 瀏覽:565
九游如何看帳號與密碼 發布:2025-08-21 21:42:32 瀏覽:4