LoginSignup
15
14

More than 5 years have passed since last update.

apkにテストのファイルを含めない

Last updated at Posted at 2014-05-21

apkは普通のzipアーカイブなので誰でも解凍することができます。
本来含まれるはずのないテストに使っているデータが含まれてしまい、とてもよくないのでなんとかしたくなります。

% zipinfo build/apk/app-debug-unaligned.apk | grep androidTest
-rw----     2.0 fat      169 bl defN 20-May-14 19:07 androidTest/resources/fixtures/foo.json
-rw----     2.0 fat      100 bl defN 20-May-14 19:07 androidTest/resources/fixtures/bar.json
-rw----     2.0 fat      655 bl defN 20-May-14 19:07 androidTest/resources/fixtures/baz.json
-rw----     2.0 fat      144 bl defN 20-May-14 19:07 androidTest/resources/fixtures/foobar.json

Eclipse(Ant)の時とAndroid Studio(Gradle)のプロジェクトでは、ディレクトリ構成が大きく変わりました。このプロジェクトではRobolectricを使っていて、gradle-android-test-plugin 0.10.0ではテストコードのディレクトリをsrc/androidTestかsrc/testにしなければ動かないという仕様があります。
そのため、Ant時代から引き継いだsrcディレクトリの下にアプリのコードとテストのコードを入れなければならないという制約があります。

Gradleで

build.gradle
aaptOptions {
    ignoreAssetsPattern '<dir>foo'
}

と書くとディレクトリfooが除外されるはずなのですが、これを書いている時点で最新のGradle Android plugin 0.10.2では除外されませんでした…

% /Users/itochan/local/android-sdks/build-tools/19.0.3/aapt 
(中略)
   --ignore-assets
       Assets to be ignored. Default pattern is:
       !.svn:!.git:!.ds_store:!*.scc:.*:<dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~

ここではデフォルトで <dir>_* が除外されるということに着目し、ディレクトリ名をアンダースコアで始めるようにします。

% tree src
src
├── androidTest
│   ├── java
│   │   └── jp
│   │       └── itochan
│   │           └── android
│   │               └── test
│   │                   └── foo
│   │                       └── FooTest.java
│   └── resources
│       └── _fixtures
│           ├── foo.json
│           ├── bar.json
│           ├── baz.json
│           └── foobar.json
├── jp
...
% ./gradlew assembleDebug
% zipinfo build/apk/app-debug-unaligned.apk | grep androidTest

これでapkに含まれることはなくなりました。

15
14
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
15
14