# AppCrawler 前面踩了超多坑,所以一切都以底下最新的配置為主 ## Infra 1. Appium - 1.22.3 一定要是2.0.0以下(未包含),所以不要用default latest version,可以用CLI也可以用Desktop,因為Desktop Version預設已經no longer supported,所以一定是1.22.3,而CLI安裝就需要指定(以下是已經安裝npm為前提) ```bash $ npm install -g appium@1.22.3 $ npm install -g appium-doctor ``` 2. 設定ANDROID_HOME和JAVA_HOME 到Windows環境變數設定  然後去看appium-doctor看necessary的部分是不是都有,一般來說可能會apkanalyzer.bat會沒有,這方面就慢慢到網路上去載android studio下載tools  4. AppCrawler - latest (2.7.4) 就直接到github release去下載build好的jar file,不需要看其他教學是用2.4.0或是2.3.1去用stb或是maven build原本的專案 Official Link: https://github.com/seveniruby/AppCrawler/releases/tag/2.7.4 ## 測試前 1. app activity name 如果已經在手機安裝好,就直接看dumpsys中該package的main activity是哪一個 ```bash $ adb shell dumpsys package com.spotify.music | grep -B 2 "android.intent.action.MAIN" -n 279- Action: "com.google.android.meet.ADDONS_SUPPORT" 280- Category: "android.intent.category.DEFAULT" 281: android.intent.action.MAIN: 282- 553d29 com.spotify.music/.SpotifyMainActivity filter 3a3b8ae 283: Action: "android.intent.action.MAIN" -- 286- Category: "android.intent.category.APP_MUSIC" 287- 7cd1a0c com.spotify.music/.main.AppIconEmeraldGreen filter 18bef55 288: Action: "android.intent.action.MAIN" -- 290- Category: "android.intent.category.DEFAULT" 291- c3efd6a com.spotify.music/.MainActivity filter 204625b 292: Action: "android.intent.action.MAIN" -- 307- android.intent.action.MUSIC_PLAYER: 308- 553d29 com.spotify.music/.SpotifyMainActivity filter 3a3b8ae 309: Action: "android.intent.action.MAIN" ``` 另外一種方式就是用apktool反編譯後去看AndroidManifest.xml,一樣就是string search ==android.intent.action.MAIN==,但反編譯後會有一大堆files,可能會很佔空間 ```bash $ apktool d your_app.apk ``` 2. app package name 如果已經安裝了,就直接list package ```bash $ adb shell pm list package | grep spotify package:com.spotify.music ``` 要不然就要用aapt去看 ```bash $ aapt d badging Spotify.apk | findstr package package: name='com.spotify.music' versionCode='116658084' versionName='8.9.58.572' platformBuildVersionName='14' platformBuildVersionCode='34' compileSdkVersion='34' compileSdkVersionCodename='14' uses-permission: name='com.sec.android.app.clockpackage.permission.READ_ALARM' ``` 3. 開啟appium 如何檢視有正確開啟並且有連線到 ```bash $ appium [Appium] Welcome to Appium v1.22.3 [Appium] Appium REST http interface listener started on 0.0.0.0:4723 $ curl http://127.0.0.1:4723/wd/hub/status {"value":{"build":{"version":"1.22.3"}},"sessionId":null,"status":0} ``` ## 實際測試 ```bash $ java -jar appcrawler-2.7.4-hogwarts.jar --capability "appPackage=com.spotify.music,appActivity=MainActivity" ``` ## 注意事項 :::danger 基本上這個tool還是依照大量截圖的方式判斷有無換頁,所以依照現在android版本的更新,開發商如果設定成無法截圖的方式,就無法做後續的測試 ::: :::danger 根據以上的步驟,還是非常有可能會遇到問題,我自己在用physical device時,最常遇到[java.lang.RuntimeException: Error creating extended parser class: Could not determine whether class ‘org.pegdown.Parser$$parboiled’ has already been loaded](https://ceshiren.com/t/topic/16293),在使用emulator的時候,也會遇到[Exception in thread “main” java.awt.image.RasterFormatException: (y + height) is outside of Raster](https://ceshiren.com/t/topic/31983) 但通通得不到解決的方式 :::
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up