Android学习20 -- 手搓App2(Gradle)
1 前言
昨天写了一个完全手搓的:Android学习19 -- 手搓App-CSDN博客
后面谷歌说不要用aapt,d8这些来搞。其实不想弄Gradle的,不过想着既然开始了,就多看一些。之前写过一篇Gradle,不过是最简单的编译,不涉及到安卓。Android学习18 -- Gradle_resourcehashescache.bin-CSDN博客
现在既然环境都搭建了,索性在上一篇的基础上一起弄弄Gradle看。
2 Gradle环境和配置
新的文件结构和之前都有不同。
代码和AndroidManifest.xml都是放在app\src\main下面。
2.1 配置文件
app下面也要增加一个build.gradle。
整体来说文件也增加非常多。可以参看最后的附录。
代码延续了之前的代码,src和AndroidManifest.xml都是上一篇文章中的。
增加的文件主要就是Gradle相关的。
在根文件夹下面增加两个:
build.gradle
buildscript {
repositories {
maven { url 'https://maven.aliyun.com/repository/google' }
maven { url 'https://maven.aliyun.com/repository/public' }
maven { url 'https://maven.aliyun.com/repository/central' }
google()
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:7.0.2'
}
}
allprojects {
repositories {
maven { url 'https://maven.aliyun.com/repository/google' }
maven { url 'https://maven.aliyun.com/repository/public' }
maven { url 'https://maven.aliyun.com/repository/central' }
google()
mavenCentral()
}
}
这里几个maven标志是为了解决无法下载的问题。换成了国内的阿里云服务器。。。
这里最坑的就是classpath 'com.android.tools.build:gradle:7.0.2',这里面gradle的版本我前后换了四五个。。。
gradle.properties
android.useAndroidX=true
android.enableJetifier=true
在App的文件夹中,也要增加一个build.gradle
plugins {
id 'com.android.application'
}
android {
compileSdk 28// Target Android 9
defaultConfig {
applicationId "com.example.simpleapp" // Replace with your package name
minSdk 21 // Minimum SDK can be lower than 28
targetSdk 28// Target Android 9
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
implementation 'androidx.appcompat:appcompat:1.3.1'
}
因为目标设备是Android9,所以SDK选的28。
这里最坑的就是dependencies,里面要依赖什么库,那个库要什么版本,不熟练的话根本不知道,还只能去猜碰运气。。。
2.2 环境
环境上也是非常折腾,之前用javac,aapt做包的时候,也没有挑JDK的版本。这里就不行了,必须要Android9匹配的版本,前后装了几个版本的JDK,还有Gradle,苦不堪言。。。至于Android_SDK,好像Gradle会自己管理。
3 构建
环境和配置文件弄好之后,运行构建本身倒是挺简单的,就是在根目录运行两个命令:
gradle wrapper
gradlew assembleDebug
但是真正运行这个堪称噩梦,无数次的报错,各种版本匹配,环境,配置的问题。如果没有GPT这些,估计我是真解决不了。
反正原则就是遇到问题解决问题吧,主要还是要根据Android9的版本,很多东西要切回老的组件。问题是你根本不知道什么版本安卓需要对应什么版本JDK,Gradle这些环境和一大堆库。。。
这里还有一个坑,默认状态下运行gradlew assembleDebug,会去下载Gradle,倒是因为网络问题,是大概率要timeout的。折腾了半天,最后参考的这篇:【flutter】 Running Gradle task ‘assembleDebug‘...超时问题_running gradle task 'assembledebug'...-CSDN博客
这里要修改gradle\wrapper\gradle-wrapper.properties,把里面的服务器位置改成这个https://mirrors.cloud.tencent.com/gradle/
无数次的折腾后,终于成了:
没有编译,也没有d8,也不用手动签名了。在output下直接可以看到做好的apk
新的apk差不多1.5M,比之前完全手搓的大了非常多。用压缩软件打开做好的apk。
可以看到dex文件就是3个,其中第一个原始有2M多,res里面东西也很多,估计是Gradle搞的时候加了很多私货吧。。。
4 运行
编完之后之后就很顺利了,ADB直接安装。(安装前要先卸载之前的,否则会说签名不匹配)
adb install app-debug.apk
其实对比一下昨天完全手搓的,安装的时候没有提示说有组件太老了,而且界面精美了不少。看来Gradle确实多做了一些自动化的内容。但是确实配置太麻烦了。。。
5 附录
完整的文件列表:
E:.
│ build.gradle
│ gradle.properties
│ gradlew
│ gradlew.bat
│ settings.gradle
│
├─.gradle
│ ├─6.9.2
│ │ │ gc.properties
│ │ │
│ │ ├─fileChanges
│ │ │ last-build.bin
│ │ │
│ │ ├─fileHashes
│ │ │ fileHashes.lock
│ │ │
│ │ └─vcsMetadata-1
│ ├─7.0.2
│ │ │ gc.properties
│ │ │
│ │ ├─dependencies-accessors
│ │ │ dependencies-accessors.lock
│ │ │ gc.properties
│ │ │
│ │ ├─executionHistory
│ │ │ executionHistory.bin
│ │ │ executionHistory.lock
│ │ │
│ │ ├─fileChanges
│ │ │ last-build.bin
│ │ │
│ │ ├─fileHashes
│ │ │ fileHashes.bin
│ │ │ fileHashes.lock
│ │ │ resourceHashesCache.bin
│ │ │
│ │ ├─javaCompile
│ │ │ classAnalysis.bin
│ │ │ jarAnalysis.bin
│ │ │ javaCompile.lock
│ │ │ taskHistory.bin
│ │ │
│ │ └─vcsMetadata-1
│ ├─8.12.1
│ │ │ gc.properties
│ │ │
│ │ ├─checksums
│ │ │ checksums.lock
│ │ │
│ │ ├─executionHistory
│ │ │ executionHistory.bin
│ │ │ executionHistory.lock
│ │ │
│ │ ├─expanded
│ │ ├─fileChanges
│ │ │ last-build.bin
│ │ │
│ │ ├─fileHashes
│ │ │ fileHashes.bin
│ │ │ fileHashes.lock
│ │ │
│ │ └─vcsMetadata
│ ├─buildOutputCleanup
│ │ buildOutputCleanup.lock
│ │ cache.properties
│ │ outputFiles.bin
│ │
│ ├─checksums
│ │ checksums.lock
│ │ md5-checksums.bin
│ │ sha1-checksums.bin
│ │
│ └─vcs-1
│ gc.properties
│
├─app
│ │ build.gradle
│ │ my-release-key.jks
│ │
│ ├─bin
│ │ └─com
│ │ └─example
│ │ └─simpleapp
│ │ MainActivity.class
│ │
│ ├─build
│ │ ├─generated
│ │ │ ├─ap_generated_sources
│ │ │ │ └─debug
│ │ │ │ └─out
│ │ │ ├─res
│ │ │ │ ├─pngs
│ │ │ │ │ └─debug
│ │ │ │ └─resValues
│ │ │ │ └─debug
│ │ │ └─source
│ │ │ └─buildConfig
│ │ │ └─debug
│ │ │ └─com
│ │ │ └─example
│ │ │ └─simpleapp
│ │ │ BuildConfig.java
│ │ │
│ │ ├─intermediates
│ │ │ ├─aar_metadata_check
│ │ │ │ └─debug
│ │ │ ├─annotation_processor_list
│ │ │ │ └─debug
│ │ │ │ annotationProcessors.json
│ │ │ │
│ │ │ ├─app_metadata
│ │ │ │ └─debug
│ │ │ │ app-metadata.properties
│ │ │ │
│ │ │ ├─compatible_screen_manifest
│ │ │ │ └─debug
│ │ │ │ output-metadata.json
│ │ │ │
│ │ │ ├─compile_and_runtime_not_namespaced_r_class_jar
│ │ │ │ └─debug
│ │ │ │ R.jar
│ │ │ │
│ │ │ ├─compressed_assets
│ │ │ │ └─debug
│ │ │ │ └─out
│ │ │ ├─data_binding_layout_info_type_merge
│ │ │ │ └─debug
│ │ │ │ └─out
│ │ │ ├─desugar_graph
│ │ │ │ └─debug
│ │ │ │ └─out
│ │ │ │ ├─currentProject
│ │ │ │ │ ├─dirs_bucket_0
│ │ │ │ │ │ graph.bin
│ │ │ │ │ │
│ │ │ │ │ ├─dirs_bucket_1
│ │ │ │ │ │ graph.bin
│ │ │ │ │ │
│ │ │ │ │ ├─dirs_bucket_2
│ │ │ │ │ │ graph.bin
│ │ │ │ │ │
│ │ │ │ │ ├─dirs_bucket_3
│ │ │ │ │ │ graph.bin
│ │ │ │ │ │
│ │ │ │ │ ├─jar_c74e1c0ced86e050bd2576dd01860040994d379f4892d40b3abdfafcbde9e752_bucket_0
│ │ │ │ │ │ graph.bin
│ │ │ │ │ │
│ │ │ │ │ ├─jar_c74e1c0ced86e050bd2576dd01860040994d379f4892d40b3abdfafcbde9e752_bucket_1
│ │ │ │ │ │ graph.bin
│ │ │ │ │ │
│ │ │ │ │ ├─jar_c74e1c0ced86e050bd2576dd01860040994d379f4892d40b3abdfafcbde9e752_bucket_2
│ │ │ │ │ │ graph.bin
│ │ │ │ │ │
│ │ │ │ │ └─jar_c74e1c0ced86e050bd2576dd01860040994d379f4892d40b3abdfafcbde9e752_bucket_3
│ │ │ │ │ graph.bin
│ │ │ │ │
│ │ │ │ ├─externalLibs
│ │ │ │ ├─mixedScopes
│ │ │ │ └─otherProjects
│ │ │ ├─dex
│ │ │ │ └─debug
│ │ │ │ ├─mergeExtDexDebug
│ │ │ │ │ classes.dex
│ │ │ │ │
│ │ │ │ ├─mergeLibDexDebug
│ │ │ │ │ ├─0
│ │ │ │ │ ├─1
│ │ │ │ │ ├─10
│ │ │ │ │ ├─11
│ │ │ │ │ ├─12
│ │ │ │ │ ├─13
│ │ │ │ │ ├─14
│ │ │ │ │ ├─15
│ │ │ │ │ ├─2
│ │ │ │ │ ├─3
│ │ │ │ │ ├─4
│ │ │ │ │ ├─5
│ │ │ │ │ ├─6
│ │ │ │ │ ├─7
│ │ │ │ │ ├─8
│ │ │ │ │ └─9
│ │ │ │ └─mergeProjectDexDebug
│ │ │ │ ├─0
│ │ │ │ │ classes.dex
│ │ │ │ │
│ │ │ │ ├─1
│ │ │ │ ├─10
│ │ │ │ ├─11
│ │ │ │ ├─12
│ │ │ │ ├─13
│ │ │ │ ├─14
│ │ │ │ │ classes.dex
│ │ │ │ │
│ │ │ │ ├─15
│ │ │ │ ├─2
│ │ │ │ ├─3
│ │ │ │ ├─4
│ │ │ │ ├─5
│ │ │ │ ├─6
│ │ │ │ ├─7
│ │ │ │ ├─8
│ │ │ │ └─9
│ │ │ ├─dex_archive_input_jar_hashes
│ │ │ │ └─debug
│ │ │ │ out
│ │ │ │
│ │ │ ├─dex_number_of_buckets_file
│ │ │ │ └─debug
│ │ │ │ out
│ │ │ │
│ │ │ ├─duplicate_classes_check
│ │ │ │ └─debug
│ │ │ ├─external_file_lib_dex_archives
│ │ │ │ └─debug
│ │ │ ├─external_libs_dex_archive
│ │ │ │ └─debug
│ │ │ │ └─out
│ │ │ ├─external_libs_dex_archive_with_artifact_transforms
│ │ │ │ └─debug
│ │ │ │ └─out
│ │ │ ├─incremental
│ │ │ │ ├─debug-mergeJavaRes
│ │ │ │ │ │ merge-state
│ │ │ │ │ │
│ │ │ │ │ └─zip-cache
│ │ │ │ │ 048HcTWWEq1lulbmUyQznT37EsA=
│ │ │ │ │ 1a_EIO9PiBosWsI065pOT3qf7Ds=
│ │ │ │ │ 1hmxbp0IIpB68Da4s0EztcNOuOs=
│ │ │ │ │ 1hruv_CVTc7rACzgrV_EbGRL8aQ=
│ │ │ │ │ 1KCmdii_GxXEpMWe5Pq8kyWqzqQ=
│ │ │ │ │ 4NE736MhQ0mtuWu+hfqUiTOu13c=
│ │ │ │ │ 8WkG10fpk_rZSp2aLy7KzLtm3EE=
│ │ │ │ │ 9QKNvWu_7YUZQ1fUM2miHNFtCTo=
│ │ │ │ │ AfMj8haKzuev025IN1KKjT1Eny4=
│ │ │ │ │ At5i9i+tmegiq7FS1ao+_fZl8po=
│ │ │ │ │ bFDA9U0WYHVLP0PcNrkWdkKfAa8=
│ │ │ │ │ Cs1Dq7KfqTKuzs6HZppCnIzUTVQ=
│ │ │ │ │ FGzaasxdJ2z7_VgPq4ccnamPIos=
│ │ │ │ │ GHo9yJJtlaUoeIi0nkX_AZF6irk=
│ │ │ │ │ iAc+h+gBLDWoxrpG_Z_imkBl0ik=
│ │ │ │ │ JxuFh8wfiBAhlhJYcl_D93HpKGc=
│ │ │ │ │ nD6OwsZWtEe__BX75guczfU7kVA=
│ │ │ │ │ Nxxtm6fSLnclQYIfAWaya6DesE8=
│ │ │ │ │ PpmdA2vpVPet09q69BUMqYmPTSg=
│ │ │ │ │ QA6qPov9_kseM0wYMzsoSBfFF_Y=
│ │ │ │ │ TZEcozvYarb4JDmXWSbtY3Xa4Hs=
│ │ │ │ │ VfQqCnVCBACk8ME8kewXddA18Ek=
│ │ │ │ │ WtmjFSON6pWnWiXaZ5xxdg1U5BM=
│ │ │ │ │ ww5alz54j37jxPyaSnMgBR_nLKw=
│ │ │ │ │ wZW2oupEq4nj4seQKhI3ytH5u7U=
│ │ │ │ │ XJxTyhc62GgI8H8jWC9SVYWr5ow=
│ │ │ │ │ zAXtx6HcKosMvikBJB+60jWYvK0=
│ │ │ │ │
│ │ │ │ ├─mergeDebugAssets
│ │ │ │ │ merger.xml
│ │ │ │ │
│ │ │ │ ├─mergeDebugJniLibFolders
│ │ │ │ │ merger.xml
│ │ │ │ │
│ │ │ │ ├─mergeDebugResources
│ │ │ │ │ │ compile-file-map.properties
│ │ │ │ │ │ merger.xml
│ │ │ │ │ │
│ │ │ │ │ ├─merged.dir
│ │ │ │ │ │ ├─values
│ │ │ │ │ │ │ values.xml
│ │ │ │ │ │ │
│ │ │ │ │ │ ├─values-af
│ │ │ │ │ │ │ values-af.xml
│ │ │ │ │ │ │
│ │ │ │ │ │ ├─values-am
│ │ │ │ │ │ │ values-am.xml
│ │ │ │ │ │ │
│ │ │ │ │ │ ├─values-ar
│ │ │ │ │ │ │ values-ar.xml
│ │ │ │ │ │ │
│ │ │ │ │ │ ├─values-as
│ │ │ │ │ │ │ values-as.xml
│ │ │ │ │ │ │
│ │ │ │ │ │ ├─values-az
│ │ │ │ │ │ │ values-az.xml
│ │ │ │ │ │ │
│ │ │ │ │ │ ├─values-b+sr+Latn
│ │ │ │ │ │ │ values-b+sr+Latn.xml
│ │ │ │ │ │ │
│ │ │ │ │ │ ├─values-be
│ │ │ │ │ │ │ values-be.xml
│ │ │ │ │ │ │
│ │ │ │ │ │ ├─values-bg
│ │ │ │ │ │ │ values-bg.xml
│ │ │ │ │ │ │
│ │ │ │ │ │ ├─values-bn
│ │ │ │ │ │ │ values-bn.xml
│ │ │ │ │ │ │
│ │ │ │ │ │ ├─values-bs
│ │ │ │ │ │ │ values-bs.xml
│ │ │ │ │ │ │
│ │ │ │ │ │ ├─values-ca
│ │ │ │ │ │ │ values-ca.xml
│ │ │ │ │ │ │
│ │ │ │ │ │ ├─values-cs
│ │ │ │ │ │ │ values-cs.xml
│ │ │ │ │ │ │
│ │ │ │ │ │ ├─values-da
│ │ │ │ │ │ │ values-da.xml
│ │ │ │ │ │ │
│ │ │ │ │ │ ├─values-de
│ │ │ │ │ │ │ values-de.xml
│ │ │ │ │ │ │
│ │ │ │ │ │ ├─values-el
│ │ │ │ │ │ │ values-el.xml
│ │ │ │ │ │ │
│ │ │ │ │ │ ├─values-en-rAU
│ │ │ │ │ │ │ values-en-rAU.xml
│ │ │ │ │ │ │
│ │ │ │ │ │ ├─values-en-rCA
│ │ │ │ │ │ │ values-en-rCA.xml
│ │ │ │ │ │ │
│ │ │ │ │ │ ├─values-en-rGB
│ │ │ │ │ │ │ values-en-rGB.xml
│ │ │ │ │ │ │
│ │ │ │ │ │ ├─values-en-rIN
│ │ │ │ │ │ │ values-en-rIN.xml
│ │ │ │ │ │ │
│ │ │ │ │ │ ├─values-en-rXC
│ │ │ │ │ │ │ values-en-rXC.xml
│ │ │ │ │ │ │
│ │ │ │ │ │ ├─values-es
│ │ │ │ │ │ │ values-es.xml
│ │ │ │ │ │ │
│ │ │ │ │ │ ├─values-es-rUS
│ │ │ │ │ │ │ values-es-rUS.xml
│ │ │ │ │ │ │
│ │ │ │ │ │ ├─values-et
│ │ │ │ │ │ │ values-et.xml
│ │ │ │ │ │ │
│ │ │ │ │ │ ├─values-eu
│ │ │ │ │ │ │ values-eu.xml
│ │ │ │ │ │ │
│ │ │ │ │ │ ├─values-fa
│ │ │ │ │ │ │ values-fa.xml
│ │ │ │ │ │ │
│ │ │ │ │ │ ├─values-fi
│ │ │ │ │ │ │ values-fi.xml
│ │ │ │ │ │ │
│ │ │ │ │ │ ├─values-fr
│ │ │ │ │ │ │ values-fr.xml
│ │ │ │ │ │ │
│ │ │ │ │ │ ├─values-fr-rCA
│ │ │ │ │ │ │ values-fr-rCA.xml
│ │ │ │ │ │ │
│ │ │ │ │ │ ├─values-gl
│ │ │ │ │ │ │ values-gl.xml
│ │ │ │ │ │ │
│ │ │ │ │ │ ├─values-gu
│ │ │ │ │ │ │ values-gu.xml
│ │ │ │ │ │ │
│ │ │ │ │ │ ├─values-h720dp-v13
│ │ │ │ │ │ │ values-h720dp-v13.xml
│ │ │ │ │ │ │
│ │ │ │ │ │ ├─values-hdpi-v4
│ │ │ │ │ │ │ values-hdpi-v4.xml
│ │ │ │ │ │ │
│ │ │ │ │ │ ├─values-hi
│ │ │ │ │ │ │ values-hi.xml
│ │ │ │ │ │ │
│ │ │ │ │ │ ├─values-hr
│ │ │ │ │ │ │ values-hr.xml
│ │ │ │ │ │ │
│ │ │ │ │ │ ├─values-hu
│ │ │ │ │ │ │ values-hu.xml
│ │ │ │ │ │ │
│ │ │ │ │ │ ├─values-hy
│ │ │ │ │ │ │ values-hy.xml
│ │ │ │ │ │ │
│ │ │ │ │ │ ├─values-in
│ │ │ │ │ │ │ values-in.xml
│ │ │ │ │ │ │
│ │ │ │ │ │ ├─values-is
│ │ │ │ │ │ │ values-is.xml
│ │ │ │ │ │ │
│ │ │ │ │ │ ├─values-it
│ │ │ │ │ │ │ values-it.xml
│ │ │ │ │ │ │
│ │ │ │ │ │ ├─values-iw
│ │ │ │ │ │ │ values-iw.xml
│ │ │ │ │ │ │
│ │ │ │ │ │ ├─values-ja
│ │ │ │ │ │ │ values-ja.xml
│ │ │ │ │ │ │
│ │ │ │ │ │ ├─values-ka
│ │ │ │ │ │ │ values-ka.xml
│ │ │ │ │ │ │
│ │ │ │ │ │ ├─values-kk
│ │ │ │ │ │ │ values-kk.xml
│ │ │ │ │ │ │
│ │ │ │ │ │ ├─values-km
│ │ │ │ │ │ │ values-km.xml
│ │ │ │ │ │ │
│ │ │ │ │ │ ├─values-kn
│ │ │ │ │ │ │ values-kn.xml
│ │ │ │ │ │ │
│ │ │ │ │ │ ├─values-ko
│ │ │ │ │ │ │ values-ko.xml
│ │ │ │ │ │ │
│ │ │ │ │ │ ├─values-ky
│ │ │ │ │ │ │ values-ky.xml
│ │ │ │ │ │ │
│ │ │ │ │ │ ├─values-land
│ │ │ │ │ │ │ values-land.xml
│ │ │ │ │ │ │
│ │ │ │ │ │ ├─values-large-v4
│ │ │ │ │ │ │ values-large-v4.xml
│ │ │ │ │ │ │
│ │ │ │ │ │ ├─values-ldltr-v21
│ │ │ │ │ │ │ values-ldltr-v21.xml
│ │ │ │ │ │ │
│ │ │ │ │ │ ├─values-lo
│ │ │ │ │ │ │ values-lo.xml
│ │ │ │ │ │ │
│ │ │ │ │ │ ├─values-lt
│ │ │ │ │ │ │ values-lt.xml
│ │ │ │ │ │ │
│ │ │ │ │ │ ├─values-lv
│ │ │ │ │ │ │ values-lv.xml
│ │ │ │ │ │ │
│ │ │ │ │ │ ├─values-mk
│ │ │ │ │ │ │ values-mk.xml
│ │ │ │ │ │ │
│ │ │ │ │ │ ├─values-ml
│ │ │ │ │ │ │ values-ml.xml
│ │ │ │ │ │ │
│ │ │ │ │ │ ├─values-mn
│ │ │ │ │ │ │ values-mn.xml
│ │ │ │ │ │ │
│ │ │ │ │ │ ├─values-mr
│ │ │ │ │ │ │ values-mr.xml
│ │ │ │ │ │ │
│ │ │ │ │ │ ├─values-ms
│ │ │ │ │ │ │ values-ms.xml
│ │ │ │ │ │ │
│ │ │ │ │ │ ├─values-my
│ │ │ │ │ │ │ values-my.xml
│ │ │ │ │ │ │
│ │ │ │ │ │ ├─values-nb
│ │ │ │ │ │ │ values-nb.xml
│ │ │ │ │ │ │
│ │ │ │ │ │ ├─values-ne
│ │ │ │ │ │ │ values-ne.xml
│ │ │ │ │ │ │
│ │ │ │ │ │ ├─values-night-v8
│ │ │ │ │ │ │ values-night-v8.xml
│ │ │ │ │ │ │
│ │ │ │ │ │ ├─values-nl
│ │ │ │ │ │ │ values-nl.xml
│ │ │ │ │ │ │
│ │ │ │ │ │ ├─values-or
│ │ │ │ │ │ │ values-or.xml
│ │ │ │ │ │ │
│ │ │ │ │ │ ├─values-pa
│ │ │ │ │ │ │ values-pa.xml
│ │ │ │ │ │ │
│ │ │ │ │ │ ├─values-pl
│ │ │ │ │ │ │ values-pl.xml
│ │ │ │ │ │ │
│ │ │ │ │ │ ├─values-port
│ │ │ │ │ │ │ values-port.xml
│ │ │ │ │ │ │
│ │ │ │ │ │ ├─values-pt
│ │ │ │ │ │ │ values-pt.xml
│ │ │ │ │ │ │
│ │ │ │ │ │ ├─values-pt-rBR
│ │ │ │ │ │ │ values-pt-rBR.xml
│ │ │ │ │ │ │
│ │ │ │ │ │ ├─values-pt-rPT
│ │ │ │ │ │ │ values-pt-rPT.xml
│ │ │ │ │ │ │
│ │ │ │ │ │ ├─values-ro
│ │ │ │ │ │ │ values-ro.xml
│ │ │ │ │ │ │
│ │ │ │ │ │ ├─values-ru
│ │ │ │ │ │ │ values-ru.xml
│ │ │ │ │ │ │
│ │ │ │ │ │ ├─values-si
│ │ │ │ │ │ │ values-si.xml
│ │ │ │ │ │ │
│ │ │ │ │ │ ├─values-sk
│ │ │ │ │ │ │ values-sk.xml
│ │ │ │ │ │ │
│ │ │ │ │ │ ├─values-sl
│ │ │ │ │ │ │ values-sl.xml
│ │ │ │ │ │ │
│ │ │ │ │ │ ├─values-sq
│ │ │ │ │ │ │ values-sq.xml
│ │ │ │ │ │ │
│ │ │ │ │ │ ├─values-sr
│ │ │ │ │ │ │ values-sr.xml
│ │ │ │ │ │ │
│ │ │ │ │ │ ├─values-sv
│ │ │ │ │ │ │ values-sv.xml
│ │ │ │ │ │ │
│ │ │ │ │ │ ├─values-sw
│ │ │ │ │ │ │ values-sw.xml
│ │ │ │ │ │ │
│ │ │ │ │ │ ├─values-sw600dp-v13
│ │ │ │ │ │ │ values-sw600dp-v13.xml
│ │ │ │ │ │ │
│ │ │ │ │ │ ├─values-ta
│ │ │ │ │ │ │ values-ta.xml
│ │ │ │ │ │ │
│ │ │ │ │ │ ├─values-te
│ │ │ │ │ │ │ values-te.xml
│ │ │ │ │ │ │
│ │ │ │ │ │ ├─values-th
│ │ │ │ │ │ │ values-th.xml
│ │ │ │ │ │ │
│ │ │ │ │ │ ├─values-tl
│ │ │ │ │ │ │ values-tl.xml
│ │ │ │ │ │ │
│ │ │ │ │ │ ├─values-tr
│ │ │ │ │ │ │ values-tr.xml
│ │ │ │ │ │ │
│ │ │ │ │ │ ├─values-uk
│ │ │ │ │ │ │ values-uk.xml
│ │ │ │ │ │ │
│ │ │ │ │ │ ├─values-ur
│ │ │ │ │ │ │ values-ur.xml
│ │ │ │ │ │ │
│ │ │ │ │ │ ├─values-uz
│ │ │ │ │ │ │ values-uz.xml
│ │ │ │ │ │ │
│ │ │ │ │ │ ├─values-v16
│ │ │ │ │ │ │ values-v16.xml
│ │ │ │ │ │ │
│ │ │ │ │ │ ├─values-v17
│ │ │ │ │ │ │ values-v17.xml
│ │ │ │ │ │ │
│ │ │ │ │ │ ├─values-v18
│ │ │ │ │ │ │ values-v18.xml
│ │ │ │ │ │ │
│ │ │ │ │ │ ├─values-v21
│ │ │ │ │ │ │ values-v21.xml
│ │ │ │ │ │ │
│ │ │ │ │ │ ├─values-v22
│ │ │ │ │ │ │ values-v22.xml
│ │ │ │ │ │ │
│ │ │ │ │ │ ├─values-v23
│ │ │ │ │ │ │ values-v23.xml
│ │ │ │ │ │ │
│ │ │ │ │ │ ├─values-v24
│ │ │ │ │ │ │ values-v24.xml
│ │ │ │ │ │ │
│ │ │ │ │ │ ├─values-v25
│ │ │ │ │ │ │ values-v25.xml
│ │ │ │ │ │ │
│ │ │ │ │ │ ├─values-v26
│ │ │ │ │ │ │ values-v26.xml
│ │ │ │ │ │ │
│ │ │ │ │ │ ├─values-v28
│ │ │ │ │ │ │ values-v28.xml
│ │ │ │ │ │ │
│ │ │ │ │ │ ├─values-vi
│ │ │ │ │ │ │ values-vi.xml
│ │ │ │ │ │ │
│ │ │ │ │ │ ├─values-watch-v20
│ │ │ │ │ │ │ values-watch-v20.xml
│ │ │ │ │ │ │
│ │ │ │ │ │ ├─values-watch-v21
│ │ │ │ │ │ │ values-watch-v21.xml
│ │ │ │ │ │ │
│ │ │ │ │ │ ├─values-xlarge-v4
│ │ │ │ │ │ │ values-xlarge-v4.xml
│ │ │ │ │ │ │
│ │ │ │ │ │ ├─values-zh-rCN
│ │ │ │ │ │ │ values-zh-rCN.xml
│ │ │ │ │ │ │
│ │ │ │ │ │ ├─values-zh-rHK
│ │ │ │ │ │ │ values-zh-rHK.xml
│ │ │ │ │ │ │
│ │ │ │ │ │ ├─values-zh-rTW
│ │ │ │ │ │ │ values-zh-rTW.xml
│ │ │ │ │ │ │
│ │ │ │ │ │ └─values-zu
│ │ │ │ │ │ values-zu.xml
│ │ │ │ │ │
│ │ │ │ │ └─stripped.dir
│ │ │ │ ├─mergeDebugShaders
│ │ │ │ │ merger.xml
│ │ │ │ │
│ │ │ │ ├─packageDebug
│ │ │ │ │ └─tmp
│ │ │ │ │ └─debug
│ │ │ │ │ │ dex-renamer-state.txt
│ │ │ │ │ │
│ │ │ │ │ └─zip-cache
│ │ │ │ │ androidResources
│ │ │ │ │ javaResources0
│ │ │ │ │
│ │ │ │ └─processDebugResources
│ │ │ ├─javac
│ │ │ │ └─debug
│ │ │ │ └─classes
│ │ │ │ └─com
│ │ │ │ └─example
│ │ │ │ └─simpleapp
│ │ │ │ BuildConfig.class
│ │ │ │ MainActivity.class
│ │ │ │
│ │ │ ├─manifest_merge_blame_file
│ │ │ │ └─debug
│ │ │ │ manifest-merger-blame-debug-report.txt
│ │ │ │
│ │ │ ├─merged_assets
│ │ │ │ └─debug
│ │ │ │ └─out
│ │ │ ├─merged_java_res
│ │ │ │ └─debug
│ │ │ │ base.jar
│ │ │ │
│ │ │ ├─merged_jni_libs
│ │ │ │ └─debug
│ │ │ │ └─out
│ │ │ ├─merged_manifest
│ │ │ │ └─debug
│ │ │ │ AndroidManifest.xml
│ │ │ │
│ │ │ ├─merged_manifests
│ │ │ │ └─debug
│ │ │ │ AndroidManifest.xml
│ │ │ │ output-metadata.json
│ │ │ │
│ │ │ ├─merged_res
│ │ │ │ └─debug
│ │ │ │ values-af_values-af.arsc.flat
│ │ │ │ values-am_values-am.arsc.flat
│ │ │ │ values-ar_values-ar.arsc.flat
│ │ │ │ values-as_values-as.arsc.flat
│ │ │ │ values-az_values-az.arsc.flat
│ │ │ │ values-b+sr+Latn_values-b+sr+Latn.arsc.flat
│ │ │ │ values-be_values-be.arsc.flat
│ │ │ │ values-bg_values-bg.arsc.flat
│ │ │ │ values-bn_values-bn.arsc.flat
│ │ │ │ values-bs_values-bs.arsc.flat
│ │ │ │ values-ca_values-ca.arsc.flat
│ │ │ │ values-cs_values-cs.arsc.flat
│ │ │ │ values-da_values-da.arsc.flat
│ │ │ │ values-de_values-de.arsc.flat
│ │ │ │ values-el_values-el.arsc.flat
│ │ │ │ values-en-rAU_values-en-rAU.arsc.flat
│ │ │ │ values-en-rCA_values-en-rCA.arsc.flat
│ │ │ │ values-en-rGB_values-en-rGB.arsc.flat
│ │ │ │ values-en-rIN_values-en-rIN.arsc.flat
│ │ │ │ values-en-rXC_values-en-rXC.arsc.flat
│ │ │ │ values-es-rUS_values-es-rUS.arsc.flat
│ │ │ │ values-es_values-es.arsc.flat
│ │ │ │ values-et_values-et.arsc.flat
│ │ │ │ values-eu_values-eu.arsc.flat
│ │ │ │ values-fa_values-fa.arsc.flat
│ │ │ │ values-fi_values-fi.arsc.flat
│ │ │ │ values-fr-rCA_values-fr-rCA.arsc.flat
│ │ │ │ values-fr_values-fr.arsc.flat
│ │ │ │ values-gl_values-gl.arsc.flat
│ │ │ │ values-gu_values-gu.arsc.flat
│ │ │ │ values-h720dp-v13_values-h720dp-v13.arsc.flat
│ │ │ │ values-hdpi-v4_values-hdpi-v4.arsc.flat
│ │ │ │ values-hi_values-hi.arsc.flat
│ │ │ │ values-hr_values-hr.arsc.flat
│ │ │ │ values-hu_values-hu.arsc.flat
│ │ │ │ values-hy_values-hy.arsc.flat
│ │ │ │ values-in_values-in.arsc.flat
│ │ │ │ values-is_values-is.arsc.flat
│ │ │ │ values-it_values-it.arsc.flat
│ │ │ │ values-iw_values-iw.arsc.flat
│ │ │ │ values-ja_values-ja.arsc.flat
│ │ │ │ values-ka_values-ka.arsc.flat
│ │ │ │ values-kk_values-kk.arsc.flat
│ │ │ │ values-km_values-km.arsc.flat
│ │ │ │ values-kn_values-kn.arsc.flat
│ │ │ │ values-ko_values-ko.arsc.flat
│ │ │ │ values-ky_values-ky.arsc.flat
│ │ │ │ values-land_values-land.arsc.flat
│ │ │ │ values-large-v4_values-large-v4.arsc.flat
│ │ │ │ values-ldltr-v21_values-ldltr-v21.arsc.flat
│ │ │ │ values-lo_values-lo.arsc.flat
│ │ │ │ values-lt_values-lt.arsc.flat
│ │ │ │ values-lv_values-lv.arsc.flat
│ │ │ │ values-mk_values-mk.arsc.flat
│ │ │ │ values-ml_values-ml.arsc.flat
│ │ │ │ values-mn_values-mn.arsc.flat
│ │ │ │ values-mr_values-mr.arsc.flat
│ │ │ │ values-ms_values-ms.arsc.flat
│ │ │ │ values-my_values-my.arsc.flat
│ │ │ │ values-nb_values-nb.arsc.flat
│ │ │ │ values-ne_values-ne.arsc.flat
│ │ │ │ values-night-v8_values-night-v8.arsc.flat
│ │ │ │ values-nl_values-nl.arsc.flat
│ │ │ │ values-or_values-or.arsc.flat
│ │ │ │ values-pa_values-pa.arsc.flat
│ │ │ │ values-pl_values-pl.arsc.flat
│ │ │ │ values-port_values-port.arsc.flat
│ │ │ │ values-pt-rBR_values-pt-rBR.arsc.flat
│ │ │ │ values-pt-rPT_values-pt-rPT.arsc.flat
│ │ │ │ values-pt_values-pt.arsc.flat
│ │ │ │ values-ro_values-ro.arsc.flat
│ │ │ │ values-ru_values-ru.arsc.flat
│ │ │ │ values-si_values-si.arsc.flat
│ │ │ │ values-sk_values-sk.arsc.flat
│ │ │ │ values-sl_values-sl.arsc.flat
│ │ │ │ values-sq_values-sq.arsc.flat
│ │ │ │ values-sr_values-sr.arsc.flat
│ │ │ │ values-sv_values-sv.arsc.flat
│ │ │ │ values-sw600dp-v13_values-sw600dp-v13.arsc.flat
│ │ │ │ values-sw_values-sw.arsc.flat
│ │ │ │ values-ta_values-ta.arsc.flat
│ │ │ │ values-te_values-te.arsc.flat
│ │ │ │ values-th_values-th.arsc.flat
│ │ │ │ values-tl_values-tl.arsc.flat
│ │ │ │ values-tr_values-tr.arsc.flat
│ │ │ │ values-uk_values-uk.arsc.flat
│ │ │ │ values-ur_values-ur.arsc.flat
│ │ │ │ values-uz_values-uz.arsc.flat
│ │ │ │ values-v16_values-v16.arsc.flat
│ │ │ │ values-v17_values-v17.arsc.flat
│ │ │ │ values-v18_values-v18.arsc.flat
│ │ │ │ values-v21_values-v21.arsc.flat
│ │ │ │ values-v22_values-v22.arsc.flat
│ │ │ │ values-v23_values-v23.arsc.flat
│ │ │ │ values-v24_values-v24.arsc.flat
│ │ │ │ values-v25_values-v25.arsc.flat
│ │ │ │ values-v26_values-v26.arsc.flat
│ │ │ │ values-v28_values-v28.arsc.flat
│ │ │ │ values-vi_values-vi.arsc.flat
│ │ │ │ values-watch-v20_values-watch-v20.arsc.flat
│ │ │ │ values-watch-v21_values-watch-v21.arsc.flat
│ │ │ │ values-xlarge-v4_values-xlarge-v4.arsc.flat
│ │ │ │ values-zh-rCN_values-zh-rCN.arsc.flat
│ │ │ │ values-zh-rHK_values-zh-rHK.arsc.flat
│ │ │ │ values-zh-rTW_values-zh-rTW.arsc.flat
│ │ │ │ values-zu_values-zu.arsc.flat
│ │ │ │ values_values.arsc.flat
│ │ │ │
│ │ │ ├─merged_res_blame_folder
│ │ │ │ └─debug
│ │ │ │ └─out
│ │ │ │ └─multi-v2
│ │ │ │ debug.json
│ │ │ │ values-af.json
│ │ │ │ values-am.json
│ │ │ │ values-ar.json
│ │ │ │ values-as.json
│ │ │ │ values-az.json
│ │ │ │ values-b+sr+Latn.json
│ │ │ │ values-be.json
│ │ │ │ values-bg.json
│ │ │ │ values-bn.json
│ │ │ │ values-bs.json
│ │ │ │ values-ca.json
│ │ │ │ values-cs.json
│ │ │ │ values-da.json
│ │ │ │ values-de.json
│ │ │ │ values-el.json
│ │ │ │ values-en-rAU.json
│ │ │ │ values-en-rCA.json
│ │ │ │ values-en-rGB.json
│ │ │ │ values-en-rIN.json
│ │ │ │ values-en-rXC.json
│ │ │ │ values-es-rUS.json
│ │ │ │ values-es.json
│ │ │ │ values-et.json
│ │ │ │ values-eu.json
│ │ │ │ values-fa.json
│ │ │ │ values-fi.json
│ │ │ │ values-fr-rCA.json
│ │ │ │ values-fr.json
│ │ │ │ values-gl.json
│ │ │ │ values-gu.json
│ │ │ │ values-h720dp-v13.json
│ │ │ │ values-hdpi-v4.json
│ │ │ │ values-hi.json
│ │ │ │ values-hr.json
│ │ │ │ values-hu.json
│ │ │ │ values-hy.json
│ │ │ │ values-in.json
│ │ │ │ values-is.json
│ │ │ │ values-it.json
│ │ │ │ values-iw.json
│ │ │ │ values-ja.json
│ │ │ │ values-ka.json
│ │ │ │ values-kk.json
│ │ │ │ values-km.json
│ │ │ │ values-kn.json
│ │ │ │ values-ko.json
│ │ │ │ values-ky.json
│ │ │ │ values-land.json
│ │ │ │ values-large-v4.json
│ │ │ │ values-ldltr-v21.json
│ │ │ │ values-lo.json
│ │ │ │ values-lt.json
│ │ │ │ values-lv.json
│ │ │ │ values-mk.json
│ │ │ │ values-ml.json
│ │ │ │ values-mn.json
│ │ │ │ values-mr.json
│ │ │ │ values-ms.json
│ │ │ │ values-my.json
│ │ │ │ values-nb.json
│ │ │ │ values-ne.json
│ │ │ │ values-night-v8.json
│ │ │ │ values-nl.json
│ │ │ │ values-or.json
│ │ │ │ values-pa.json
│ │ │ │ values-pl.json
│ │ │ │ values-port.json
│ │ │ │ values-pt-rBR.json
│ │ │ │ values-pt-rPT.json
│ │ │ │ values-pt.json
│ │ │ │ values-ro.json
│ │ │ │ values-ru.json
│ │ │ │ values-si.json
│ │ │ │ values-sk.json
│ │ │ │ values-sl.json
│ │ │ │ values-sq.json
│ │ │ │ values-sr.json
│ │ │ │ values-sv.json
│ │ │ │ values-sw.json
│ │ │ │ values-sw600dp-v13.json
│ │ │ │ values-ta.json
│ │ │ │ values-te.json
│ │ │ │ values-th.json
│ │ │ │ values-tl.json
│ │ │ │ values-tr.json
│ │ │ │ values-uk.json
│ │ │ │ values-ur.json
│ │ │ │ values-uz.json
│ │ │ │ values-v16.json
│ │ │ │ values-v17.json
│ │ │ │ values-v18.json
│ │ │ │ values-v21.json
│ │ │ │ values-v22.json
│ │ │ │ values-v23.json
│ │ │ │ values-v24.json
│ │ │ │ values-v25.json
│ │ │ │ values-v26.json
│ │ │ │ values-v28.json
│ │ │ │ values-vi.json
│ │ │ │ values-watch-v20.json
│ │ │ │ values-watch-v21.json
│ │ │ │ values-xlarge-v4.json
│ │ │ │ values-zh-rCN.json
│ │ │ │ values-zh-rHK.json
│ │ │ │ values-zh-rTW.json
│ │ │ │ values-zu.json
│ │ │ │ values.json
│ │ │ │
│ │ │ ├─merged_shaders
│ │ │ │ └─debug
│ │ │ │ └─out
│ │ │ ├─mixed_scope_dex_archive
│ │ │ │ └─debug
│ │ │ │ └─out
│ │ │ ├─navigation_json
│ │ │ │ └─debug
│ │ │ │ navigation.json
│ │ │ │
│ │ │ ├─packaged_manifests
│ │ │ │ └─debug
│ │ │ │ AndroidManifest.xml
│ │ │ │ output-metadata.json
│ │ │ │
│ │ │ ├─processed_res
│ │ │ │ └─debug
│ │ │ │ └─out
│ │ │ │ output-metadata.json
│ │ │ │ resources-debug.ap_
│ │ │ │
│ │ │ ├─project_dex_archive
│ │ │ │ └─debug
│ │ │ │ └─out
│ │ │ │ │ c33e8c747d74d1a84f419785e60af63897d9343fd80c67c5b4444946ca3b6c29_0.jar
│ │ │ │ │ c33e8c747d74d1a84f419785e60af63897d9343fd80c67c5b4444946ca3b6c29_1.jar
│ │ │ │ │ c33e8c747d74d1a84f419785e60af63897d9343fd80c67c5b4444946ca3b6c29_2.jar
│ │ │ │ │ c33e8c747d74d1a84f419785e60af63897d9343fd80c67c5b4444946ca3b6c29_3.jar
│ │ │ │ │
│ │ │ │ └─com
│ │ │ │ └─example
│ │ │ │ └─simpleapp
│ │ │ │ BuildConfig.dex
│ │ │ │ MainActivity.dex
│ │ │ │
│ │ │ ├─res
│ │ │ │ └─merged
│ │ │ │ └─debug
│ │ │ ├─runtime_symbol_list
│ │ │ │ └─debug
│ │ │ │ R.txt
│ │ │ │
│ │ │ ├─signing_config_versions
│ │ │ │ └─debug
│ │ │ │ signing-config-versions.json
│ │ │ │
│ │ │ ├─sub_project_dex_archive
│ │ │ │ └─debug
│ │ │ │ └─out
│ │ │ ├─symbol_list_with_package_name
│ │ │ │ └─debug
│ │ │ │ package-aware-r.txt
│ │ │ │
│ │ │ └─validate_signing_config
│ │ │ └─debug
│ │ ├─outputs
│ │ │ ├─apk
│ │ │ │ └─debug
│ │ │ │ app-debug.apk
│ │ │ │ output-metadata.json
│ │ │ │
│ │ │ └─logs
│ │ │ manifest-merger-debug-report.txt
│ │ │
│ │ └─tmp
│ │ └─compileDebugJavaWithJavac
│ │ source-classes-mapping.txt
│ │
│ └─src
│ └─main
│ │ AndroidManifest.xml
│ │
│ ├─java
│ │ └─com
│ │ └─example
│ │ └─simpleapp
│ │ MainActivity.java
│ │
│ └─res
│ ├─layout
│ └─values
├─build
│ └─reports
│ └─problems
│ problems-report.html
│
├─gradle
│ └─wrapper
│ gradle-wrapper.jar
│ gradle-wrapper.properties
│
└─out
app.signed.apk
app.signed.apk.idsig
app.unsigned.apk
classes.dex