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

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

相关文章:

Android学习20 -- 手搓App2(Gradle)

1 前言 昨天写了一个完全手搓的:Android学习19 -- 手搓App-CSDN博客 后面谷歌说不要用aapt,d8这些来搞。其实不想弄Gradle的,不过想着既然开始了,就多看一些。之前写过一篇Gradle,不过是最简单的编译,不涉…...

LeetCode - Google 大模型10题 第2天 Position Embedding(位置编码) 3题

欢迎关注我的CSDN:https://spike.blog.csdn.net/ 本文地址:https://spike.blog.csdn.net/article/details/145454489 在 Transformer 架构中,位置编码(Position Embedding) 是辅助模型理解序列中元素顺序的关键机制。绝对位置编码(Absolute P…...

PostgreSQL 数据库备份与还原

为了安全与数据共享等,创建好的数据库有时候需要备份操作和还原操作。数据库的备份与还原主要是三个命令:pg_dump、pg_dumpall 和 pg_restore 。 其中pg_dump用于备份单个数据库,它支持多种备份格式(SQL、自定义等)&a…...

proxmox通过更多的方式创建虚拟机

概述 作为一名资深运维工程师,我们经常需要在 Proxmox 虚拟化平台上创建和管理虚拟机。本文将介绍三种不同的方式在 Proxmox 上创建 Ubuntu 虚拟机: 通过 Proxmox 命令创建虚拟机通过 Shell 脚本自动化创建虚拟机使用 Proxmox API 创建虚拟机 每种方式…...

WordPress使用(2)

上一篇文章讲述了WordPress的基本安装,主要是docker方式的处理。本文章主要介绍WordPress安装后的其他设置。 1. 安装后设置 安装后碰到的第一个需求就是安装一个合适的主题,但WordPress默认的上传文件大小是2M,远远无法满足要求&#xff0…...

git中文件的状态状态切换

文件的状态分类 Git 中文件的状态主要分为以下几种: Untracked(未跟踪) 定义:这些文件从未被 Git 跟踪过,通常是因为它们是新创建的文件,或者被 .gitignore 排除在外。 示例:新创建的文件 new…...

解决php8.3无法加载curl扩展

把它的值更改为扩展存在的目录的绝对路径(扩展存在的目录为有php_xxx.dll存在的目录) extension_dir "e:\serv\php83\ext" 然后从php根目录复制 libssh2.dll 和 libcrypto-*.dll 和 libssl-*.dll 到Apache根目录下的bin目录 重启apache服务即可...

三路排序算法

三路排序算法 引言 排序算法是计算机科学中基础且重要的算法之一。在数据分析和处理中,排序算法的效率直接影响着程序的执行速度和系统的稳定性。本文将深入探讨三路排序算法,包括其原理、实现和应用场景。 一、三路排序算法的原理 三路排序算法是一…...

入行FPGA设计工程师需要提前学习哪些内容?

FPGA作为一种灵活可编程的硬件平台,广泛应用于嵌入式系统、通信、数据处理等领域。很多人选择转行FPGA设计工程师,但对于新手来说,可能在学习过程中会遇到一些迷茫和困惑。为了帮助大家更好地准备,本文将详细介绍入行FPGA设计工程…...

DBASE DBF数据库文件解析

基于Java实现DBase DBF文件的解析和显示 JDK19编译运行,实现了数据库字段和数据解析显示。 首先解析数据库文件头代码 byte bytes[] Files.readAllBytes(Paths.get(file));BinaryBufferArray bis new BinaryBufferArray(bytes);DBF dbf new DBF();dbf.VersionN…...

html基本结构和常见元素

html5文档基本结构 <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><title>文档标题</title> </head> <body>文档正文部分 </body> </html> html文档可分为文档头和文档体…...

JAVAweb学习日记(十) Mybatis入门操作

一、介绍 二、快速入门程序 三、入门-数据库连接池 四、入门-lombok工具包...

从Transformer到世界模型:AGI核心架构演进

文章目录 引言&#xff1a;架构革命推动AGI进化一、Transformer&#xff1a;重新定义序列建模1.1 注意力机制的革命性突破1.2 从NLP到跨模态演进1.3 规模扩展的黄金定律 二、通向世界模型的关键跃迁2.1 从语言模型到认知架构2.2 世界模型的核心特征2.3 混合架构的突破 三、构建…...

Rk3588芯片介绍(含数据手册)

芯片介绍&#xff1a;RK3588是一款低功耗&#xff0c;高性能的处理器&#xff0c;适用于基于arm的PC和边缘计算设备&#xff0c;个人移动互联网设备和其他数字多媒体应用&#xff0c;集成了四核Cortex-A76和四核Cortex-A55以及单独的NEON协处理器 视频处理方面&#xff1a;提供…...

java开发面试自我介绍模板_java面试自我介绍3篇

java 面试自我介绍 3 篇 java 面试自我介绍篇一&#xff1a; 我叫赵&#xff0c;我的同学更都喜欢称呼我的英文名字&#xff0c;叫&#xff0c;六月的 意思&#xff0c;是君的谐音。我来自安徽的市&#xff0c;在 21 年我以市全市第一名 的成绩考上了大学&#xff0c…...

w193基于Spring Boot的秒杀系统设计与实现

&#x1f64a;作者简介&#xff1a;多年一线开发工作经验&#xff0c;原创团队&#xff0c;分享技术代码帮助学生学习&#xff0c;独立完成自己的网站项目。 代码可以查看文章末尾⬇️联系方式获取&#xff0c;记得注明来意哦~&#x1f339;赠送计算机毕业设计600个选题excel文…...

