![](/img/trans.png)
[英]How to set source version of Java library in Android Studio project
[英]How to specify multiple source directory for Android library project
我使用ant工具構建android庫項目,我需要指定多個源目錄。
我試圖通過在ant.properties文件中添加這些行來指定多個源目錄
source.dir=src:src2
source.dir=src;src2
但是無法在兩種情況下構建,在這兩種情況下都會生成.class ,但是在創建jar文件時我遇到了這個錯誤
BUILD FAILED
C:\\Program Files\\Android\\android-sdk\\tools\\ant\\build.xml:681: The following error occurred while executing this line:
C:\\Program Files\\Android\\android-sdk\\tools\\ant\\build.xml:749:
C:\\workarea\\Android\\Packages\\test\\src;src2 does not exist.
任何人都可以告訴我如何在ant.properties中指定多個源目錄來構建Android庫項目 ?
在沒有修改SDK文件的情況下,這對我有用:
ant.properties:
source.absolute.dir = tmp-src
custom_rules.xml:
<?xml version="1.0" encoding="UTF-8"?>
<project name="CustomRules">
<target name="-pre-build" >
<copy todir="tmp-src" >
<fileset dir="src" includes="**" />
<fileset dir="src-1" includes="**" />
<fileset dir="src-2" includes="**" />
<fileset dir="src-3" includes="**" />
<fileset dir="src-4" includes="**" />
</copy>
</target>
<target name="-post-build" >
<delete dir="tmp-src" />
</target>
</project>
我以棘手的方式解決了這個問題; 這里是
要在具有多個源目錄的android中構建庫項目,首先轉到ant.properties文件(對於linux,它是build.properties )並添加source.dir
source.dir=first_source_dir ;second_source_dir ; third_source_dir
對於lib項目, ant使用ant.properties或build.properties文件中指定的out.dir目錄的目錄bin / classes創建帶有已編譯.class文件的jar庫;
同時創造罐子 , 螞蟻刪除所有.java源文件形成所述罐 ,其可被包含在罐如果編碼器保持在out.dir目錄中的任何.java源文件,並指定在source.dir該目錄;
我們消除這些.java源螞蟻轉到source.dir目錄用下面的命令
<property name="source.absolute.dir" location="${source.dir}" />
dir="${source.absolute.dir}"
用這個命令螞蟻實際上試圖去目錄
cd <your_project_root_dir>/first_source_dir ;second_source_dir ; third_source_dir
哪個不存在......
解:
步驟1.首先確保源目錄 (source.dir)和構建目錄 (out.dir)不同;
步驟2.轉到C:\\ Program Files \\ Android \\ android-sdk \\ tools \\ ant打開build.xml然后轉到jar標簽
<jar destfile="${out.library.jar.file}">
<fileset dir="${out.classes.absolute.dir}"
includes="**/*.class"
excludes="${project.app.package.path}/R.class ${project.app.package.path}/R$*.class ${project.app.package.path}/Manifest.class ${project.app.package.path}/Manifest$*.class ${project.app.package.path}/BuildConfig.class"/>
<fileset dir="${source.absolute.dir}" excludes="**/*.java ${android.package.excludes}" />
</jar>
現在注釋或刪除jar標簽中的最后一個fileset標簽
<jar destfile="${out.library.jar.file}">
<fileset dir="${out.classes.absolute.dir}"
includes="**/*.class"
excludes="${project.app.package.path}/R.class ${project.app.package.path}/R$*.class ${project.app.package.path}/Manifest.class ${project.app.package.path}/Manifest$*.class ${project.app.package.path}/BuildConfig.class"/>
<!--fileset dir="${source.absolute.dir}" excludes="**/*.java ${android.package.excludes}" /-->
</jar>
現在建立你的項目;
這對我來說很好,我認為是最干凈的方法(因為那些是實際來源的軟鏈接,你沒有多個來源副本)
至少在構建工具的更高版本上,問題是放入此屬性的值將傳遞到<property name="source.absolute.dirs" location="source.dirs"/>
。 location
屬性不知道如何處理冒號/分號分隔的路徑。
修復非常簡單,只需使用:
source.absolute.dirs=src1:src2:src3
等,而不是:
source.dirs=src1:src2:src3
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.