全部 文章 问答 分享 共找到90个相关内容
[问答] 我只是测试一下是不是提问模块出问题了!
我只是测试一下是不是提问模块出问题了!几天没同学发问题了?难道是提问模块出问题了?
2020-06-22 11:15 · 博客系统 / 测试 / 提问 / SpringBoot
[问答] 这是一个满足好奇心的抽sob币的提问,有时间的进
平时的编程已经费神费劳,如果硬件再搞我们实在是受不了,这个提问大都是为了满足我的好奇心,不过进来看到的人,只要大家的评论都比较给力,相信点击浏览器的叉叉离开之后都会有所收获吧。
2020-12-18 14:54 · 电脑配置
[问答] 发表文章或提问时上传图片的记录可以删除吗?
发表文章或提问时上传图片的记录可以删除吗?刚开始不知道图片要小于1M,后面把图片压缩了又遇到网络不好重复上传了如下图:这里记录不能删除感觉非常不人性化
2021-03-28 22:06 · 阳光沙滩bug
[文章] 【拉大锯】程序员的日常:特斯拉可以识别到你假人,所以没能自动刹停!
【拉大锯】程序员的日常:特斯拉可以识别到你假人,所以没能自动刹停!这是啥玩意呢?今天有客户反应,我们做的老人摔倒报警没有起作用。我就回复他:我们的手表很只能的,发现你在假摔,所以不会报警。
2021-03-08 17:31 · 程序员的日常 / 翻车 / 快递 / 洗发液 / 特斯拉
[文章] Android系统编译日常记录
Android系统编译日常记录记录一下,有时候不常编译的话,有些东西会忘记的。
2019-08-31 10:21 · 安卓系统 / 编译 / 经验 / 系统定制 / AOSP
[文章] 作为一个聪明的程序员,应该如何提bug,提问呢?
作为一个聪明的程序员,应该如何提bug,提问呢?测试人员肯定最基本的就是要会得bug。如果一个程序员跟一个不专业的测试人员沟通,会非常痛苦。
2019-11-28 23:28 · 技巧 / 提问 / android / 安卓开发 / 提bugs
[文章] 博客系统前端nuxt构建docker镜像失败修复
背景日常升级博客前端,居然失败了。。。。。开始在问答区提问了,康师傅建议升级node。我刚开始也是想的,但是又不想升级,最后,还是升级。。。哈哈。懒。
2022-07-12 16:42 · node / nuxt / 博客系统
[文章] 程序员的日常(2021-2-25)
程序员的日常(2021-2-25)今天上班的路上,看到boss直聘的广告。我想起大秦帝国的范睢,那就说说今天想到跟历史相关的事情吧。为什么会想到范睢呢?因为有一段是范睢找秦昭襄王的时候,是直接面试。
2021-02-25 11:23 · 历史 / 嬴政 / 朝代 / 康熙 / 朱元璋
[文章] 【程序员拉大锯】程序员的日常(2021-3-3)
【程序员拉大锯】程序员的日常(2021-3-3)今天天气不错!阳光明媚,还TM有点晒!暂时不想写代码,来水一篇文章压压惊!福布斯2021排行榜这几天比较火的福布斯排行榜,更新了世界富豪的排名。
2021-03-03 18:36 · 日常 / 程序员 / 扯蛋 / 再扯蛋 / 蛋疼
[问答] Room

不好意思,三次提问都是同一个问题,因为不懂得提问的方式(以后提问会慎重的),以及修改不了内容,所以只好新开了一个提问


以下是源码,依赖包已经检查过了,都导入了

