全部 文章 问答 分享 共找到97个相关内容
[问答] 我只是测试一下是不是提问模块出问题了!
我只是测试一下是不是提问模块出问题了!几天没同学发问题了?难道是提问模块出问题了?
[问答] 这是一个满足好奇心的抽sob币的提问,有时间的进
平时的编程已经费神费劳,如果硬件再搞我们实在是受不了,这个提问大都是为了满足我的好奇心,不过进来看到的人,只要大家的评论都比较给力,相信点击浏览器的叉叉离开之后都会有所收获吧。
2020-12-18 14:54
·
电脑配置
[问答] 发表文章或提问时上传图片的记录可以删除吗?
发表文章或提问时上传图片的记录可以删除吗?刚开始不知道图片要小于1M,后面把图片压缩了又遇到网络不好重复上传了如下图:这里记录不能删除感觉非常不人性化
2021-03-28 22:06
·
阳光沙滩bug

[文章] 博客系统前端nuxt构建docker镜像失败修复
背景日常升级博客前端,居然失败了。。。。。开始在问答区提问了,康师傅建议升级node。我刚开始也是想的,但是又不想升级,最后,还是升级。。。哈哈。懒。

[文章] 根据之前提问过的换肤框架的解决方法
之前在社区上提问过如何更换三种主题、评论区里有大哥提供了换肤框架然后发现其实有一个换肤框架的学习成本很低很方便在此记录各位也可以参考换肤框架Android-skin-support链接:https://

[文章] 根据之前提问过的换肤框架的解决方法
之前在社区上提问过如何更换三种主题、评论区里有大哥提供了换肤框架然后发现其实有一个换肤框架的学习成本很低很方便在此记录各位也可以参考换肤框架Android-skin-support链接:https://

[文章] 【拉大锯】程序员的日常,寄快递为什么没来取件就扣钱了?(2021-3-7)
【拉大锯】程序员的日常(2021-3-7)终于下暴雨了!特别喜欢下雨,睡觉特别舒服!别误会,就睡觉,不干别的!最近使用到的库侧滑删除好多人的侧滑删除,都是侧滑,然后要你确定是否删除的!
2021-03-07 11:43
·
日常

[文章] Android开发日常-编写一个登录界面
Android开发日常-编写一个登录界面看完这篇文章你可以学到什么知识呢?自定义组合控件封装view,只暴露接口,模块独立,设计思想。
[问答] 喜马拉雅SDK集成604网络请求失败
喜马拉雅项目网络请求失败,看了之前有个人的提问,但是我解决不了,我认为可能是我之前虚拟机不能上网,更着步骤操作了adb.exe,改了ip地址就可以上网了,我试着和上次的提问者加了权限,因为我的是Android29
[问答] 关于喜马拉雅FM第三节没有gson、okio和okhttp的问题
提问之前,已经按照B站下方评论区给出的解决方法做了,依旧没有gson、okio和okhttp,这该怎么解决呢,谢谢了!
[分享] 让PPT演示更精彩
里面有大量的素材,动画等等,满足日常工作演示的需求。
[问答] 电脑显示器哪家强
准备购入一款显示器,日常视频、非竞技类游戏、代码和上网使用。对刷新率也没有任何要求。对分辨率没有什么概念,2k4k也没用过,也可以试一试。大家也没有推荐的显示器呀!
[问答] 快捷键提问
站长在写Android的时候哪些自动强制转换与创建方法的快捷键是什么呢?
2019-10-20 15:51
·
Android

[文章] ios 阳光沙滩客户端挖坑
背景日常使用iPhone,不方便摸鱼,想在iPhone上面摸鱼,想要好的体验,不想用flutter,那就想办法开发原生的。登录登录能用了。文章列表文章,也勉强能用,后面再把ui整整。
[分享] 2020年,你必须知道的JS数组技巧
这篇文章,向大家展示了在日常开发中,数组有哪些奇淫技巧值得关注和学习,让我们开始吧!

