Android使用相关技术要点

1Android Studio

Android Studio安装

MacBook m2芯片电脑安装哪个版本的Android studio

说明:Mac上选择Android studio需要选择带arm的版本。不然会安装不起来。
具体版本见前面“Android Studio安装”。

android studio默认安装路径Mac

  • 本机安装地址为:
/Users/hh/Library/Application Support/Google/AndroidStudio2020.3

Android studio升级问题

  • AS启动之后,一般会有如下弹框,\color{#FF0000}{强烈建议:不要手贱去点它!}

    image.png

  • 如果不幸点了上面的Gradle升级弹框,没出问题则罢,出了问题大概率情况需要重新安装Android studio。
    注意:重装AS前,最好清理掉如下3个位置:
    1)AS安装目录
    比如Mac上目录如下:

/Applications/Android Studio.app

2)AS下载的SDK目录
比如Mac目录如下(这是自定义目录,根据安装时目录具体找):

/Users/hh/Documents/android/sdk

3)gradle所在目录
比如Mac上目录如下:

/Users/hh/.gradle

Gradle sync失败

8:03 下午 Gradle sync failed: Sync failed: reason unknown (3 s 397 ms)

2021-11-24 20:03:56,534 [2025237]  ERROR - intellij.openapi.progress.Task - Module: 'app' platform 'android-29' not found. 

AS(Android Studio)显示工具栏步骤:

  • 主要使用点击到回到上一页/下一页功能。
  • 结论:
    View -- Appearance -- Toolbar 打上勾就会显示了。

build.gradle配置

gradle清理缓存

  • 强制清除gradle 缓存/Mac gradle清理缓存
    Windows:
gradlew build --refresh-dependencies

Mac:

./gradlew build --refresh-dependencies
  • Mac如果遇到如下问题:
zsh: no such file or directory: ./gradlew

2 开发问题

AS导入aar

android获取定位

D/@hh: locationManager has android.location.LocationManager@dd48cc0
D/@hh: isGpsEnabled is true
D/@hh: current longitude:113.10160875320435, latitude:28.240157961845398

百度地图导入:

Android导入jnilibs

ACCESS_MOCK_LOCATION 模拟定位

修改app_name后报错

"app_name" is not translated in "zh" (Chinese)
  • 处理:在res下的strings.xml中添加translatable:
<string name="app_name" translatable="false">APPDEMO</string>

Android检查定位权限

ActivityCompat.OnRequestPermissionsResultCallback

android判断权限为询问状态

shouldShowRequestPermissionRationale

Android延时函数

andorid获取上下文

Android字典和json格式

fastjson

java单例模式

android broadcastreceiver

Android广播注册

9patch图

/Users/hh/Documents/androidProject//app-demo-android//app-demo-android/app/src/main/res/drawable-hdpi/splash.9.png: AAPT: error: file failed to compile.
  • 处理:
    由于着急用,干脆不用9patch图,直接用png图

SharedPreferences

Android从后台回到前台回调

android方法设置callback为参数

android软件安装列表权限

android.permission.GET_TASKS

queryIntentActivities

Build.MANUFACTURER.equalsIgnoreCase

Android加载控件loading

Android获取最上层的view

Android的Activity获取监听广播

应用适配Android12

  • 说明:如果targetSdkVersion设置31或以上,则需要适配Android 12,看资料可知需要将工程中AndroidManifest.xml所有exported的地方设置为true,包括引入的库也需要做适配(比如在app下的build.gradl做配置,具体见如下参考)。如果工程不对这个做要求,可以降低targetSdkVersion版本(低于31)即可。
android:exported="true"

targetSdkVersion

Build.MANUFACTURE

android:allowBackup

provider authorities

Android新建module后运行找不到类

android的module里再引入module

  • 说明:这里是以IM实时通讯引入举例:
    (1)主工程app下build.gradle配置dependencies库:
    api project(':offlinepush')

(2)offlinepush模块(module)下build.gradle配置dependencies库:

    api project(':pushcore')

(3)pushcore模块(module)下build.gradle配置dependencies库:

   if (projects.contains("imsdk-plus")) {
        api project(':imsdk-plus')
    } else {
        api 'com.tencent.imsdk:imsdk-plus:6.3.2609'
    }

具体遇到的问题,见后面“ 6 IM实时通讯”(具体配置以这里为准)。

android provider

3 调试

Android调试问题汇总

4 真机/模拟器

AS的AVD模拟器安装问题