2022-08-03 09:51 · room
[文章] 【拉大锯】程序员的日常,寄快递为什么没来取件就扣钱了?(2021-3-7)
【拉大锯】程序员的日常(2021-3-7)终于下暴雨了!特别喜欢下雨,睡觉特别舒服!别误会,就睡觉,不干别的!最近使用到的库侧滑删除好多人的侧滑删除,都是侧滑,然后要你确定是否删除的!
2021-03-07 11:43 · 日常
[文章] Android开发日常-编写一个登录界面
Android开发日常-编写一个登录界面看完这篇文章你可以学到什么知识呢?自定义组合控件封装view,只暴露接口,模块独立,设计思想。
2019-08-30 23:53 · 安卓 / UI / 布局 / 应用开发
[问答] 喜马拉雅SDK集成604网络请求失败
喜马拉雅项目网络请求失败,看了之前有个人的提问,但是我解决不了,我认为可能是我之前虚拟机不能上网,更着步骤操作了adb.exe,改了ip地址就可以上网了,我试着和上次的提问者加了权限,因为我的是Android29
2020-02-26 10:56 · 604网络请求失败 / 喜马拉雅
[文章] Android开发日常-编写一个登录界面
Android开发日常-编写一个登录界面看完这篇文章你可以学到什么知识呢?自定义组合控件封装view,只暴露接口,模块独立,设计思想。
2019-10-23 10:28 · android / 组合控件 / 安卓开发 / 布局 / demo
[分享] 喜马拉雅FM电台项目代码
如果学习中遇到问题的话,可以发帖子提问交流,感谢大家的支持!
[问答] 关于喜马拉雅FM第三节没有gson、okio和okhttp的问题
提问之前,已经按照B站下方评论区给出的解决方法做了,依旧没有gson、okio和okhttp,这该怎么解决呢,谢谢了!
2021-03-29 16:48 · Android开发 / 喜马拉雅FM电台
[分享] 非常轻量级的gif录制软件
这个对于写博客呀,提问题都很方面。可以帮助同学们去描述问题,描述现象,很轻量级,使用简单。有需要的同学,下载一个来使用吧。
2019-11-28 23:34 · gif / 录屏 / 动图 / 工具 / Licecap
[问答] 电脑显示器哪家强
准备购入一款显示器,日常视频、非竞技类游戏、代码和上网使用。对刷新率也没有任何要求。对分辨率没有什么概念,2k4k也没用过,也可以试一试。大家也没有推荐的显示器呀!
2020-03-03 11:34 · 显示器 / 猿日常
[分享] 让PPT演示更精彩
里面有大量的素材,动画等等,满足日常工作演示的需求。
2019-09-27 21:55 · PPT / 演示 / 办公
[问答] 提问发不了图片了吗?
预览是可以的哦!!
2020-01-18 23:56 · 提问
[问答] 快捷键提问
站长在写Android的时候哪些自动强制转换与创建方法的快捷键是什么呢?
2019-10-20 15:51 · Android
[文章] AndroidStudio奇淫技巧-项目导入
好像也没啥好说的,这样子吧,这里可能遇到的问题我也没法复现,同学们如果遇到什么问题,到提问模块提问吧。
2019-11-24 12:08 · IDE / androidstudio / 技巧 / 导入项目 / Android开发
[文章] ios 阳光沙滩客户端挖坑
背景日常使用iPhone,不方便摸鱼,想在iPhone上面摸鱼,想要好的体验,不想用flutter,那就想办法开发原生的。登录登录能用了。文章列表文章,也勉强能用,后面再把ui整整。
2022-01-04 17:46 · ios / swift / 阳光沙滩客户端
[分享] 2020年,你必须知道的JS数组技巧
这篇文章,向大家展示了在日常开发中,数组有哪些奇淫技巧值得关注和学习,让我们开始吧!
2020-02-19 14:42 · js / 前端 / JavaScript / 技巧 / 经验
[问答] Room无法创建数据库

想着更新问题,但是发现更新不了,页面提示:内容不存在, 所以重新提问一下



照着官方的列子去写,然后就出现了如下错误:


<

