[英]How to add external jar libraries to an android project from the command line
我正在嘗試構建一個具有一些依賴關系的Android項目。 jar文件位於lib /目錄中。 我可以通過將這些jar文件添加到我的類路徑來構建項目,但當然它在模擬器中強制關閉,因為這些庫不存在。
我是從命令行使用ant( 不是在eclipse中)這樣做的。 如何從命令行中將它包含在apk中?
Jay K的答案在撰寫本文時是對的,但現在SDK已經改變了,這是實現它的新方法:
ant.properties
添加到ant.properties
:
jar.libs.dir=lib
僅供將來參考:目前SDK中存在一個錯誤,無法使用jar.libs.dir: http : //code.google.com/p/android/issues/detail? id = 33194
一個簡單的解決方案是再次使用jar.libs.dir(等待修復bug),就是在build.xml文件中添加這個目標:
<target name="-pre-compile">
<path id="project.all.jars.path">
<path path="${toString:project.all.jars.path}"/>
<fileset dir="${jar.libs.dir}">
<include name="*.jar"/>
</fileset>
</path>
</target>
在編譯時這樣做:
javac -encoding ascii -target 1.5 -d bin/classes \
-bootclasspath $SDKDIR/android.jar src/some/project/* -classpath=libs/*.jar
而且,當您為Dalvik生成字節碼時:
dx --dex --output=bin/classes.dex bin/classes libs/*.jar
此外,當您打包APK文件時:
apkbuilder bin/something.apk -z bin/projectname.ap_ \
-f bin/classes.dex -rf src -rj libs
我假設你使用Linux ...在Windows上幾乎是一樣的。
回答我自己的問題:
我創建了一個文件“build.properties”並添加了該行
external.libs.dir=lib
這真是一個幸運的猜測。
上面的例子不太合適。 您無法覆蓋project.all.jars.path內聯。 以下是一個工作示例:
<target name="-pre-compile">
<!-- HACK to add the android-support-v4.jar to the classpath directly from the SDK -->
<echo>ORIGINAL jars.path : ${toString:project.all.jars.path}</echo>
<path id="project.all.jars.path.hacked">
<path path="${toString:project.all.jars.path}"/>
<path path="${sdk.dir}/extras/android/support/v4/android-support-v4.jar"/>
</path>
<path id="project.all.jars.path">
<path path="${toString:project.all.jars.path.hacked}"/>
</path>
<echo>HACKED jars.path : ${toString:project.all.jars.path}</echo>
</target>
如果將庫存儲在$ {basedir} / libs中,則ant腳本將能夠找到它們。
我查看了當前的ant腳本($ {sdk.dir} /tools/ant/build.xml),並將jar.libs.dir定義為“libs”。
僅供參考,螞蟻腳本有良好的文檔記錄,因此很容易追蹤。
如果你移動libs,一定要編輯你的.classpath文件,以防止eclipse用戶不必要地遭受痛苦。
external.libs.dir=lib
經過2個小時的搜索,這對我有用。 我的libs目錄中的jar文件最終編譯並與APK捆綁在一起。
將jar放在${YOUR_PROJECT}/libs
目錄中
該jar.libs.dir
屬性是一個目錄。 它不像CLASSPATH,它是以冒號/分號分隔的列表。 在jar.libs.dir中擁有多個目錄的方法是不直接設置它; 讓它默認為libs
並轉到libs並創建所需的.jar文件所需的軟鏈接。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.