Installation did not complete successfully. See the IDE log for detals.

AVD启动问题

AVD Manager
The emulator process for AVD Pixel_2_API_30 has teminated.
Unable to install Intel HAXM
HAXM can only be installed on Windows or Mac.
Please file a bug against Android Studio.

参考:
https://blog.csdn.net/liulanzaijia/article/details/84870972
https://blog.csdn.net/u013475983/article/details/108767595

AVD成功启动模拟器

(1)虚拟器 AVD:安装apk,报错

hh@hhdeMacBook-Pro ~ % adb devices
List of devices attached
emulator-5554    device

hh@hhdeMacBook-Pro ~ % adb install /Users/hh/Documents/COSBrowser/app/4.07.23/prd-uniapp-V4.07.23.apk
Performing Streamed Install
adb: failed to install /Users/hh/Documents/COSBrowser/app/4.07.23/prd-uniapp-V4.07.23.apk: 
Exception occurred while executing 'install':
android.os.ParcelableException: java.io.IOException: Requested internal only, but not enough space
    at android.util.ExceptionUtils.wrap(ExceptionUtils.java:34)
    at com.android.server.pm.PackageInstallerService.createSession(PackageInstallerService.java:595)
    at com.android.server.pm.PackageManagerShellCommand.doCreateSession(PackageManagerShellCommand.java:3434)
    at com.android.server.pm.PackageManagerShellCommand.doRunInstall(PackageManagerShellCommand.java:1446)
    at com.android.server.pm.PackageManagerShellCommand.runInstall(PackageManagerShellCommand.java:1408)
    at com.android.server.pm.PackageManagerShellCommand.onCommand(PackageManagerShellCommand.java:221)
    at com.android.modules.utils.BasicShellCommandHandler.exec(BasicShellCommandHandler.java:97)
    at android.os.ShellCommand.exec(ShellCommand.java:38)
    at com.android.server.pm.PackageManagerService$IPackageManagerImpl.onShellCommand(PackageManagerService.java:5954)
    at android.os.Binder.shellCommand(Binde%  
/Users/hh/.android/avd/Pixel_3a_API_33_arm64-v8a``.avd/

查看config.ini文件:

  • 说明:
    找到hw.ramSize=1536,该键用于设置内存大小,默认好像是256M
    上面的值为:hw.ramSize=1536
    修改为:hw.ramSize=15360

(2)还是不行,重新创建了一个AVD:

/Users/hh/.android/avd/Pixel_3a_XL_Edited_API_33.avd 
  • 终于运行起来了。

Mate20通过浏览器安装apk无法安装

mac上AS模拟器上不了网

小米手机安装失败

03/07 21:14:40: Launching 'app' on Xiaomi M2102J2SC.
Installation did not succeed.
The application could not be installed: INSTALL_FAILED_USER_RESTRICTED

oppo手机截屏怎么截

5 应用市场审核

华为应用审核提示获取安装列表

华为应用市场审核问题:

经检测发现,您的应用存在获取用户的软件安装列表敏感信息行为,且未在应用内的隐私政策/在AppGallery Connect上提交的隐私政策网址中进行说明

vivo应用存在强制用户使用定向推送功能--不通过

6 IM实时通讯

IM推送:日志

Cannot resolve symbol 'HmsMessageService'

IM推送:工程接入:日志

(1)第一个问题

Could not determine the dependencies of task ':app:compileAPPMASTERDebugJavaWithJavac'.
> Could not resolve all task dependencies for configuration ':app:APPMASTERDebugCompileClasspath'.
   > Could not resolve project :com.app.demo.pushcore.
     Required by:
         project :app > project :offlinepush
      > No matching configuration of project :com.app.demo.pushcore was found. The consumer was configured to find an API of a component, as well as attribute 'com.android.build.api.attributes.BuildTypeAttr' with value 'debug', attribute 'buildType' with value 'APPMASTER' but:
          - None of the consumable configurations have attributes.
Build file '/Users/hh/Documents/androidProject/app-demo-android/app-demo-android/offlinepush/build.gradle' line: 65

A problem occurred evaluating project ':offlinepush'.
> Project with path ':pushcore' could not be found in project ':offlinepush'.
Execution failed for task ':offlinepush:generateReleaseRFile'.
> Could not resolve all files for configuration ':offlinepush:releaseCompileClasspath'.
   > Could not find com.huawei.hms:push:5.0.2.300.
     Required by:
         project :offlinepush
  • 处理:按照前面介绍的引入module的方式即可解决。
    api project(':xxxxx')

IM推送:启动崩溃:日志

    java.lang.RuntimeException: Unable to get provider com.app.demo.offlinepush.OfflinePushService: java.lang.ClassNotFoundException: Didn't find class "com.app.demo.offlinepush.OfflinePushService" on path: DexPathList[[zip file "/data/app/com.app.demo-HT2QvzzgeOC4gRSARfORWg==/base.apk"],nativeLibraryDirectories=[/data/app/com.app.demo-HT2QvzzgeOC4gRSARfORWg==/lib/arm64, /data/app/com.app.demo-HT2QvzzgeOC4gRSARfORWg==/base.apk!/lib/arm64-v8a, /system/lib64, /vendor/lib64]]

     Caused by: java.lang.ClassNotFoundException: Didn't find class "com.app.demo.pushcore.ServiceInitializer" on path: DexPathList[[zip file "/data/app/com.app.demo-Be3Tve4GJG5ZY-d3uOQ1DA==/base.apk"],nativeLibraryDirectories=[/data/app/com.app.demo-Be3Tve4GJG5ZY-d3uOQ1DA==/lib/arm64, /data/app/com.app.demo-Be3Tve4GJG5ZY-d3uOQ1DA==/base.apk!/lib/arm64-v8a, /system/lib64, /vendor/lib64]]

IM推送:工程配置,日志

/Users/hh/Documents/androidProject/app-demo-android//app-demo-android/app/src/main/AndroidManifest.xml:148:9-150:47 Error:
    Attribute meta-data#XG_V2_ACCESS_ID@value at AndroidManifest.xml:148:9-150:47 requires a placeholder substitution but no value for <XG_ACCESS_ID> is provided.
/Users/hh/Documents/androidProject//app-demo-android//app-demo-android/app/src/main/AndroidManifest.xml:152:9-154:48 Error:
    Attribute meta-data#XG_V2_ACCESS_KEY@value at AndroidManifest.xml:152:9-154:48 requires a placeholder substitution but no value for <XG_ACCESS_KEY> is provided.

oppo推送申请channelid

push : registerID

  • 说明:IM会获取手机设备的token,作为registerID。

推送:IM: 检测

  • oppo推送:
    sign校验不通过,无效签名(OPPO返回错误码: 16),请检查您上传的证书参数是否有误(特别注意:OPPO需要上传的是MasterSecret, 而不是AppSecret。) 具体可参考:https://cloud.tencent.com/document/product/269/37729

  • 处理:重新在IM上更正MasterSecret和添加ChannelID后,推送检测成功(但手机为收到):
    token: ****599b 已成功推送。如果仍无法接收,请确认接收方手机已经打开您APP的通知功能。

7其他

keystore获取md5

hh@hhdeMacBook-Pro bin % pwd
/Applications/Android Studio.app/Contents/jre/Contents/Home/bin
hh@hhdeMacBook-Pro bin % ls
jaotc        javac        jdeprscan    jimage        jrunscript    rmiregistry
jar        javadoc        jdeps        jjs        keytool        serialver
jarsigner    javap        jfr        jlink        pack200        unpack200
java        jdb        jhsdb        jmod        rmid
hh@hhdeMacBook-Pro bin % 
hh@hhdeMacBook-Pro bin % keytool -list -v -keystore /Users/hh/Documents/androidProject/wvpn-sany-lt-shipper-android/keystore/sanylighttruck.keystore
The operation couldn’t be completed. Unable to locate a Java Runtime.
Please visit http://www.java.com for information on installing Java.
java version "18.0.2.1" 2022-08-18
Java(TM) SE Runtime Environment (build 18.0.2.1+1-1)
Java HotSpot(TM) 64-Bit Server VM (build 18.0.2.1+1-1, mixed mode, sharing)

通过keytool命令:

keytool -list -v -keystore + keystore的绝对路径

能够拿到证书指纹,包括SHA1和SHA256,但是获取不到MD5.

解决:需要降低JDK版本,比如安装Java7就可以获取到MD5.

beyond compare mac到期

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 197,966评论 5 462
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,170评论 2 375
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 144,909评论 0 327
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,959评论 1 268
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,851评论 5 358
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,583评论 1 275
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,956评论 3 388
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,590评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,878评论 1 293
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,892评论 2 314
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,719评论 1 328
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,501评论 3 316
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,957评论 3 300
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,124评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,440评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,003评论 2 343
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,211评论 2 339

推荐阅读更多精彩内容