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,远远无法满足要求࿰…...
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核心架构演进
文章目录 引言:架构革命推动AGI进化一、Transformer:重新定义序列建模1.1 注意力机制的革命性突破1.2 从NLP到跨模态演进1.3 规模扩展的黄金定律 二、通向世界模型的关键跃迁2.1 从语言模型到认知架构2.2 世界模型的核心特征2.3 混合架构的突破 三、构建…...
Rk3588芯片介绍(含数据手册)
芯片介绍:RK3588是一款低功耗,高性能的处理器,适用于基于arm的PC和边缘计算设备,个人移动互联网设备和其他数字多媒体应用,集成了四核Cortex-A76和四核Cortex-A55以及单独的NEON协处理器 视频处理方面:提供…...
java开发面试自我介绍模板_java面试自我介绍3篇
java 面试自我介绍 3 篇 java 面试自我介绍篇一: 我叫赵,我的同学更都喜欢称呼我的英文名字,叫,六月的 意思,是君的谐音。我来自安徽的市,在 21 年我以市全市第一名 的成绩考上了大学,…...
w193基于Spring Boot的秒杀系统设计与实现
🙊作者简介:多年一线开发工作经验,原创团队,分享技术代码帮助学生学习,独立完成自己的网站项目。 代码可以查看文章末尾⬇️联系方式获取,记得注明来意哦~🌹赠送计算机毕业设计600个选题excel文…...
chrome浏览器chromedriver下载
chromedriver 下载地址 https://googlechromelabs.github.io/chrome-for-testing/ 上面的链接有和当前发布的chrome浏览器版本相近的chromedriver 实际使用感受 chrome浏览器会自动更新,可以去下载最新的chromedriver使用,自动化中使用新的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)特殊字符 总结 前言 在当今的软件开发领域,…...
Python----Python高级(并发编程:进程Process,多进程,进程间通信,进程同步,进程池)
一、进程Process 拥有自己独立的堆和栈,既不共享堆,也不共享栈,进程由操作系统调度;进程切换需要的资源很最大,效率低。 对于操作系统来说,一个任务就是一个进程(Process)ÿ…...
汽车自动驾驶AI
汽车自动驾驶AI是当前汽车技术领域的前沿方向,以下是关于汽车自动驾驶AI的详细介绍: 技术原理 感知系统:自动驾驶汽车通过多种传感器(如激光雷达、摄像头、雷达、超声波传感器等)收集周围环境的信息。AI算法对这些传感…...
QMC5883L的驱动
简介 本篇文章的代码已经上传到了github上面,开源代码 作为一个电子罗盘模块,我们可以通过I2C从中获取偏航角yaw,相对于六轴陀螺仪的yaw,qmc5883l几乎不会零飘并且成本较低。 参考资料 QMC5883L磁场传感器驱动 QMC5883L磁力计…...
HTML 列表、表格、表单
1 列表标签 作用:布局内容排列整齐的区域 列表分类:无序列表、有序列表、定义列表。 例如: 1.1 无序列表 标签:ul 嵌套 li,ul是无序列表,li是列表条目。 注意事项: ul 标签里面只能包裹 li…...
vue3 字体颜色设置的多种方式
在Vue 3中设置字体颜色可以通过多种方式实现,这取决于你是想在组件内部直接设置,还是在CSS/SCSS/LESS等样式文件中定义。以下是几种常见的方法: 1. 内联样式 你可以直接在模板中使用style绑定来设置字体颜色。 <template><div :s…...
根据万维钢·精英日课6的内容,使用AI(2025)可以参考以下方法:
根据万维钢精英日课6的内容,使用AI(2025)可以参考以下方法: 四个洞见 模型已经比人聪明:以ChatGPT o3为代表的AI非常强大,能运用高级理论解释道理、引用最新学术论文,生成对顶尖科学家都有用的…...
如何理解 IP 数据报中的 TTL?
目录 前言理解 前言 面试灵魂一问:说说对 IP 数据报中 TTL 的理解?我们都知道,IP 数据报由首部和数据两部分组成,首部又分为两部分:固定部分和可变部分,共占 20 字节,而即将讨论的 TTL 就位于首…...
企业如何增强终端安全?
在数字化转型加速的今天,企业的业务运行越来越依赖于终端设备。从员工的笔记本电脑、智能手机,到工厂里的物联网设备、智能传感器,这些终端构成了企业与外部世界连接的 “神经末梢”。然而,随着远程办公的常态化和设备接入的爆炸式…...
Go 语言并发编程基础:无缓冲与有缓冲通道
在上一章节中,我们了解了 Channel 的基本用法。本章将重点分析 Go 中通道的两种类型 —— 无缓冲通道与有缓冲通道,它们在并发编程中各具特点和应用场景。 一、通道的基本分类 类型定义形式特点无缓冲通道make(chan T)发送和接收都必须准备好࿰…...
【C++特殊工具与技术】优化内存分配(一):C++中的内存分配
目录 一、C 内存的基本概念 1.1 内存的物理与逻辑结构 1.2 C 程序的内存区域划分 二、栈内存分配 2.1 栈内存的特点 2.2 栈内存分配示例 三、堆内存分配 3.1 new和delete操作符 4.2 内存泄漏与悬空指针问题 4.3 new和delete的重载 四、智能指针…...
【Linux】Linux 系统默认的目录及作用说明
博主介绍:✌全网粉丝23W,CSDN博客专家、Java领域优质创作者,掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域✌ 技术范围:SpringBoot、SpringCloud、Vue、SSM、HTML、Nodejs、Python、MySQL、PostgreSQL、大数据、物…...
DeepSeek源码深度解析 × 华为仓颉语言编程精粹——从MoE架构到全场景开发生态
前言 在人工智能技术飞速发展的今天,深度学习与大模型技术已成为推动行业变革的核心驱动力,而高效、灵活的开发工具与编程语言则为技术创新提供了重要支撑。本书以两大前沿技术领域为核心,系统性地呈现了两部深度技术著作的精华:…...
