複数のアセットフォルダーがマージされる前、またはマージ中に、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
}
}
現時点では不可能です。
packagingOptions
機能はAndroidリソースまたはアセットには適用されません。
同じ問題が発生し、「!」が追加されているようです。ファイルを除外する必要があることを示すために機能します。
aaptOptions {
ignoreAssetsPattern "!myfile.txt"
}
「assets.exclude」は「!」を追加しても機能する可能性がありますしかし、私はそれをテストしていません...
私はこれがあなたが望むことをするべきだと思います:
Android {
aaptOptions {
ignoreAssetsPattern "myfile.txt"
}
}
出典:http://tools.Android.com/tech-docs/new-build-system/user-guide#TOC- aapt-options
build.gradleがすべてのアセットをマージする内部タスクを完了した後、ファイル/フォルダーを削除できます。
これは、多くの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/**']))
}
}
}
アセットフォルダ情報を保護するには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コードでjs
とcss
を呼び出すことができます。
...
<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>
bash
を使用するだけです
Zip -d xx.jar xxx.txt
jarファイルから重複ファイルを削除するには