[文章] android gradle的日常使用
1.修改Gradle文件的存放位置默认情况下,androidstudio中gradle存放本地C:\Users\用户名.gradle文件夹下,下面存放着不同版本的gradle文件,如果想要修改存放位置可以在File>setting>Build,Execution,Deployment>BuildTools>gradle下2.gradle的兼容问题说完gradle文件存放的位置,不得不说一下下面这张图中的文件,这个文件夹包含了一个wrapper文件夹,那么为什么要有这个呢?gradle是一门发展很快的语言,语言发展快,api也就会经常更新,构建语言含有丰富的插件,变化很快的话,就难以兼容以前老的版本。而wrapper就用来解决解决兼容性问题。wrapper里定义了gradle的版本。distributionBase=GRADLE_USER_HOMEdistributionPath=wrapper/distsdistributionUrl=https\://services.gradle.org/distributions/gradle-6.8-bin.zipzipStoreBase=GRADLE_USER_HOMEzipStorePath=wrapper/dists我现在这个项目用的gradle版本是6.8,构建这个工程时,它都会用我所绑定的gradle版本(避免版本兼容性问题)所以wrapper的作用就是会来检查在你构建这个工程的机器上有没有6.8这个版本。如果有就开始构建,没有就去下载这个版本。再举个例子,假如你现在从网上下载了一个项目,而这个项目它所绑定的gradle版本是6.8的,而你的机器现在只有6.8版本的gradle,那么当这个项目在你这台机器上构建的时候,wrapper就会看你机器上有没有6.8版本的gradle,发现没有的话就会去到所提供的url下载这个版本。这个文件夹最主要的作用就是,当你clone了别人的项目,你网络又不好时,可以修改gradle的版本,使用本地已经下载好的gradle,让项目顺利构建。同时也可以避免本地下载一堆的gradle,占用磁盘空间。写这篇文章才发现,我已经下载了那么多3.Androidgradleplugin(gradle插件简称AGP)和gradle的关系对照您可以在AndroidStudio的File>ProjectStructure>Project菜单中指定Gradle版本,也可以使用命令行更新Gradle版本。官网链接4.常用的gradle命令4.1编译并生成相应的apk文件./gradlewclean清除/app目录下的build文件夹./gradlewbuild//依赖并编译打包./gradlewassembledebug//打debug包./gradlewassemblerelease//编译并打release的包./gradlewinstallrelease//release模式打包并安装./gradlewuninstallrelease//卸载release模式包./gradlewbuild--refresh-dependencies//刷新项目依赖//编译并打印日志./gradlewbuild--info//译并输出性能报告,性能报告一般在构建工程根目录build/reports/profile./gradlewbuild--profile//调试模式构建并打印堆栈日志./gradlewbuild--info--debug--stacktrace//强制更新最新依赖,清除构建并重新构建./gradlewcleanbuild--refresh-dependencies4.2.任务查询命令//查看任务./gradlewtasks//查看所有任务,包括缓存任务.gradlewtasks-all//针对某个module[modulename]的某个TaskName运行.gradlew:modulename:taskName说明,module定义在工程根settings.gradle下,由include指定子模块任务,不代表工程根也有同样的任务,所以需要单独查询moduel最佳命名实践为全小写英文防止编译兼容问题。4.3查看包依赖./gradlewdependencies//查看模组的依赖./gradlewapp:dependencies//检索依赖库.gradlewapp:dependencies|grepCompileClasspath//windows环境下.gradlewapp:dependencies|findstr"CompileClasspath"//将检索到的依赖分组找到比如multiDebugCompileClasspath就是multi渠道分发的开发编译依赖./gradlewapp:dependencies--configurationmultiDebugCompileClasspath//一般编译时的依赖库,不是固定配置方式,建议检索后尝试./gradlewapp:dependencies--configurationcompile//一般运行时的依赖库,不是固定配置方式,建议检索后尝试./gradlewapp:dependencies--configurationruntime4.4统计task时长gradle构建项目是将项目分成一个个的task的构建,通常为了分析哪个task花费了较长时间,需要我们自己写一些类来得到不同task的时长,好做针对性优化,这里有篇博客写的比较好,敢兴趣的直接跳转。统计task时长4.5有用的小技巧有用的技巧1.resolutionStrategy统一全局第三方库版本2.修改包的输出路径3.找到版本冲突的库4.修改依赖方式5.gradle.properties文件AS项目的根目录下有一个gradle.properties文件,专门用来配置全局键值对数据的。可用于存放敏感数据。将它从git版本控制中排除,这样gradle.properties文件只能保留在本地,从而不用担心keystore文件等敏感信息泄漏。常见的配置如下#Project-wideGradlesettings.#IDE(e.g.AndroidStudio)users:#GradlesettingsconfiguredthroughtheIDE*willoverride*#anysettingsspecifiedinthisfile.#Formoredetailsonhowtoconfigureyourbuildenvironmentvisit#http://www.gradle.org/docs/current/userguide/build_environment.html#Whenconfigured,Gradlewillruninincubatingparallelmode.#Thisoptionshouldonlybeusedwithdecoupledprojects.Moredetails,visit#http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects#org.gradle.parallel=true#为Studio分配默认的内存大小org.gradle.jvmargs=-Xmx2048m#表示使用AndroidXandroid.useAndroidX=true#表示将第三方库迁移到AndroidXandroid.enableJetifier=true#如果不设置为false,在某些机型上将不被允许安装android.injected.testOnly=false同时配合BuildConfig可以定义一些常量,如果你的app有两以上不同的环境运行,那么可以尝试一下这种方式定义baseUrl第一步:在app/build.gradle设置BuildConfigandroid{...buildTypes{release{minifyEnabledtrueproguardFilesgetDefaultProguardFile('proguard-android.txt'),'proguard-rules.pro'//buildConfigField用于给BuildConfig文件添加一个字段,baseUrl为键,后面的${releaseUrl}为值buildConfigField("String","baseUrl","\"${releaseUrl}\"")}debug{buildConfigField("String","baseUrl","\"${debugUrl}\"")}}...}第二步:取值定义在gradle.properties文件中。debugUrl=https://xxxdebug.comrealeaseUrl=https://xxxrelease.com使用(你可以在项目中任意位置以BuildConfig.key的形式调用在buildConfigField上面定义的常量)Log.d("tag",BuildConfig.baseUrl)在debug环境下打印结果为https://xxxdebug.com在release环境下打印结果为https://xxxrelease.com这样就可以实现在不同包中使用不同的baseUrl.6.使用Gradle规定组件之间资源前缀通常我们的项目不是单个模块,分成了多个模块,因为我们拆分出了很多业务组件和功能组件,在把这些组件合并到**“app壳工程”时候就有可能会出现资源名冲突问题,例如A组件和B组件都有一张叫做“ic_back”的图标**,这时候在集成模式下打包APP就会编译出错,解决这个问题最简单的办法就是在项目中约定资源文件命名规约,比如强制使每个资源文件的名称以组件名开始,这个可以根据实际情况和开发人员制定规则。当然了万能的Gradle构建工具也提供了解决方法,通过在在组件的build.gradle中添加如下的代码://设置了resourcePrefix值后,所有的资源名必须以指定的字符串做前缀,否则会报错。//但是resourcePrefix这个值只能限定xml里面的资源,并不能限定图片资源,所有图片资源仍然需要手动去修改资源名。resourcePrefix"girls_"7.gradle警告配置//代码警告配置lintOptions{//禁用文本硬编码警告disable'HardcodedText'//禁用图片描述警告disable'ContentDescription'}8.build.gralde(project)8.1旧版本旧版本的build.gradle文件是这样的//Top-levelbuildfilewhereyoucanaddconfigurationoptionscommontoallsub-projects/modules.buildscript{ext.kotlin_version='1.5.10'ext.navigationVersion='2.3.1'//注释1:repositories{google()mavenCentral()jcenter()maven{url'https://jitpack.io'}maven{url"https://maven.aliyun.com/repository/public"}}dependencies{classpath"com.android.tools.build:gradle:4.0.2"classpath'org.jetbrains.kotlin:kotlin-gradle-plugin:1.5.31'classpath"com.tencent.bugly:tinker-support:1.2.3"//NOTE:Donotplaceyourapplicationdependencieshere;theybelong//intheindividualmodulebuild.gradlefiles}}//注释2:allprojects{repositories{google()mavenCentral()jcenter()maven{url"https://www.jitpack.io"}maven{url'https://jitpack.io'}maven{url"https://maven.aliyun.com/repository/public"}}}taskclean(type:Delete){deleterootProject.buildDir}注释1中buildscript中的声明是gradle脚本自身需要使用的资源。可以声明的资源包括依赖项、第三方插件、maven仓库地址等。而注释2在build.gradle文件中直接声明的依赖项、仓库地址等信息是项目自身需要的资源。8.2新版本build.gradle(project)plugins{id'com.android.application'version'7.1.2'applyfalseid'com.android.library'version'7.1.2'applyfalseid'org.jetbrains.kotlin.android'version'1.6.10'applyfalse}taskclean(type:Delete){deleterootProject.buildDir}上面使用了DSL写法,语法为plugins{id«pluginid»//(1)id«pluginid»version«pluginversion»[apply«false»]//(2)}pluginid和pluginversion是必需的且必须是常量,字面量,字符串.其他语句都是不允许的apply是可选的,默认是true;它是控制在应用插件的时候是否立刻使用插件的默认行为。这个plugins{}块是不能嵌套在别的配置块里的,必须是脚本的顶级模块。8.3应用插件到不同的模块(module)应用插件到子项目可以利用plugins{}的apply选项将插件应用到某些项目而不是所有项目里。默认plugins{}的插件是立即被解析并应用的。可以使用applyfalse告诉Gradle不应用到当前项目,然后在子项目的脚本中使用applyplugin<>或者plugins{}应用插件settings.gradle中include'helloA'include'helloB'include'goodbyeC'导入了3个模块然后在build.gradle中plugins{id'org.gradle.sample.hello'version'1.0.0'applyfalseid'org.gradle.sample.goodbye'version'1.0.0'applyfalse}subprojects{if(name.startsWith('hello')){applyplugin:'org.gradle.sample.hello'}}goodbyeC/build.gradleplugins{id'org.gradle.sample.goodbye'}上面的示例演示了如何给多个子项目分别应用不同的插件。8.4setting.gradle(旧版)include':app'rootProject.name="CustomView"8.5setting.gralde(新版)和旧版仅仅是管理项目和不同模块之间的关系不同,新的setting.gradle还添加了这个pluginManagementDSL是用来管理插件的,它可以配置插件,自定义仓库,自定义解析规则等。pluginManagement{}只能定义在两个地方:settings.gradle里,并且必须是第一个模块//插件管理pluginManagement{repositories{gradlePluginPortal()google()mavenCentral()}}//管理第3方依赖dependencyResolutionManagement{repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)repositories{google()mavenCentral()}}rootProject.name="CustomView"include':app'另一个是init.gradle里settingsEvaluated{settings->settings.pluginManagement{plugins{}resolutionStrategy{}repositories{}}}9使用ext进行统一版本配置ext{android=[compileSdkVersion:29,buildToolsVersion:"30.0.2",applicationId:"com.xionggouba.bearseller",minSdkVersion:19,targetSdkVersion:30,versionCode:27,versionName:"3.9.1",defaultPublishConfig:'release',publishNonDefault:true,multiDexEnabled:true,mapKey:'c7e1ee468aa1bf8a6739',pushKey:'65aae199a0059eb1dbe7',pushChannel:'developer-default',]appid=[app:"com.xionggouba.bearseller",login:"com.huitao.login",home:"com.huitao.home",webview:"com.huitao.webview",main:"com.huitao.main",productManager:"com.huitao.productmanager",personal:"com.huitao.personalcenter",map:"com.huitao.map",bluetooth:"com.huitao.bluetooth",push:"com.huitao.push",markketing:"con.huitao.marketing",printer:"com.huitao.printer"]versions=["lifecycle_version":"2.2.0","arch_version":"2.1.0","retrofit_version":"2.6.2","dialog_version":"3.3.0","glide_version":"4.9.0","hilt":"2.28-alpha","kotlin_version":"1.4.10","fragment_version":"1.2.5","room_version":"2.2.6"]]通常为了方便版本管理,我们会在根目录下创建一个config.gradle文件,统一管理版本号,然后在build.gradle(project)下使用applyfrom"config.gradle"引入,然后使用,比如依赖room库implementation"androidx.room:room-runtime:$versions.room_version"10build.gradle(app)//该模块为应用程序模块,可以直接运行applyplugin:'com.android.application'android{//指定项目的编译版本,compileSdkVersion31//指定项目构建工具的版本buildToolsVersion"30.0.3"defaultConfig{//项目包名为com.example.testapplicationId"com.example.test"//最低兼容到Android5.0版本minSdkVersion21//指定已做过充分测试的目标版本targetSdkVersion25//版本号,这个是给开发者看的,以后应用升级都是以这个为准,范围大于1的整数versionCode1//这个是版本名称,给用户看的,versionName"1.0"testInstrumentationRunner"android.support.test.runner.AndroidJUnitRunner"//仅保留中文语种的资源resConfigs'zh,zh-rCN'//仅保留xxhdpi图片资源(目前主流分辨率1920*1080)resConfigs'xxhdpi'ndk{//设置支持的SO库架构,目前上支持armeabi-v7a,和arm64-v8a就可以运行在大部分手机上了//abiFilters'arm64-v8a','x86_64','armeabi',abiFilters'arm64-v8a','armeabi-v7a'//,'armeabi-v7a'//'x86_64',,}}//配置签名/***Linux或者Mac*gradleassembleRelease生成release版本*gradleassembleDebug**win*gradlewassembleRelease生成release版本*gradlewassembleDebug**/signingConfigs{release{keyAlias'android'//随便起keyPassword''//生成签名是的密码storeFilefile('../mobile-app.jks')//签名文件storePassword'adsda2++'//你自己的密码v1SigningEnabledtrue//v1签名v2SigningEnabledtrue//v2签名}debug{keyAlias'ttyh.android.key'keyPassword'adsda2++'//你自己的密码storeFilefile('../mobile-app.jks')storePassword'ttyh-123456++'v1SigningEnabledtruev2SigningEnabledtrue}}//打包偏好设置buildTypes{//指定生成正式版安装文件的配置release{//代码不进行混淆minifyEnabledfalse//压缩文件zipAlignEnabledtrue//移除无用的resource文件shrinkResourcesfalse//指定混淆的规则文件,proguard-android.txt为默认的混淆文件,定义了一些通用的混淆规则;//proguard-rules.pro文件位于当前项目的根目录下,定义一些项目特有的混淆规则。proguardFilesgetDefaultProguardFile('proguard-android.txt'),'proguard-rules.pro'}//指定测试版的安装文件配置debug{minifyEnabledfalsesigningConfigsigningConfigs.debugproguardFilesgetDefaultProguardFile('proguard-android-optimize.txt'),'proguard-rules.pro'}}productFlavors{urlDebug{signingConfigsigningConfigs.debug//引用前面的签名配置//测试环境Url,指定不同环境下的域名,到时可以通过BuildConfig.SERVER_URL获取到域名buildConfigField'String',"SERVER_URL",'\"https://xxx.com'}urlRelease{signingConfigsigningConfigs.release//生产环境UrlbuildConfigField'String','SERVER_URL','\"https://xxx.com'}}//不同资源文件尺寸的偏好flavorDimensions'default'//kotlin1.1.4开始,新增3个特性,要开启这3个特性,需要下面的设置//1.任何类中view属性都会被缓存为ViewHolder;//2.提供@Parcelize可以让任何类以一种简单的方式实现Parcelable//3.还有一种方法可以自定义生成的缓存androidExtensions{experimental=true}//使用viewbindingbuildFeatures{viewBindingtrue}//确定java版本compileOptions{sourceCompatibilityJavaVersion.VERSION_1_8targetCompatibilityJavaVersion.VERSION_1_8}kotlinOptions{jvmTarget="1.8"}sourceSets{main{jniLibs.srcDirs=['libs']}}}10.sourceSet强大的gradle,通过sourceSets可以让开发者能够自定义项目结构,如自定义assets目录、java目录、res目录,而且还可以是多个,但要知道的是,sourceSets并不会破坏变体的合并规则,它们是分开的,sourceSets只是起到了“扩充”的作用。这里先摆一下sourceSets的常规使用:sourceSets{main{manifest.srcFile'AndroidManifest.xml'java.srcDirs=['src']aidl.srcDirs=['src']renderscript.srcDirs=['src']res.srcDirs=['res']assets.srcDirs=['assets']}}对于多渠道共用同一套assets资源文件这个问题,结合sourceSets,我们可以这么处理,步骤如下:把共用的assets资源存放到一个渠道目录下,如free/assets。修改sourceSets规则,强制指定china渠道的assets目录为free/assets。sourceSets{china{sourceSet.assets.srcDirs=['src/free/assets']}}参考文章:-gradle插件-《AndroidGradle权威指南》-sourceSets在多渠道打包中的作用-Gradle7.1+新版本依赖变化-android多渠道打包
[问答] 关于Android实习的提问?
想问一下大家,大四想要找到Android实习,有java基础,需要补上什么知识?
2020-10-04 10:41
·
提问

[文章] AndroidStudio奇淫技巧-项目导入
好像也没啥好说的,这样子吧,这里可能遇到的问题我也没法复现,同学们如果遇到什么问题,到提问模块提问吧。
[问答] Room无法创建数据库
想着更新问题,但是发现更新不了,页面提示:内容不存在, 所以重新提问一下
照着官方的列子去写,然后就出现了如下错误:
<
2022-08-02 18:23
·
room
[问答] 提问发不了图片了吗?
预览是可以的哦!!
2020-01-18 23:56
·
提问

[文章] 腾讯暑假实习生初试面经
面试中的问题有部分可能网络,这顺序也不是严格的提问顺序。
- 1
- 2
- 3
- 4