chrome浏览器chromedriver下载

chromedriver 下载地址 https://googlechromelabs.github.io/chrome-for-testing/ 上面的链接有和当前发布的chrome浏览器版本相近的chromedriver 实际使用感受 chrome浏览器会自动更新&#xff0c;可以去下载最新的chromedriver使用&#xff0c;自动化中使用新的chromedr…...

【HTML入门】Sublime Text 4与 Phpstorm

文章目录 前言一、环境基础1.Sublime Text 42.Phpstorm(1)安装(2)启动Phpstorm(3)“启动”码 二、HTML1.HTML简介(1)什么是HTML(2)HTML版本及历史(3)HTML基本结构 2.HTML简单语法(1)HTML标签语法(2)HTML常用标签(3)表格(4)特殊字符 总结 前言 在当今的软件开发领域&#xff0c…...

Python----Python高级(并发编程:进程Process,多进程,进程间通信,进程同步,进程池)

一、进程Process 拥有自己独立的堆和栈&#xff0c;既不共享堆&#xff0c;也不共享栈&#xff0c;进程由操作系统调度&#xff1b;进程切换需要的资源很最大&#xff0c;效率低。 对于操作系统来说&#xff0c;一个任务就是一个进程&#xff08;Process&#xff09;&#xff…...

汽车自动驾驶AI

汽车自动驾驶AI是当前汽车技术领域的前沿方向&#xff0c;以下是关于汽车自动驾驶AI的详细介绍&#xff1a; 技术原理 感知系统&#xff1a;自动驾驶汽车通过多种传感器&#xff08;如激光雷达、摄像头、雷达、超声波传感器等&#xff09;收集周围环境的信息。AI算法对这些传感…...

RestClient

什么是RestClient RestClient 是 Elasticsearch 官方提供的 Java 低级 REST 客户端&#xff0c;它允许HTTP与Elasticsearch 集群通信&#xff0c;而无需处理 JSON 序列化/反序列化等底层细节。它是 Elasticsearch Java API 客户端的基础。 RestClient 主要特点 轻量级&#xff…...

HTML 列表、表格、表单

1 列表标签 作用&#xff1a;布局内容排列整齐的区域 列表分类&#xff1a;无序列表、有序列表、定义列表。 例如&#xff1a; 1.1 无序列表 标签&#xff1a;ul 嵌套 li&#xff0c;ul是无序列表&#xff0c;li是列表条目。 注意事项&#xff1a; ul 标签里面只能包裹 li…...

MVC 数据库

MVC 数据库 引言 在软件开发领域,Model-View-Controller(MVC)是一种流行的软件架构模式,它将应用程序分为三个核心组件:模型(Model)、视图(View)和控制器(Controller)。这种模式有助于提高代码的可维护性和可扩展性。本文将深入探讨MVC架构与数据库之间的关系,以…...

srs linux

下载编译运行 git clone https:///ossrs/srs.git ./configure --h265on make 编译完成后即可启动SRS # 启动 ./objs/srs -c conf/srs.conf # 查看日志 tail -n 30 -f ./objs/srs.log 开放端口 默认RTMP接收推流端口是1935&#xff0c;SRS管理页面端口是8080&#xff0c;可…...

如何在网页里填写 PDF 表格?

有时候&#xff0c;你可能希望用户能在你的网站上填写 PDF 表单。然而&#xff0c;这件事并不简单&#xff0c;因为 PDF 并不是一种原生的网页格式。虽然浏览器可以显示 PDF 文件&#xff0c;但原生并不支持编辑或填写它们。更糟的是&#xff0c;如果你想收集表单数据&#xff…...

Fabric V2.5 通用溯源系统——增加图片上传与下载功能

fabric-trace项目在发布一年后,部署量已突破1000次,为支持更多场景,现新增支持图片信息上链,本文对图片上传、下载功能代码进行梳理,包含智能合约、后端、前端部分。 一、智能合约修改 为了增加图片信息上链溯源,需要对底层数据结构进行修改,在此对智能合约中的农产品数…...

Windows安装Miniconda

一、下载 https://www.anaconda.com/download/success 二、安装 三、配置镜像源 Anaconda/Miniconda pip 配置清华镜像源_anaconda配置清华源-CSDN博客 四、常用操作命令 Anaconda/Miniconda 基本操作命令_miniconda创建环境命令-CSDN博客...

解读《网络安全法》最新修订,把握网络安全新趋势

《网络安全法》自2017年施行以来&#xff0c;在维护网络空间安全方面发挥了重要作用。但随着网络环境的日益复杂&#xff0c;网络攻击、数据泄露等事件频发&#xff0c;现行法律已难以完全适应新的风险挑战。 2025年3月28日&#xff0c;国家网信办会同相关部门起草了《网络安全…...

MinIO Docker 部署:仅开放一个端口

MinIO Docker 部署:仅开放一个端口 在实际的服务器部署中,出于安全和管理的考虑,我们可能只能开放一个端口。MinIO 是一个高性能的对象存储服务,支持 Docker 部署,但默认情况下它需要两个端口:一个是 API 端口(用于存储和访问数据),另一个是控制台端口(用于管理界面…...

抽象类和接口(全)

一、抽象类 1.概念&#xff1a;如果⼀个类中没有包含⾜够的信息来描绘⼀个具体的对象&#xff0c;这样的类就是抽象类。 像是没有实际⼯作的⽅法,我们可以把它设计成⼀个抽象⽅法&#xff0c;包含抽象⽅法的类我们称为抽象类。 2.语法 在Java中&#xff0c;⼀个类如果被 abs…...