前两天刚打开Android Studio后收到新版本的推送2021.1.1,毫不犹豫就点了升级安装,正常的应用项目用了用没什么问题,结果在加载含用Ndk的项目中,发现编译不过去了,于是就写一篇当时遇到的这个问题及最后解决的办法。
在上一篇文章《写给开发人员的实用密码学 - 数字证书》中介绍了数字证书,但要让用户信任颁发的数字证书,这里就需要引入 CA 中心。
本文以博客园的证书为例讲解,不包含对CRL部分的翻译,如没有对第5章节以及6.3小节进行翻译
我这篇博客写的有点迟了,很多原因 ,不一一说明了,而且网上也有很多介绍这个android 开发神器的文章,很多我在碰到问题的时候也都一一看过,但是我还是想写一篇总
Android Studio是Android开发的最理想工具,但是由于版本的更新和配置的差异,会出现很多问题,下面是常遇见的一些问题的总结。
背景 最近组里gradle大神带大家一起飞,lz也趁机学习一下Gradle相关的知识。我们工程中的gradle的脚本几乎是我所见过的最复杂的工程(另一个是Tinker),里面有自定义的plugin,也
前言:Android NDK r7及以上的版本已经集成了Cygwin编译环境,也就是说,我们完全可以抛弃庞大的Cygwin了。 r6及以下版本,也可以抛弃几个G的完整版,使用精简过的Mini-Cygwin来编译,解压后大小仅9M,但短小巧精悍,完全可以满足Android NDK的开发。 下载地址:https://code.google.com/p/mini-cygwin/ Eclipse集成Cygwin编译环境可以参考我的这篇贴:http://blog.csdn.net/codezjx/article/de
直接在 src/main 目录下新建 aidl 文件夹,并将我们的 aidl 文件放到该目录下。因为 AndroidStudio 默认的 aidl 文件默认配置是这样的。
使用jni进行opencv开发可以快速地将PC端的opencv代码移植到手机上,但是如何在android studio下进行配置,网上几乎找不到教程,大多都是eclipse下使用mk文件的方法,找不到使用gradle的方案,摸了几天,总算是摸清楚了。
开发环境:Androidstudio2.3 开发目的:在Androidstudio上编译c/c++jni并自动生成so库,在java类中引用。 开发过程中遇到的问题很多,但终归是成功了,记录下
Android Studio First Run 检测 Android SDK 及更新,由于众所周知的原因,我们会「Unable to access Android SDK add-on list」,而且大家一般也已经提前配置好了 Android SDK,真正需要更新的时候手动去 SDK Manager 更新就好了。
下面我就总结一下Android studio大家在导入jar包时遇到的一些问题和解决方法:
看到这个标题,大家可能会认为就是Android运行python脚本,或者用python写app,这些用QPython和P4A就可以实现了。我在想既然C可以调用Python,那么Android能不能通过JNI去调用C里的方法,C再去调用Python方法,实现Android与Python交互呢?用最近很热的一个概念来说JNI就是个壳。(本文假设大家有JNI开发基础)
最近看一个NDK项目,因为源码使用Eclipse IDE写的,想把代码导入Android Studio使用,毕竟好用很多,使用AS导入后,第一个问题就是编码问题,项目之前竟然使用的是GBK编码。首先就是改变编码问题。我先在设置中将项目编码改为UTF-8,build结果显示一堆错误的乱码,在网上逛了一圈,找到解决方案。
项目中使用git进行代码管理,在日常开发过程中,一次切换需求开完完后,git切换到开发主线分支后,和往常一样git pull, sync ,run app.
GitOps 是一种使用 Git 作为单一事实来源自动管理和交付 Kubernetes 基础设施和应用程序的方法。它通常利用一些软件代理来检测和协调 Git 中受版本控制的工件与集群中运行的工件之间的任何差异。
在新版的AndroidStudio3.6 中,在项目的包下新建 activity 时,一般会同时生成对应的java和xml文件,例如新建 MainActivity ,则会在java包下生成 MainActivity.java ,在 res 文件夹下的layout文件中生成 activity_main.xml。
记录这个bug,不是说这个问题有多么难,而是在解决之前,尝试了很多办法,它是一个不断试错的过程,比如:
如果你在Kubernetes中进行安全相关工作,很有可能你至少听说过“零信任”(zero-trust)的概念。你可能已经被要求部署它,或者至少思考如何部署它,毕竟大家都在谈论它!
今天在项目中使用一个图片选择器的第三方框架——GalleryFinal,想要导入源码,以便于修改,于是上网查找了一下方法,想到之前用到过其他导入第三方库的方法,现在做个小总结,以防忘记。
这篇文章会讲第一种方式来打包so库,这种方式是基于jni层的,需要我们同时提供接口的jar包来配合使用,适用于对方从java层调用我们的库。因为jni中的函数名是有特殊要求的,它会指定jni的java接口的路径,如果不提供jar包,那么使用者就要按照我们在jni头文件中声明的函数名来建立java文件,这将是非常痛苦的。
(这里提示sdk目录里面已经有内容了,因为我们已经下载了相应版本的sdk了,不用管)
上周我们在Android Gradle系列-入门篇文章中已经将gradle在项目中的结构过了一遍。对于gradle,我们许多时候都不需要修改类似与*.gradle文件,做的最多的应该是在dependencies中添加第三方依赖,或者说修改sdk版本号,亦或者每次发版本改下versionCode与versionName。即使碰到问题也是直接上google寻找答案,而并没有真正理解它为什么要这么做,或者它是如何运行的?
持续集成(CI)是在将代码合并到master分支之前自动进行代码构建和测试的实践。这使开发人员可以及早的发现错误和频繁地合并代码,同时降低了将新错误引入主源代码存储库的风险。
参考文档: https://docs.unrealengine.com/4.26/en-US/SharingAndReleasing/Linux/IntermediateLinuxDeveloper/AndroidOnLinux/
如果你是使用android studio编译项目的化,在编译apk只会会自动给apk签名。
做Android开发会遇到各种各样的问题,遇到问题不可怕,解决了并且知道为什么,下次遇到能马上解决就好了,今天要说的就是这个so库的使用采坑了。
华为EMUI9.0升到9.1后系统UI的响应有一定的提升, 但没官方说的那么快,方舟编译器重新编译过的是系统应用, 结合新的文件系统EROFS, 硬把虚拟机跑的UI优化成这样,不简单了。顺路吐槽下月亮模式,这样搞拍摄都没乐趣了。
保存文件到sd卡需要判断sd卡的大小,通过查看android系统的自带应用的源代码,得到方法,sdk下面的source是sdk的源代码,包含的是android.Jar下面的所有class的源代码。在android系统源代码中有ndk(java调c),dalvik虚拟机等,里面packages/apps/settings是设置的源代码。
sudo rm -fr /Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin
本书提供了所有章节的完整源码下载,自上市以来陆续收到读者的意见反馈,现将与源码有关的问题汇总归类如下,方便更多的朋友解决源码运行过程中发现的问题: 一、打开本书源码时,出现“Plugin with id 'com.android.application' not found.”的错误。 问题原因:本书源码以module形式提供,所以不能当作工程打开,而要以模块的形式来导入。 解决办法: 按以下步骤重新导入本书源码: 1、依次选择菜单“File”——“New”——“New Project”,按提示新建一个项目(即Project);
直接在Android Studio中,new project 就行,等待项目第一次编译完成
POM(Project Object Model)指项目对象模型,用于描述项目构件的基本信息。一个有效的 POM 节点中主要包含一下信息:
Linkerd 的自动 mTLS 功能 使用一组 TLS 凭据为代理生成 TLS 证书:信任锚、颁发者证书和私钥。信任锚的有效期有限:365 天(如果由 linkerd install 生成)或 自定义值(如果手动生成)。
//第一种方式:配置文件 <network-security-config> <domain-config> <domain includeSubdomains="true">api.zuoyebang.cn</domain> <pin-set expiration="2025-01-01"> <pin digest="SHA-256">38JpactkIAq2Y49orFOOQKurWxmmSFZhBCoQYcRhK90=</pin> <pin digest="SHA-256">9k1a0LRMXouZHRC8Ei+4PyuldPDcf3UKgO/04cDM90K=</pin> </pin-set> </domain-config> </network-security-config> //第二种方式:代码设置 fun sslPinning(): OkHttpClient { val builder = OkHttpClient.Builder() val pinners = CertificatePinner.Builder() .add("api.zuoyebang.cn", "sha256//89KpactkIAq2Y49orFOOQKurWxmmSFZhBCoQYcRh00L=") .add("api.zuoyebang.com", "sha256//a8za0LRMXouZHRC8Ei+4PyuldPDcf3UKgO/04cDM1o=09") .build() builder.apply { certificatePinner(pinners) } return builder.build() }
Could not resolve com.android.support:appcompat-v7:26.1.0. Required by: project :app No cached version of com.android.support:appcompat-v7:26.1.0 available for offline mode. No cached version of com.android.support:appcompat-v7:26.1.0 available for offline mode. Could not resolve com.android.support.constraint:constraint-layout:1.1.0-beta3. Required by: project :app No cached version of com.android.support.constraint:constraint-layout:1.1.0-beta3 available for offline mode. No cached version of com.android.support.constraint:constraint-layout:1.1.0-beta3 available for offline mode. Could not resolve com.android.support:design:26.1.0. Required by: project :app No cached version of com.android.support:design:26.1.0 available for offline mode. No cached version of com.android.support:design:26.1.0 available for offline mode. Could not resolve com.android.support:cardview-v7:26.1.0. Required by: project :app No cached version of com.android.support:cardview-v7:26.1.0 available for offline mode. No cached version of com.android.support:cardview-v7:26.1.0 available for offline mode. Could not resolve com.google.android.gms:play-services-ads:11.4.2. Required by: project :app No cached version of com.google.android.gms:play-services-ads:11.4.2 available for offline mode. No cached version of com.google.android.gms:play-services-ads:11.4.2 available for offline mode. Could not resolve com.android.support:support-v4:26.1.0. Required by: project :app No cached version of com.android.support:support-v4:26.1.0 available for offline mode. No cached version of com.android.support:support-v4:26.1.0 available for offline mode.
整理记录 AndroidStudio 把一个 module 项目打包成 jar 包。
每个 Android 版本中都包含数十种用于保护用户的安全增强功能。以下是 Android 8.0 中提供的一些主要安全增强功能: 加密:在工作资料中增加了对取消密钥的支持。 验证启动:增加了 Android 验证启动 (AVB)。支持回滚保护(用于引导加载程序)的验证启动代码库已添加到 AOSP 中。建议提供引导加载程序支持,以便为 HLOS 提供回滚保护。建议将引导加载程序设为只能由用户通过实际操作设备来解锁。 锁定屏幕:增加了对使用防篡改硬件验证锁定屏幕凭据的支持。 KeyStore:搭载 An
网上的教程皮的简直不谈了,非要搞个AndroidStdio,你以为呢?反手就是一重锤,我就是不装,第一开发的很多工作都不需要这个IDE,第二运行起来还很吃内存,经过实践有如下的教程,请大家指教。
以前开发的时候,如果A项目需要某个jar包,可能去网上搜索下载jar包,然后复制粘贴在开发对应的位置,如果B项目也需要这个jar包,那么同样需要再次手动复制粘贴到对应的位置。
SDK 无法更新解决方案 这个问题不是Android Studio的问题,而且由一些一些众所周知的原因导致的,我们这里说下解决办法。 打开SDK Manager,停止更新连接;在界面上方找Tools->Options打开了SDK Manager的Settings,选中“Force https://… sources to be fetched using http://…”,强制使用http协议,然后还需要按照下面步骤配置下hosts。 首先,找到你的hosts文件,不同平台下(Windows,Mac,Lu
最近需要使用JNI编程,学了下JNI,并且在Android Studio下实现了一个小demo。这期间有一些坑,还好都解决了,想分享出来,希望大家少走弯路。本文中采用的平台是Windows,NDK环境已经搭建好,这方面资料很多,大家可以自行百度。
这个问题不是Android Studio的问题,而且由一些一些众所周知的原因导致的,我们这里说下解决办法。
Flutter是目前全世界最流行的一个跨平台的移动UI框架,可以快速在iOS和Android上构建高质量的原生用户界面。
众所周知,从 Android 12 开始,使用了 TargetSDK 31 之后,四大组件如果使用了 intent-filter, 但是没显性质配置 exported App 将会无法安装,甚至编译不通过。
本文首先分析HTTP协议在安全性上的不足,进而阐述HTTPS实现安全通信的关键技术点和原理。然后通过抓包分析HTTPS协议的握手以及通信过程。
大家可以在我的 GitHub 页面找到这个工程:bennyhuo/Android-LuaJavax: Powerful Kotlin style API for Android Lua(https://github.com/bennyhuo/Android-LuaJavax),在提交记录当中可以看到 release 1.0 和 use kts 这两笔提交,前者使用 Groovy 编写 Gradle 脚本,后者使用 Kotlin 编写。
领取专属 10元无门槛券
手把手带您无忧上云