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 配置文件

根目录下面有一个build.gradle,app下面也要增加一个build.gradle。

整体来说文件增加非常多。可以参看最后的附录。

代码延续了之前的代码,src和AndroidManifest.xml都是上一篇文章中的。

增加的文件主要就是Gradle相关的。

在根文件夹下面增加两个build.gradle和gradle.properties:

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版本导致的问题。

gradle.properties

android.useAndroidX=true
android.enableJetifier=true

在App的文件夹中,也要增加一个build.gradle

plugins {id 'com.android.application'
}android {compileSdk 28// Target Android 9defaultConfig {applicationId "com.example.simpleapp" // Replace with your package nameminSdk 21 // Minimum SDK can be lower than 28targetSdk 28// Target Android 9versionCode 1versionName "1.0"}buildTypes {release {minifyEnabled falseproguardFiles 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,苦不堪言。。。最后换到jdk11,终于才可以了。至于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
│
└─outapp.signed.apkapp.signed.apk.idsigapp.unsigned.apkclasses.dex

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/69252.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[ Spring] Integrate Spring Boot Dubbo with Nacos 2025

文章目录 Dubbo Project StructureDeclare Plugins and RepositoriesIntroduce DependenciesDubbo Consumer PropertiesDubbo Provider ApplicationDubbo Provider ServiceDubbo Consumer PropertiesDubbo Consumer ApplicationDubbo Consumer ControllerCommand References Du…

团建 蓝桥杯省a 15

问题描述 小蓝正在和朋友们团建,有一个游戏项目需要两人合作,两个人分别拿到一棵大小为 nn 和 mm 的树,树上的每个结点上有一个正整数权值。 两个人需要从各自树的根结点 1 出发走向某个叶结点,从根到这个叶结点的路径上经过的所…

Ubuntu下Tkinter绑定数字小键盘上的回车键(PySide6类似)

设计了一个tkinter程序&#xff0c;在Win下绑定回车键&#xff0c;直接绑定"<Return>"就可以使用主键盘和小键盘的回车键直接“提交”&#xff0c;到了ubuntu下就不行了。经过搜索&#xff0c;发现ubuntu下主键盘和数字小键盘的回车键&#xff0c;名称不一样。…

单硬盘槽笔记本更换硬盘

背景 本人的笔记本电脑只有一个硬盘槽&#xff0c;而且没有M.2的硬盘盒&#xff0c;只有一个移动硬盘 旧硬盘&#xff1a;512G 新硬盘&#xff1a;1T 移动硬盘&#xff1a;512G 参考链接&#xff1a;https://www.bilibili.com/video/BV1iP41187SW/?spm_id_from333.1007.t…

matplotlib绘制三维曲面图时遇到的问题及解决方法

在科学计算和数据可视化中&#xff0c;三维曲面图是非常有用的工具&#xff0c;可以直观地展示数据的三维分布和关系。Matplotlib是Python中广泛使用的数据可视化库之一&#xff0c;提供了强大的三维绘图功能。然而&#xff0c;在实际使用过程中&#xff0c;用户可能会遇到各种…

vscode 如何通过Continue引入AI 助手deepseek

第一步&#xff1a; 在deepseek 官网上注册账号&#xff0c;得到APIKeys(deepseek官网地址) 创建属于自己的APIKey,然后复制这个key,(注意保存自己的key)! 第二步&#xff1a; 打开vscode,在插件市场安装Continue插件, 点击设置&#xff0c;添加deepseek模型&#xff0c;默认…

计算机网络——三种交换技术

目录 电路交换——用于电话网络 电路交换的优点&#xff1a; 电路交换的缺点&#xff1a; 报文交换——用于电报网络 报文交换的优点&#xff1a; 报文交换的缺点&#xff1a; 分组交换——用于现代计算机网络 分组交换的优点&#xff1a; 分组交换的缺点 电路交换——…

【Go语言快速上手】第一部分:Go 语言基础

文章目录 引言Go 语言的历史Go 语言的特点与优势学习 Go 语言的意义 1. Go 语言基础1.1 环境搭建下载和安装 Go 语言 SDK配置环境变量 (GOROOT, GOPATH)选择合适的 IDE 或编辑器 1.2 Go 语言基本语法变量声明与赋值变量作用域和生命周期 1.3 数据类型基本类型复合类型控制流if …

PostgreSQL函数自动Commit/Rollback所带来的问题

一、综述 今天在PostgreSQL遇到一个奇怪的现象&#xff0c;简而言之&#xff0c;是想用函数&#xff08;存储过程&#xff09;实现插入记录&#xff0c;整个过程没报错但事后却没找到记录&#xff01;忙活半天&#xff0c;才发现原因是PostgreSQL函数&#xff08;存储过程&…

linux 进程补充

环境变量 基本概念 环境变量(environment variables)一般是指在操作系统中用来指定操作系统运行环境的一些参数 如&#xff1a;我们在编写C/C代码的时候&#xff0c;在链接的时候&#xff0c;从来不知道我们的所链接的动态静态库在哪 里&#xff0c;但是照样可以链接成功&#…

Spring Boot常用注解深度解析:从入门到精通

今天&#xff0c;这篇文章带你将深入理解Spring Boot中30常用注解&#xff0c;通过代码示例和关系图&#xff0c;帮助你彻底掌握Spring核心注解的使用场景和内在联系。 一、启动类与核心注解 1.1 SpringBootApplication 组合注解&#xff1a; SpringBootApplication Confi…

前部分知识复习05

一、多级渐远贴图MipMap 选择贴图&#xff0c;可以勾选贴图的多级渐远效果 [IntRange]_MipMap("MipMap",Range(0,12))0 //多级渐远贴图的LOD调节滑杆 _MipMapTexture("MipMapTexture",2D)"white"{} //定义多级渐远贴图 多级渐远贴图的采样…

解锁反序列化漏洞:从原理到防护的安全指南

目录 前言 一、什么是反序列化 二、反序列化漏洞原理 三、反序列化漏洞的危害 &#xff08;一&#xff09;任意代码执行 &#xff08;二&#xff09;权限提升 &#xff08;三&#xff09;数据泄露与篡改 四、常见的反序列化漏洞场景 &#xff08;一&#xff09;PHP 反…

理解 C 与 C++ 中的 const 常量与数组大小的关系

博客主页&#xff1a; [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: C语言 文章目录 &#x1f4af;前言&#x1f4af;数组大小的常量要求&#x1f4af;C 语言中的数组大小要求&#x1f4af;C 中的数组大小要求&#x1f4af;为什么 C 中 const 变量可以作为数组大小&#x1f4af;进一步的…

MAC OS安装Homebrew

文章目录 1.下载Homebrew2.完成安装3.验证安装4.更新 Homebrew作为一个包管理器&#xff0c;提供了一种简便的方式来安装、更新和卸载各种命令行工具和应用程序。相比于手动下载和编译源代码&#xff0c;或者从不同的网站下载安装包&#xff0c;使用Homebrew可以显著减少这些操…

深入解析:如何利用 Python 爬虫获取商品 SKU 详细信息

在电商领域&#xff0c;SKU&#xff08;Stock Keeping Unit&#xff0c;库存单位&#xff09;详细信息是电商运营的核心数据之一。它不仅包含了商品的规格、价格、库存等关键信息&#xff0c;还直接影响到库存管理、价格策略和市场分析等多个方面。本文将详细介绍如何利用 Pyth…

OKHttp拦截器解析

OKHttp涉及到拦截器大概的执行步骤为&#xff1a; 1.通过newCall生成RealCall对象 具体代码如下&#xff1a; Override public Call newCall(Request request) {return new RealCall(this, request, false /* for web socket */);}2.调用Call的execute方法 当然这也可以是执…

深度学习系列--04.梯度下降以及其他优化器

目录 一.梯度概念 1.一元函数 2.二元函数 3.几何意义上的区别 二.梯度下降 1.原理 2.步骤 3.示例代码&#xff08;Python&#xff09; 4.不同类型的梯度下降 5.优缺点 三.动量优化器&#xff08;Momentum&#xff09; 适用场景 1.复杂地形的优化问题 2.数据具有噪声的问…

编程AI深度实战:给vim装上AI

系列文章&#xff1a; 编程AI深度实战&#xff1a;私有模型deep seek r1&#xff0c;必会ollama-CSDN博客 编程AI深度实战&#xff1a;自己的AI&#xff0c;必会LangChain-CSDN博客 编程AI深度实战&#xff1a;给vim装上AI-CSDN博客 编程AI深度实战&#xff1a;火的编程AI&…

深入解析 JPA 的 EntityManager#refresh 方法

在 Java 持久化领域&#xff0c;JPA&#xff08;Java Persistence API&#xff09;是一个非常重要的技术&#xff0c;它为开发者提供了一种便捷的方式来操作数据库。今天&#xff0c;我们来深入探讨一下 JPA 中 EntityManager#refresh 方法的使用和原理。 一、refresh 方法的作…