2011-12-23 20 views
1

我試圖端口現有的C++應用程序中使用JNI到Android。然而,產生從AndroidManifest.xml中的build.xml文件,並試圖建立與它之後,我得到下面的(相關)輸出:錯誤與資源的build.xml未確認目錄/

[aapt] Generating resource IDs... 
    [aapt] invalid resource directory name: /{Project Directory}/res/audio 
    [aapt] invalid resource directory name: /{Project Directory}/res/img 

BUILD FAILED 
/{Android SDK Dir}/tools/ant/build.xml:560: The following error occurred while executing this line: 
/{Android SDK Dir}/tools/ant/build.xml:589: null returned: 1 

在已經被命名爲「資源」目錄這些都是現有目錄巧合,並不意味着對Java有語義含義。如果我從res /中刪除這些,那麼它的構建就很好。所以我的問題是 - 組織這個(或告訴螞蟻忽略無法識別的目錄)的最佳方式是什麼? Res已經是一個非常大的目錄結構,主要是.png .mp3和文本文件。

回答

1

如果重命名他們是出於無論什麼原因的問題,你可以在build.xml中覆蓋-package資源和定製AAPT,指定新的位置RES /各種其它選項來處理,可能出現了問題(然後AAPT會研究部分)。

您可以檢查Android的SDK /工具/ ANT /什麼是目標已經做的build.xml,但本質上,你只會在下面你自己的build.xml

<target name="-package-resources"> 
    <echo>Packaging resources</echo> 
    <aapt executable="${aapt}" 
     command="package" 
     verbose="${verbose}" 
     versioncode="${version.code}" 
     manifest="AndroidManifest.xml" 
     assets="${asset.absolute.dir}" 
     androidjar="${android.jar}" 
     apkfolder="${out.absolute.dir}" 
     resourcefilename="${resource.package.file.name}" 
     projectLibrariesResName="${project.libraries.res}" 
     projectLibrariesPackageName="${project.libraries.package}" 
     resourcefilter="${aapt.resource.filter}"> 

     <res path="${resource.absolute.dir}"/> 
    </aapt> 
</target> 

和定製粘貼您的需求。

另請注意,它從resource.absolute.dir中提取res路徑,所以如果你真的需要這樣做,那麼你可以在ant.properties中設置它,或者默認的屬性文件在sdk工具中是什麼你正在使用。只需檢查build.xml即可查看或添加指向自己的新的loadproperties行。 IIRC,resource.absolute.dir根據resource.dir設置,因此您可能必須嘗試每個屬性文件,但您只需設置屬性文件

resource.dir=new/path/to/res