2011-10-29 63 views
4

我正在Linux上構建一個使用ant的apk(不使用Eclipse),並且我試圖找到一種簡單的方法來在壓縮資源和不使用資源之間進行切換,以保持我的巨大數據庫未壓縮。按這篇文章:如何在構建android apk時將參數傳遞給aapt?

http://ponystyle.com/blog/2010/03/26/dealing-with-asset-compression-in-android-apps/

我看到它是可以通過指定類似aapt -0 db要做到這一點,但我不能找到如何與AAPT編輯方式螞蟻交互信息。或者我必須自己運行aapt?我該怎麼辦?

回答

7

它是Android的build.xml(您可以在SDK,工具和螞蟻下找到它)在構建時執行AAPT。

查找您的build.xml並將下面的目標替換爲「-package-resources」目標。我很確定(目前無法測試它),您可以使用「-Dcompression.disabled = set」開啓或關閉壓縮功能,而使用ANT構建或「compression.disabled = set」時的.properties文件。

<target name="-package-resources" depends="-crunch"> 
    <!-- only package resources if *not* a library project --> 
    <do-only-if-not-library elseText="Library project: do not package resources..." > 
     <aapt executable="${aapt}" 
       command="package" 
       versioncode="${version.code}" 
       versionname="${version.name}" 
       debug="${build.is.packaging.debug}" 
       manifest="AndroidManifest.xml" 
       assets="${asset.absolute.dir}" 
       androidjar="${android.jar}" 
       apkfolder="${out.absolute.dir}" 
       nocrunch="${build.packaging.nocrunch}" 
       resourcefilename="${resource.package.file.name}" 
       resourcefilter="${aapt.resource.filter}" 
       projectLibrariesResName="project.libraries.res" 
       projectLibrariesPackageName="project.libraries.package" 
       previousBuildType="${build.last.target}" 
       buildType="${build.target}"> 
      <res path="${out.res.absolute.dir}" /> 
      <res path="${resource.absolute.dir}" /> 
      <if> 
       <condition> 
        <isset property="compression.disabled" /> 
       </condition> 
       <then> 
        <nocompress/> 
       </then> 
      </if> 
     </aapt> 
    </do-only-if-not-library> 
</target> 
+0

謝謝;我並沒有以這種方式結束,因爲它會讓APK變得巨大,但很高興知道答案。 – yuttadhammo

+2

好的! 您也可以通過將擴展屬性添加到nocompress元素來使其符合每個文件類型。 '<! - 只有db文件 - > ' –

+1

沒有人發現沒有modyfing Android SDK中的內部文件的方式? – Wojciech