web-dev-qa-db-ja.com

Gradle:Androidアセットフォルダーからファイルを除外します

複数のアセットフォルダーがマージされる前、またはマージ中に、Androidプロジェクトアセットフォルダーからファイルを除外する方法を知っていますか?

例えば:

Android {
  sourceSets {
    main {
      assets.srcDirs = [fileTree(dir: 'assets1', exclude: 'myfile.txt'), 'assets2'] // does not work
      assets.exclude 'assets1/myfile.txt' // does not work
      assets.exclude '**/*.txt' // does not work
      assets.exclude '*.txt' // does not work
    }
  }

  packagingOptions {
    exclude 'assets1/myfile.txt' // does not work
    exclude '**/*.txt' // does not work
    exclude '*.txt' // does not work either
  }


  aaptOptions {
    ignoreAssetsPattern "myfile.txt" // does not work
  }
}
22
Blackhex

現時点では不可能です。

packagingOptions機能はAndroidリソースまたはアセットには適用されません。

9
Xavier Ducrohet

同じ問題が発生し、「!」が追加されているようです。ファイルを除外する必要があることを示すために機能します。

aaptOptions {
    ignoreAssetsPattern "!myfile.txt" 
}

「assets.exclude」は「!」を追加しても機能する可能性がありますしかし、私はそれをテストしていません...

20
noblemaster

私はこれがあなたが望むことをするべきだと思います:

Android {
    aaptOptions {
        ignoreAssetsPattern "myfile.txt"
    }
}

出典:http://tools.Android.com/tech-docs/new-build-system/user-guide#TOC- aapt-options

11
Noel De Martin

build.gradleがすべてのアセットをマージする内部タスクを完了した後、ファイル/フォルダーを削除できます。

Android.applicationVariants.all {バリアント->}

これは、多くのAndroidビルドタスク(Groovy言語)が提供されるループです。

したがって、この場合、mergeAssets.doLastは、削除操作を実行できるグルーヴィーなタスクです。

ここでは、コードを使用してZipファイルと画像フォルダーを削除しました

Android 3.1.4でテスト済み

それが役に立てば幸い

Android.applicationVariants.all { variant ->

if (variant.buildType.name == 'release') {

    variant.mergeAssets.doLast {
        println("deleting item.Zip', 'images/**' from variant")
        delete(fileTree(dir: variant.mergeAssets.outputDir, includes: ['item.Zip', 'images/**']))
    }
 }
}
5
Tanuj Jagoori

これを試して:

export Android_AAPT_IGNORE="ignoreAssetsPatternThatActuallyWorks"
./gradlew assembleDebug

mergeDebugAssetsステップに影響を与える唯一の方法です(コード ここにあります )。

提出 バグ これについて。

1
GrieveAndrew

アセットフォルダ情報を保護するにはhtmlファイルがcssまたはjsの場合、最も簡単な方法は次のとおりです。最初にhtml editorにコードを記述し、次に次のようにJava classに入力します。

 public class Content{
    public static final String  myContent ="<!DOCTYPE html> ... </html> "

そして、loadDataWithBaseURLメソッドを介して呼び出します

 webView.loadDataWithBaseURL(null,Content.myContent, "text/html" , "UTF-8" ,null);

そして、HTMLコードでjscssを呼び出すことができます。

 ...
 <head>
 <link rel="stylesheet" type="text/css" 
  href="file:///Android_asset/css/custom.css" /> 
 <script src="file:///Android_asset/js/code.jquery.js"></script>                                                                                   
</head>
0
AnAIDE

bashを使用するだけです

Zip -d xx.jar xxx.txt

jarファイルから重複ファイルを削除するには

0
lotosbin