当前位置: 首页 > article >正文

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


http://www.kler.cn/a/532890.html

相关文章:

  • 传输层协议——TCP协议
  • 2023CCPC-Final A. Add One 2
  • unordered_map/set的哈希封装
  • MATLAB中textBoundary函数用法
  • kamailio-ACC_JSON模块详解【后端语言go】
  • Python 科学计算
  • leetcode 1482. 制作 m 束花所需的最少天数
  • git error: invalid path
  • Redis - String相关命令
  • UE编辑器工具
  • 【自学笔记】Git的重点知识点-持续更新
  • LeetCode:392.判断子序列
  • 接口游标分页
  • 本系统旨在为用户提供一个灵活且可扩展的信息安全管理解决方案,通过插件化的开发模式,使得信息安全的维护更加高效、便捷。
  • 云原生详解:构建未来应用的架构革命
  • 996引擎-怪物:Lua 刷怪+清怪+自动拾取
  • 2025_2_4 C语言中关于free函数及悬空指针,链表的一级指针和二级指指针
  • 【Block总结】CoT,上下文Transformer注意力|即插即用
  • IIC重难点-2
  • 【JavaScript】《JavaScript高级程序设计 (第4版) 》笔记-Chapter2-HTML 中的 JavaScript
  • mysql 学习7 DCL语句,用来管理数据库用户,控制数据库的访问权限
  • k8s二进制集群之各节点部署
  • 【华为OD-E卷 - 跳格子2 100分(python、java、c++、js、c)】
  • Git 的安装与基本配置
  • 使用开源项目:pdf2docx,让PDF转换为Word
  • Activity相关学习(一)