2022-08-02 18:23 · room
[文章] 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多渠道打包
2022-09-30 10:44 · android / gradle
[问答] 安卓提问SDK的集成
这是说的什么问题呢?是因为OKHTTP的原因吗?但是最新版的SDK没有这个jar包怎么办?2019-10-2621:23:08.12624136-24136/com.example.himalayaE/AndroidRuntime:FATALEXCEPTION:main   Process:com.example.himalaya,PID:24136   java.lang.NoClassDefFoundError:Failedresolutionof:Lokhttp3/FormBody$Builder;       atcom.ximalaya.ting.android.opensdk.httputil.BaseBuilder.urlPost(BaseBuilder.java:129)       atcom.ximalaya.ting.android.opensdk.datatrasfer.AccessTokenManager.update(AccessTokenManager.java:186)       atcom.ximalaya.ting.android.opensdk.datatrasfer.AccessTokenManager.init(AccessTokenManager.java:134)       atcom.ximalaya.ting.android.opensdk.datatrasfer.CommonRequest.init(CommonRequest.java:303)       atcom.example.himalaya.base.BaseApplication.onCreate(BaseApplication.java:18)       atandroid.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1162)       atandroid.app.ActivityThread.handleBindApplication(ActivityThread.java:6447)       atandroid.app.ActivityThread.access$1400(ActivityThread.java:220)       atandroid.app.ActivityThread$H.handleMessage(ActivityThread.java:1803)       atandroid.os.Handler.dispatchMessage(Handler.java:106)       atandroid.os.Looper.loop(Looper.java:215)       atandroid.app.ActivityThread.main(ActivityThread.java:7376)       atjava.lang.reflect.Method.invoke(NativeMethod)       atcom.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:500)       atcom.android.internal.os.ZygoteInit.main(ZygoteInit.java:865)    Causedby:java.lang.ClassNotFoundException:Didn'tfindclass"okhttp3.FormBody$Builder"onpath:DexPathList[[zipfile"/data/app/com.example.himalaya-LwlcyqUcoDiqIsFZ2mLxpg==/base.apk"],nativeLibraryDirectories=[/data/app/com.example.himalaya-LwlcyqUcoDiqIsFZ2mLxpg==/lib/arm64,/data/app/com.example.himalaya-LwlcyqUcoDiqIsFZ2mLxpg==/base.apk!/lib/arm64-v8a,/system/lib64,/system/vendor/lib64]]       atdalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:134)       atjava.lang.ClassLoader.loadClass(ClassLoader.java:379)       atjava.lang.ClassLoader.loadClass(ClassLoader.java:312)       atcom.ximalaya.ting.android.opensdk.httputil.BaseBuilder.urlPost(BaseBuilder.java:129)        atcom.ximalaya.ting.android.opensdk.datatrasfer.AccessTokenManager.update(AccessTokenManager.java:186)        atcom.ximalaya.ting.android.opensdk.datatrasfer.AccessTokenManager.init(AccessTokenManager.java:134)        atcom.ximalaya.ting.android.opensdk.datatrasfer.CommonRequest.init(CommonRequest.java:303)        atcom.example.himalaya.base.BaseApplication.onCreate(BaseApplication.java:18)        atandroid.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1162)        atandroid.app.ActivityThread.handleBindApplication(ActivityThread.java:6447)        atandroid.app.ActivityThread.access$1400(ActivityThread.java:220)        atandroid.app.ActivityThread$H.handleMessage(ActivityThread.java:1803)        atandroid.os.Handler.dispatchMessage(Handler.java:106)        atandroid.os.Looper.loop(Looper.java:215)        atandroid.app.ActivityThread.main(ActivityThread.java:7376)        atjava.lang.reflect.Method.invoke(NativeMethod)        atcom.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:500)        atcom.android.internal.os.ZygoteInit.main(ZygoteInit.java:865) 
2019-10-26 21:49 · sdk集成
[文章] 腾讯暑假实习生初试面经
面试中的问题有部分可能网络,这顺序也不是严格的提问顺序。
2021-03-19 09:24 · android / 实习生面试
[问答] 关于Android实习的提问
想问一下大家,大四想要找到Android实习,有java基础,需要补上什么知识?
2020-10-04 10:41 · 提问
[文章] 日常错误记录第一期
意外的元素意外的元素(uri:"",local:"base-extension")。所需元素为<{}codename>,<{}layoutlib>,<{}api-level>我修改了gradle的版本好了。Android不会自动导包也不报错这个问题我设置了autoimport,但是还是不会自动导包,也不包错。原因是插件不兼容,或者老旧的问题,把butterknife插件删除就好了。Android4.2.1Gradle没有task,打包不了aar库解决方法打开设置,找到Experimental里,去掉上图中的那个勾点击gradle,就有了。Mqtt,EOFExceptiononIotDisconnected...已断开连接(32109)-java.io.EOFException我这里报这个错是因为连接ID重复了Gson解析jsonGson解析json时,bean注意了,不要混淆了,否则无法赋值。它是通过反射的方式去给字段赋值的。Nuxt.js多环境开发的时候,我们有dev环境,测试的时候我们有test环境,上线的时候我们有prod环境通常来说,我们会连接到不同的服务器上。如果根据不同的启动方式来使用不同的服务器地址呢?前置条件安装cross-envnpminstallcross-env--save脚本在package.json中生产模式的"build":"cross-envNODE_ENV=prodnuxtbuild",开发的脚本"dev":"cross-envNODE_ENV=devnuxt",测试的脚本:"test":"cross-envNODE_ENV=testnuxtbuild",也就是我使用不同的方式启动,这个NODE_ENV的值就不一样,build则是prod,dev则是dev,test构建则是test这样子,前置的环境就有了。如何获取到当前的环境呢?process.env,注意,不要写错,evn。不同环境下的值我们创建一个env.js的文件,名字你随便取:以上是我的url的配置,我只配置了开发环境和生产环境。配置环境中的常量我们可以拿到了对应的env,那么还没有我们的url值呢,需要配置一下。首先在nuxt.config.js导入env.js文件,然后添加以下配置importenvfrom'./env';module.exports={env:{BASE_API:env[process.env.NODE_ENV].BASE_API,ACCOUNT_PATH:env[process.env.NODE_ENV].ACCOUNT_PATH,UCENTER_PATH:env[process.env.NODE_ENV].UCENTER_PATH},.....}这个能看懂吧,到这里就配置好了,注意层级不要放错,单词不要写错。图片加水印有同学在群里说我们的文章被别人全部复制,并且转成了原创。有如此不要脸的同行,那么我们就做一下水印吧。//读取图片流java.awt.Imageimage=ImageIO.read(inputStream);//获取图片的宽intimgWidth=image.getWidth(null);//获取图片的高intimgHeight=image.getHeight(null);log.info("imgWidth==>"+imgWidth);log.info("imgHeight==>"+imgHeight);intangel=45;//旋转角度//每个水印水平间隔,我打算一行4个的样子intxpadding=imgWidth/4;//每个水印垂直间隔intypadding=imgHeight/4;//字体也要动态大小intfontSize=ypadding/6;//但是也不能太小if(fontSize<8){fontSize=8;}//创建一个空白的容器BufferedImagebi=newBufferedImage(imgWidth,imgHeight,BufferedImage.TYPE_INT_ARGB);//拿到画笔Graphics2Dg=bi.createGraphics();g.setRenderingHint(RenderingHints.KEY_ANTIALIASING,RenderingHints.VALUE_ANTIALIAS_ON);//绘制原图片floatalpha=1F;AlphaCompositeac=AlphaComposite.getInstance(AlphaComposite.SRC_OVER,alpha);g.setComposite(ac);g.drawImage(image,0,0,imgWidth,imgHeight,null);//开始绘制水印//水印字体,我读取的是微软雅黑,我也不知道要不要钱,没查,哈哈。Fontfont=Font.createFont(0,this.getClass().getResourceAsStream("/msyh.ttc")).deriveFont(Font.BOLD,fontSize);g.setFont(font);FontRenderContextfrc=g.getFontRenderContext();TextLayouttl=newTextLayout(text,font,frc);//水印串宽度intstringWidth=g.getFontMetrics(g.getFont()).charsWidth(text.toCharArray(),0,text.length());//旋转水印g.rotate(Math.toRadians(angel),(double)imgWidth/2,(double)imgHeight/2);//水印透明度g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER,0.4F));//字体色g.setColor(Color.gray);intx=-imgHeight/2;inty=-imgWidth/2;//循环绘制while(x<imgWidth+imgHeight/2){y=-imgWidth/2;while(y<imgHeight+imgWidth/2){Shapesha=tl.getOutline(AffineTransform.getTranslateInstance(x,y));g.fill(sha);y+=ypadding;}x+=stringWidth+xpadding;}//释放资源,我为什么要用byteArrayOutputStream,因为我不想写到文件,直接写到内存//弄完以后上传到COSg.dispose();ImageIO.write(bi,"PNG",byteArrayOutputStream);returnbyteArrayOutputStream.size();下面就传一张图试试看
2022-11-29 17:18 · 错误 / bug / 日常 / 经验 / 工具
  • 1
  • 2
  • 3