├── CNNCache ├── app │ ├── .gitignore │ ├── CMakeFiles │ │ ├── cmake.check_cache │ │ ├── feature_tests.bin │ │ ├── 3.9.0 │ │ │ ├── CMakeDetermineCompilerABI_C.bin │ │ │ ├── CMakeDetermineCompilerABI_CXX.bin │ │ │ ├── CMakeSystem.cmake │ │ │ └── CMakeCCompiler.cmake │ │ └── feature_tests.c │ ├── src │ │ └── main │ │ │ ├── res │ │ │ ├── mipmap-hdpi │ │ │ │ ├── ic_launcher.png │ │ │ │ └── ic_launcher_round.png │ │ │ ├── mipmap-mdpi │ │ │ │ ├── ic_launcher.png │ │ │ │ └── ic_launcher_round.png │ │ │ ├── mipmap-xhdpi │ │ │ │ ├── ic_launcher.png │ │ │ │ └── ic_launcher_round.png │ │ │ ├── mipmap-xxhdpi │ │ │ │ ├── ic_launcher.png │ │ │ │ └── ic_launcher_round.png │ │ │ ├── mipmap-xxxhdpi │ │ │ │ ├── ic_launcher.png │ │ │ │ └── ic_launcher_round.png │ │ │ ├── values │ │ │ │ ├── colors.xml │ │ │ │ ├── strings.xml │ │ │ │ └── styles.xml │ │ │ └── layout │ │ │ │ ├── main.xml │ │ │ │ ├── activity_camera.xml │ │ │ │ ├── benchmark_layout.xml │ │ │ │ └── camera_connection_fragment.xml │ │ │ ├── java │ │ │ └── edu │ │ │ │ └── pku │ │ │ │ └── sei │ │ │ │ └── cnncache │ │ │ │ ├── DS │ │ │ │ └── DS_RES.java │ │ │ │ ├── MainActivity.java │ │ │ │ ├── UI │ │ │ │ ├── OverlayView.java │ │ │ │ └── AutoFitTextureView.java │ │ │ │ └── Models │ │ │ │ └── NCNN.java │ │ │ ├── cpp │ │ │ ├── image_util │ │ │ │ ├── rgb2yuv.h │ │ │ │ └── yuv2rgb.h │ │ │ └── CMakeLists.txt │ │ │ └── AndroidManifest.xml │ ├── proguard-rules.pro │ └── build.gradle ├── settings.gradle ├── .idea │ ├── copyright │ │ └── profiles_settings.xml │ ├── modules.xml │ ├── runConfigurations.xml │ ├── gradle.xml │ └── compiler.xml ├── gradle │ └── wrapper │ │ ├── gradle-wrapper.jar │ │ └── gradle-wrapper.properties ├── .gitignore ├── build.gradle ├── gradle.properties └── gradlew.bat ├── examples ├── squeezencnn │ ├── assets │ │ ├── synset_words.txt │ │ ├── squeezenet_v1.1.bin │ │ └── squeezenet_v1.1.param.bin │ ├── res │ │ ├── values │ │ │ └── strings.xml │ │ └── layout │ │ │ └── main.xml │ ├── jni │ │ ├── Application.mk │ │ └── Android.mk │ ├── local.properties │ ├── project.properties │ ├── AndroidManifest.xml │ ├── proguard-project.txt │ ├── ant.properties │ └── src │ │ └── com │ │ └── tencent │ │ └── squeezencnn │ │ └── SqueezeNcnn.java ├── squeezenet_v1.1.bin ├── squeezenet_v1.1.caffemodel ├── CMakeLists.txt └── squeezenet.cpp ├── .gitignore ├── README.md ├── Info.plist ├── tools ├── CMakeLists.txt └── tensorflow │ ├── CMakeLists.txt │ ├── resource_handle.proto │ ├── versions.proto │ ├── tensor_shape.proto │ ├── types.proto │ ├── graph.proto │ ├── attr_value.proto │ └── node_def.proto ├── src ├── blob.cpp ├── platform.h.in ├── layer │ ├── arm │ │ ├── lrn_arm.h │ │ ├── pooling_arm.h │ │ ├── slice_arm.h │ │ ├── eltwise_arm.h │ │ ├── innerproduct_arm.h │ │ ├── deconvolution_arm.h │ │ ├── bias_arm.h │ │ ├── relu_arm.h │ │ ├── prelu_arm.h │ │ ├── scale_arm.h │ │ ├── sigmoid_arm.h │ │ ├── softmax_arm.h │ │ ├── absval_arm.h │ │ ├── batchnorm_arm.h │ │ ├── convolution_arm.h │ │ ├── convolutiondepthwise_arm.h │ │ ├── deconvolution_arm.cpp │ │ └── slice_arm.cpp │ ├── flatten.h │ ├── x86 │ │ └── convolution_x86.h │ ├── split.h │ ├── bnll.h │ ├── tanh.h │ ├── dropout.h │ ├── absval.h │ ├── sigmoid.h │ ├── softmax.h │ ├── split.cpp │ ├── dropout.cpp │ ├── concat.h │ ├── tile.h │ ├── argmax.h │ ├── crop.h │ ├── mvn.h │ ├── slice.h │ ├── elu.h │ ├── relu.h │ ├── input.h │ ├── reshape.h │ ├── threshold.h │ ├── exp.h │ ├── log.h │ ├── spp.h │ ├── power.h │ ├── roipooling.h │ ├── memorydata.h │ ├── eltwise.h │ ├── prelu.h │ ├── lrn.h │ ├── proposal.h │ ├── bias.h │ ├── flatten.cpp │ ├── embed.h │ ├── lstm.h │ ├── pooling.h │ ├── scale.h │ ├── binaryop.h │ ├── innerproduct.h │ ├── rnn.h │ ├── reduction.h │ ├── batchnorm.h │ ├── deconvolution.h │ ├── convolutiondepthwise.h │ ├── unaryop.h │ ├── convolution.h │ ├── input.cpp │ ├── tanh.cpp │ ├── memorydata.cpp │ ├── sigmoid.cpp │ ├── absval.cpp │ ├── crop.cpp │ ├── bnll.cpp │ ├── threshold.cpp │ ├── argmax.cpp │ ├── elu.cpp │ ├── concat.cpp │ └── power.cpp ├── blob.h ├── cpu.h └── opencv.cpp ├── package.sh ├── iosxc.toolchain.cmake ├── iossimxc.toolchain.cmake └── CMakeLists.txt /CNNCache/app/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /CNNCache/settings.gradle: -------------------------------------------------------------------------------- 1 | include ':app' 2 | -------------------------------------------------------------------------------- /examples/squeezencnn/assets/synset_words.txt: -------------------------------------------------------------------------------- 1 | ../../synset_words.txt -------------------------------------------------------------------------------- /examples/squeezencnn/assets/squeezenet_v1.1.bin: -------------------------------------------------------------------------------- 1 | ../../squeezenet_v1.1.bin -------------------------------------------------------------------------------- /examples/squeezenet_v1.1.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xumengwei/DeepCache/HEAD/examples/squeezenet_v1.1.bin -------------------------------------------------------------------------------- /CNNCache/.idea/copyright/profiles_settings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /examples/squeezenet_v1.1.caffemodel: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xumengwei/DeepCache/HEAD/examples/squeezenet_v1.1.caffemodel -------------------------------------------------------------------------------- /CNNCache/app/CMakeFiles/cmake.check_cache: -------------------------------------------------------------------------------- 1 | # This file is generated by cmake for dependency checking of the CMakeCache.txt file 2 | -------------------------------------------------------------------------------- /CNNCache/app/CMakeFiles/feature_tests.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xumengwei/DeepCache/HEAD/CNNCache/app/CMakeFiles/feature_tests.bin -------------------------------------------------------------------------------- /CNNCache/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xumengwei/DeepCache/HEAD/CNNCache/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /CNNCache/app/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xumengwei/DeepCache/HEAD/CNNCache/app/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /CNNCache/app/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xumengwei/DeepCache/HEAD/CNNCache/app/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /CNNCache/app/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xumengwei/DeepCache/HEAD/CNNCache/app/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /examples/squeezencnn/assets/squeezenet_v1.1.param.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xumengwei/DeepCache/HEAD/examples/squeezencnn/assets/squeezenet_v1.1.param.bin -------------------------------------------------------------------------------- /CNNCache/app/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xumengwei/DeepCache/HEAD/CNNCache/app/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /CNNCache/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xumengwei/DeepCache/HEAD/CNNCache/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /CNNCache/app/src/main/res/mipmap-hdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xumengwei/DeepCache/HEAD/CNNCache/app/src/main/res/mipmap-hdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /CNNCache/app/src/main/res/mipmap-mdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xumengwei/DeepCache/HEAD/CNNCache/app/src/main/res/mipmap-mdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /examples/squeezencnn/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | squeezencnn 4 | 5 | -------------------------------------------------------------------------------- /CNNCache/app/CMakeFiles/3.9.0/CMakeDetermineCompilerABI_C.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xumengwei/DeepCache/HEAD/CNNCache/app/CMakeFiles/3.9.0/CMakeDetermineCompilerABI_C.bin -------------------------------------------------------------------------------- /CNNCache/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xumengwei/DeepCache/HEAD/CNNCache/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /CNNCache/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xumengwei/DeepCache/HEAD/CNNCache/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /CNNCache/.gitignore: -------------------------------------------------------------------------------- 1 | *.iml 2 | .gradle 3 | /local.properties 4 | /.idea/workspace.xml 5 | /.idea/libraries 6 | .DS_Store 7 | /build 8 | /captures 9 | .externalNativeBuild 10 | -------------------------------------------------------------------------------- /CNNCache/app/CMakeFiles/3.9.0/CMakeDetermineCompilerABI_CXX.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xumengwei/DeepCache/HEAD/CNNCache/app/CMakeFiles/3.9.0/CMakeDetermineCompilerABI_CXX.bin -------------------------------------------------------------------------------- /CNNCache/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xumengwei/DeepCache/HEAD/CNNCache/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /examples/squeezencnn/jni/Application.mk: -------------------------------------------------------------------------------- 1 | 2 | # APP_STL := stlport_static 3 | APP_STL := gnustl_static 4 | # APP_ABI := armeabi armeabi-v7a 5 | APP_ABI := armeabi-v7a 6 | APP_PLATFORM := android-9 7 | NDK_TOOLCHAIN_VERSION := 4.9 8 | -------------------------------------------------------------------------------- /CNNCache/app/src/main/res/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #3F51B5 4 | #303F9F 5 | #FF4081 6 | 7 | -------------------------------------------------------------------------------- /CNNCache/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | #Tue Aug 08 21:15:15 CST 2017 2 | distributionBase=GRADLE_USER_HOME 3 | distributionPath=wrapper/dists 4 | zipStoreBase=GRADLE_USER_HOME 5 | zipStorePath=wrapper/dists 6 | distributionUrl=https\://services.gradle.org/distributions/gradle-3.3-all.zip 7 | -------------------------------------------------------------------------------- /examples/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | 2 | find_package(OpenCV REQUIRED core highgui imgproc) 3 | 4 | include_directories(${CMAKE_CURRENT_SOURCE_DIR}/../src) 5 | include_directories(${CMAKE_CURRENT_BINARY_DIR}/../src) 6 | 7 | add_executable(squeezenet squeezenet.cpp) 8 | 9 | target_link_libraries(squeezenet ncnn ${OpenCV_LIBS}) 10 | -------------------------------------------------------------------------------- /CNNCache/app/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | CNNCache 3 | Info 4 | This sample needs camera permission. 5 | This device doesn\'t support Camera2 API. 6 | 7 | -------------------------------------------------------------------------------- /CNNCache/app/src/main/java/edu/pku/sei/cnncache/DS/DS_RES.java: -------------------------------------------------------------------------------- 1 | package edu.pku.sei.cnncache.DS; 2 | 3 | /** 4 | * Created by echo on 18/09/2017. 5 | */ 6 | 7 | public class DS_RES 8 | { 9 | public int offset_x; 10 | public int offset_y; 11 | //double[] MSE; 12 | public double[] PSNR; 13 | public int bias_x; 14 | public int bias_y; 15 | double res; 16 | } 17 | -------------------------------------------------------------------------------- /CNNCache/.idea/modules.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /CNNCache/app/CMakeFiles/3.9.0/CMakeSystem.cmake: -------------------------------------------------------------------------------- 1 | set(CMAKE_HOST_SYSTEM "Darwin-16.5.0") 2 | set(CMAKE_HOST_SYSTEM_NAME "Darwin") 3 | set(CMAKE_HOST_SYSTEM_VERSION "16.5.0") 4 | set(CMAKE_HOST_SYSTEM_PROCESSOR "x86_64") 5 | 6 | 7 | 8 | set(CMAKE_SYSTEM "Darwin-16.5.0") 9 | set(CMAKE_SYSTEM_NAME "Darwin") 10 | set(CMAKE_SYSTEM_VERSION "16.5.0") 11 | set(CMAKE_SYSTEM_PROCESSOR "x86_64") 12 | 13 | set(CMAKE_CROSSCOMPILING "FALSE") 14 | 15 | set(CMAKE_SYSTEM_LOADED 1) 16 | -------------------------------------------------------------------------------- /examples/squeezencnn/local.properties: -------------------------------------------------------------------------------- 1 | # This file is automatically generated by Android Tools. 2 | # Do not modify this file -- YOUR CHANGES WILL BE ERASED! 3 | # 4 | # This file must *NOT* be checked into Version Control Systems, 5 | # as it contains information specific to your local configuration. 6 | 7 | # location of the SDK. This is only used by Ant 8 | # For customization when using a Version Control System, please read the 9 | # header note. 10 | sdk.dir=/home/nihui/osd/android-sdk-linux 11 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # CMake build directory 2 | *build*/ 3 | 4 | # Backup files. 5 | *~ 6 | 7 | # Prerequisites 8 | *.d 9 | 10 | # Compiled Object files 11 | *.slo 12 | *.lo 13 | *.o 14 | *.obj 15 | 16 | # Precompiled Headers 17 | *.gch 18 | *.pch 19 | 20 | # Compiled Dynamic libraries 21 | *.so 22 | *.dylib 23 | *.dll 24 | 25 | # Fortran module files 26 | *.mod 27 | *.smod 28 | 29 | # Compiled Static libraries 30 | *.lai 31 | *.la 32 | *.a 33 | *.lib 34 | 35 | # Executables 36 | *.exe 37 | *.out 38 | *.app 39 | -------------------------------------------------------------------------------- /CNNCache/build.gradle: -------------------------------------------------------------------------------- 1 | // Top-level build file where you can add configuration options common to all sub-projects/modules. 2 | 3 | buildscript { 4 | repositories { 5 | jcenter() 6 | } 7 | dependencies { 8 | classpath 'com.android.tools.build:gradle:2.3.3' 9 | 10 | // NOTE: Do not place your application dependencies here; they belong 11 | // in the individual module build.gradle files 12 | } 13 | } 14 | 15 | allprojects { 16 | repositories { 17 | jcenter() 18 | } 19 | } 20 | 21 | task clean(type: Delete) { 22 | delete rootProject.buildDir 23 | } 24 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | Implementation for our paper **DeepCache: Principled Cache for Mobile Deep Vision**. 2 | 3 | --- 4 | 5 | This implementation is based on [Tencent ncnn](https://github.com/Tencent/ncnn). 6 | 7 | The folder *CNNCache* is an Android demo of DeepCache, including the image matching algorithm in RenderScript, a real-time app, and the benchmark. Some configuration in CMake file needs to be updated according to your enviornment. 8 | 9 | 10 | ### Other notes 11 | * The version of ncnn used currently is rather old. We plan to update it to newer one. 12 | * Current implemention doesn't support neon in ncnn. Let's make it later. -------------------------------------------------------------------------------- /CNNCache/.idea/runConfigurations.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 11 | 12 | -------------------------------------------------------------------------------- /Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleName 6 | ncnn 7 | CFBundleIdentifier 8 | com.tencent.ncnn 9 | CFBundleVersion 10 | 1.0 11 | CFBundleShortVersionString 12 | 1.0 13 | CFBundleSignature 14 | ???? 15 | CFBundlePackageType 16 | FMWK 17 | 18 | 19 | -------------------------------------------------------------------------------- /examples/squeezencnn/project.properties: -------------------------------------------------------------------------------- 1 | # This file is automatically generated by Android Tools. 2 | # Do not modify this file -- YOUR CHANGES WILL BE ERASED! 3 | # 4 | # This file must be checked in Version Control Systems. 5 | # 6 | # To customize properties used by the Ant build system edit 7 | # "ant.properties", and override values to adapt the script to your 8 | # project structure. 9 | # 10 | # To enable ProGuard to shrink and obfuscate your code, uncomment this (available properties: sdk.dir, user.home): 11 | #proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt 12 | 13 | # Project target. 14 | target=android-9 15 | -------------------------------------------------------------------------------- /tools/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | 2 | include_directories(${CMAKE_CURRENT_SOURCE_DIR}/../src) 3 | include_directories(${CMAKE_CURRENT_BINARY_DIR}/../src) 4 | 5 | find_package(Protobuf REQUIRED) 6 | 7 | include_directories(${PROTOBUF_INCLUDE_DIR}) 8 | 9 | include_directories(${CMAKE_CURRENT_BINARY_DIR}) 10 | protobuf_generate_cpp(CAFFE_PROTO_SRCS CAFFE_PROTO_HDRS caffe.proto) 11 | 12 | add_executable(caffe2ncnn caffe2ncnn.cpp ${CAFFE_PROTO_SRCS} ${CAFFE_PROTO_HDRS}) 13 | 14 | target_link_libraries(caffe2ncnn ${PROTOBUF_LIBRARIES}) 15 | 16 | include_directories(${CMAKE_SOURCE_DIR}/src) 17 | 18 | add_executable(ncnn2mem ncnn2mem.cpp) 19 | 20 | target_link_libraries(ncnn2mem ncnn) 21 | -------------------------------------------------------------------------------- /tools/tensorflow/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | 2 | find_package(Protobuf REQUIRED) 3 | 4 | include_directories(${PROTOBUF_INCLUDE_DIR}) 5 | 6 | include_directories(${CMAKE_CURRENT_BINARY_DIR}) 7 | protobuf_generate_cpp(TENSORFLOW_PROTO_SRCS TENSORFLOW_PROTO_HDRS 8 | attr_value.proto 9 | function.proto 10 | graph.proto 11 | node_def.proto 12 | op_def.proto 13 | resource_handle.proto 14 | tensor.proto 15 | tensor_shape.proto 16 | types.proto 17 | versions.proto 18 | ) 19 | 20 | add_executable(tensorflow2ncnn tensorflow2ncnn.cpp ${TENSORFLOW_PROTO_SRCS} ${TENSORFLOW_PROTO_HDRS}) 21 | 22 | target_link_libraries(tensorflow2ncnn ${PROTOBUF_LIBRARIES}) 23 | -------------------------------------------------------------------------------- /examples/squeezencnn/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /CNNCache/.idea/gradle.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 17 | 18 | -------------------------------------------------------------------------------- /CNNCache/.idea/compiler.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /CNNCache/gradle.properties: -------------------------------------------------------------------------------- 1 | # Project-wide Gradle settings. 2 | 3 | # IDE (e.g. Android Studio) users: 4 | # Gradle settings configured through the IDE *will override* 5 | # any settings specified in this file. 6 | 7 | # For more details on how to configure your build environment visit 8 | # http://www.gradle.org/docs/current/userguide/build_environment.html 9 | 10 | # Specifies the JVM arguments used for the daemon process. 11 | # The setting is particularly useful for tweaking memory settings. 12 | org.gradle.jvmargs=-Xmx1536m 13 | 14 | # When configured, Gradle will run in incubating parallel mode. 15 | # This option should only be used with decoupled projects. More details, visit 16 | # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects 17 | # org.gradle.parallel=true 18 | -------------------------------------------------------------------------------- /examples/squeezencnn/proguard-project.txt: -------------------------------------------------------------------------------- 1 | # To enable ProGuard in your project, edit project.properties 2 | # to define the proguard.config property as described in that file. 3 | # 4 | # Add project specific ProGuard rules here. 5 | # By default, the flags in this file are appended to flags specified 6 | # in ${sdk.dir}/tools/proguard/proguard-android.txt 7 | # You can edit the include path and order by changing the ProGuard 8 | # include property in project.properties. 9 | # 10 | # For more details, see 11 | # http://developer.android.com/guide/developing/tools/proguard.html 12 | 13 | # Add any project specific keep options here: 14 | 15 | # If your project uses WebView with JS, uncomment the following 16 | # and specify the fully qualified class name to the JavaScript interface 17 | # class: 18 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview { 19 | # public *; 20 | #} 21 | -------------------------------------------------------------------------------- /CNNCache/app/src/main/res/layout/main.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 11 | 12 |