SlideShare a Scribd company logo
1
Android Platform
Debugging and
Development
AnDevCon San Francisco 2014
Karim Yaghmour
@karimyaghmour
karim.yaghmour@opersys.com
2
These slides are made available to you under a Creative Commons Share-
Alike 3.0 license. The full terms of this license are here:
https://creativecommons.org/licenses/by-sa/3.0/
Attribution requirements and misc., PLEASE READ:
● This slide must remain as-is in this specific location (slide #2), everything
else you are free to change; including the logo :-)
● Use of figures in other documents must feature the below “Originals at”
URL immediately under that figure and the below copyright notice where
appropriate.
● You are free to fill in the “Delivered and/or customized by” space on the
right as you see fit.
● You are FORBIDEN from using the default “About” slide as-is or any of its
contents.
●
You are FORBIDEN from using any content provided by 3rd
parties without
the EXPLICIT consent from those parties.
(C) Copyright 2013-2014, Opersys inc.
These slides created by: Karim Yaghmour
Originals at: www.opersys.com/community/docs
Delivered and/or customized by
3
About
● Author of:
● Introduced Linux Trace Toolkit in 1999
● Originated Adeos and relayfs (kernel/relay.c)
● Training, Custom Dev, Consulting, ...
4
Agenda
1. Architecture Basics
2. Development environment
3. Observing and monitoring
4. Interfacing with the framework
5. Working with the AOSP sources
6. Symbolic debugging
7. Detailed dynamic data collection
8. Benchmarking
9. Summing up
5
1. Architecture Basics
● Hardware used to run Android
● AOSP
● Binder
● System Services
● HAL
6
7
8
9
10
11
/frameworks/base/services/java/...
/frameworks/base/services/jni/
/hardware/libhardware/
/device/[MANUF.]/[DEVICE]
/sdk/emulator/
Kernel or module
/frameworks/base/core/...
AOSP-provided
ASL
Manuf.-provided
Manuf. license
Manuf.-provided
GPL-license
12
2. Development Environment
● Host / Target setup
● IDE / Editor
● Eclipse setup
13
2.1. Host / Target setup
14
15
2.2. IDE / Editor
Logos belong to their respective owners. This slide isn't CC-BY-SA.
16
2.3. Eclipse Setup
● Preparation
● Project importing
● AOSP fixups
● Browsing the sources
17
2.3.1. Preparation
● AOSP Basics:
● Get AOSP ... from Google or otherwise
● Extract if needed
● Configure, build, etc.
● Eclipse / ADT:
● Get ADT bundle from developer.android.com
● Extract
● Start and update and if needed
18
●
Set up basic classpath file:
[aosp]$ cp development/ide/eclipse/.classpath .
●
Adjust eclipse.ini
● On my ADT bundle, it's:
– adt-bundle-linux-x86_64-20130917/eclipse/eclipse.ini
●
Change this:
-XX:MaxPermSize=256m
-Xms40m
-Xmx768m
●
To this:
-XX:MaxPermSize=256m
-Xms128m
-Xmx1500m
19
2.3.2. Project importing
● Start Eclipse
● Create new "Java project"
● Project name = your AOSP name
● Deselect "Use default location"
● Location = path to your AOSP
● Click "Next"
● Wait a little bit ...
● Click "Finish"
● Wait for it to build your project
● ... it likely will fail ...
20
2.3.3. AOSP fixups
● Need to fix AOSP classpath file and sources
● Assuming 4.3 here
● Add this:
<classpathentry kind="src" path="frameworks/opt/timezonepicker/src"/>
<classpathentry kind="src" path="frameworks/opt/colorpicker/src"/>
<classpathentry kind="src" path="frameworks/opt/datetimepicker/src"/>
<classpathentry kind="src" 
path="frameworks/support/v8/renderscript/java/src"/>
● Remove this:
<classpathentry kind="src" 
path="frameworks/support/renderscript/v8/java/src"/>
21
● Comment out a couple of things:
<!­­ Redefines android.util.pools which confuses Eclipse
<classpathentry kind="src" path="packages/apps/Gallery2/src"/>
<classpathentry kind="src" path="packages/apps/Gallery2/src_pd"/>
<classpathentry kind="src" 
path="packages/apps/Gallery2/gallerycommon/src"/>
­­>
<!­­
<classpathentry kind="src" path="packages/apps/Nfc/src"/>
<classpathentry kind="src" path="packages/apps/Nfc/nci/src"/>
­­>
<!­­
<classpathentry kind="src" path="frameworks/ex/carousel/java"/>
­­>
22
● Manually build the following (cd to and "mm") --
or remove from .classpath:
packages/apps/Stk
packages/screensavers/WevView
development/samples/ApiDemos
development/samples/HelloActivity
development/samples/Home
development/samples/LunarLander
development/samples/NotePad
development/samples/RSSReader
development/samples/SkeletonApp
development/samples/Snake
23
● Edit
packages/apps/Launcher/src/com/android/launcher
2/DragLayer.java and modify:
    private boolean isLayoutRtl() {
● to
    public boolean isLayoutRtl() {
● Now: right-click on project and select "Refresh"
● It might still show "x" on some parts until it's done
rebuilding the project
24
2.3.4. Browsing the sources
● Mouse-over object type to be taken to declaration
● Browse classes through “Outline”
● Browse Call Hierarchy
● View recently viewed files (Ctrl-e)
● Many other shortcuts, see:
● http://source.android.com/source/using-eclipse.html
● Issues:
● Can't compile with Eclipse ... still need “make”
● For Java only
Borat pic for make benefit live audience. Not CC-BY-SA ... will be
removed from distributed deck ;)
25
3. Observing and Monitoring
● Native
● Framework
● Overall
● Apps / Add-ons
26
3.1. Native
● schedtop
● librank
● procmem
● procrank
● showmap
● latencytop
27
3.2. Framework
● dumpsys
● service
28
3.3 Overall
● logcat
● dumpstate / bugreport
● watchprop / getprop
29
30
3.4. Apps / Add-ons
● Google Play:
● Process Manager
● Process Monitor
● Task Manager
● Process Tracker
● ...
31
3.5. Process Explorer
github.com/opersys
32
4. Interfacing With the Framework
● start / stop
● service call
● am
● pm
● wm
● svc
● monkey
● setprop
● raidl
33
5. Working with the AOSP Sources
● You really need to check build/envsetup.sh
● Some tricks:
● godir
● croot
● mm
● m
● jgrep
● cgrep
● resgrep
● It takes time to wrap your head around the tree
34
6. Symbolic Debugging - basics
35
6.1. DDMS / Eclipse integration
● Beware of libgail18 in Ubuntu
● Start DDMS view in Eclipse
● Each process has a separate host-side socket
● Select the process you want to debug:
● It'll get port 8700
36
● Create a debug configuration:
● Run->Debug Configurations->Remote Java
Application
● Connection Type: "Standard (Socket Attach)"
● Host: localhost
● Port: 8700
37
6.2. Debugging
● Select the process you want to debug in DDMS
● Go into Eclipse and click on the debug configuration you
created earlier
● Check that the little green bug is beside your process in
DDMS
● Again, things can look like they're freezing, this is "normal"
for Eclipse ...
● Wait for Eclipse to show your Dalvik process in the
"Debug" *window* in the "Debug" *view* -- all threads
should show
38
39
6.3. Debugging multiple processes
● In the debug *view* of eclipse, click on "Debug"
for every time you change to a new (not already
debugged) process in DDMS
● Wait for that process' threads to load in the
debug view
● Once threads are loaded, you can actually start
debugging
40
6.4. gdbserver - target side
● AOSP already takes care of debug:
● “-g” flag added to all native binaries
● Unstripped binaries in out/target/product/.../symbols/...
● Attaching to running process
# gdbserver ­­attach locahost:2345 30
● Start app for debugging with gdbserver prepended
# gdbserver localhost:2345 service list
● Forward the port on the host:
$ adb forward tcp:2345 tcp:2345
41
6.5. gdb - host side
● Load file **FIRST** and then attach on host side
$ prebuilts/gcc/linux­x86/arm/arm­eabi­4.7/bin/arm­eabi­gdb
GNU gdb (GDB) 7.3.1­gg2
Copyright (C) 2011 Free Software Foundation, Inc.
...
(gdb) file out/target/product/generic/symbols/system/bin/service
(gdb) target remote localhost:2345
(gdb) b main
Cannot access memory at address 0x0
Breakpoint 1 at 0x2a00146c: file frameworks/native/cmds/service/service.cpp, line 59.
(gdb) cont
Continuing.
warning: Could not load shared library symbols for 11 libraries, e.g. /system/bin/linker.
...
Breakpoint 1, main (argc=2, argv=0xbe882b74) at frameworks/native/cmds/service/service.cpp:59
59 {
(gdb) n
60     sp<IServiceManager> sm = defaultServiceManager();
(gdb) n
59 {
(gdb) n
60     sp<IServiceManager> sm = defaultServiceManager();
(gdb) n
61     fflush(stdout);
42
6.6. JNI debugging
$ prebuilts/gcc/linux­x86/arm/arm­eabi­4.7/bin/arm­eabi­gdb
(gdb) target remote localhost:2345
(gdb) file out/target/product/msm8960/symbols/system/bin/app_process 
(gdb) set solib­absolute­prefix out/target/product/msm8960/symbols/
(gdb) set solib­search­path out/target/product/msm8960/symbols/system/lib/
(gdb) b com_android_server_OpersysService.cpp:70
(gdb) cont
Continuing.
­­­­­­­­­­­­­­­­­­­­­­­­­­­­­
root@android:/ # service call opersys 2 s16 adfasd
­­­­­­­­­­­­­­­­­­­­­­­­­­­­­
[New Thread 576]
[Switching to Thread 576]
Breakpoint 1, write_native (env=0x5c94ad40, clazz=<value optimized out>, 
    ptr=<value optimized out>, buffer=0xa4f00005)
    at frameworks/base/services/jni/com_android_server_OpersysService.cpp:72
72     if (dev == NULL) {
(gdb) 
43
6.7. JTAG
● Requires hardware device
● Sometimes interfaces with gdb
● Not Android specific
● Some allow transparent kernel/user-space debug
● Don't know of any that go all the way up to Dalvik
44
7. Detailed Dynamic Data Collection
● Logging
● strace
● ftrace
● perf
45
7.1. Logging
● logcat is the most rapid/consistent way to
observe dynamic behavior.
● Trivial to add instrumentation points
● It just works ...
46
7.2. strace
● Same as Linux
● Use man page if need be
47
7.3. ftrace
● With 4.1, Google introduced systrace/atrace
● systrace is a Python script running on host side
● atrace is native Android binary
● systrace calls atrace via ADB
● atrace uses ftrace to capture kernel events
● Stack instrumented to feed events to ftrace
● Google's doc:
● https://developer.android.com/tools/help/systrace.html
● https://developer.android.com/tools/debugging/systrace.html
48
49
... trouble is ...
● Finicky -- notes from my attempts with 4.3:
● I can't get it to work !*!@#$&!#*$!
● Default goldfish kernel doesn't have ftrace
● Able to build ftrace-enabled kernel for goldfish
● Can trace that system ... so long as I don't use
atrace/systrace ... WTF1
?
● Not all Android kernels have ftrace enabled
● Generates HTML file that can only be read by
Chrome ... it doesn't work in Firefox. NIH?
1: The AOSP sources define WTF as “What a Terrible Failure”. We
trust they've done their research.
50
... still ...
● Have a look at these files:
● /external/chromium-trace/systrace.py
● /frameworks/native/cmds/atrace
● /frameworks/base/core/java/android/os/Trace.java
● /erameworks/native/include/utils/Trace.h
● /system/core/include/cutils/trace.h
● /frameworks/native/libs/utils/Trace.cpp
● Look for:
● ATRACE* in c/cpp files
● Trace.traceBegin()/trace.traceEnd() in Java files
51
# atrace ­­help
usage: atrace [options] [categories...]
options include:
  ­a appname      enable app­level tracing for a comma separated list of 
cmdlines
  ­b N            use a trace buffer size of N KB
  ­c              trace into a circular buffer
  ­k fname,...    trace the listed kernel functions
  ­n              ignore signals
  ­s N            sleep for N seconds before tracing [default 0]
  ­t N            trace for N seconds [defualt 5]
  ­z              compress the trace dump
  ­­async_start   start circular trace and return immediatly
  ­­async_dump    dump the current contents of circular trace buffer
  ­­async_stop    stop tracing and dump the current contents of circular
                    trace buffer
  ­­list_categories
                  list the available tracing categories
52
# atrace ­­list_categories                      
         gfx ­ Graphics
       input ­ Input
        view ­ View System
     webview ­ WebView
          wm ­ Window Manager
          am ­ Activity Manager
       audio ­ Audio
       video ­ Video
      camera ­ Camera
         hal ­ Hardware Modules
         res ­ Resource Loading
      dalvik ­ Dalvik VM
53
7.3. perf on Android on ARM
54
8. Benchmarking
55
0xbench
AnTuTu
Passmark
Vellamo
Geekbench2
SunSpider
GLBenchmakr
Quadrant Standard Edition
Linpack
Neocore
3DMark
Epic Citadel
Androbench
CF-bench
SD Tools
RL Benchmark: SQL
Benchmark & Tunning
A1 SD Bench
Quick Benchmark Lite
3DRating benchmark
Smartbench 2011
NenaMark
Rightware Browsermark
An3DBenchXL
CaffeineMark
NBench
Methanol
AndEBench
SmartBench 2012
RealPi
56
●
Works relatively well:
● logcat
●
Eclipse / DDMS
● Framework tools
●
Works ok:
● gdb/gdbserver
● native tools
● ftrace
●
Finicky:
●
systrace/atrace
● perf
9. Summing Up
57
10. Loose ends
● debuggerd
● tombstones
● anr traces
58
Thank you ...
karim.yaghmour@opersys.com

More Related Content

What's hot (20)

PDF
Scheduling in Android
Opersys inc.
 
PDF
Working with the AOSP - Linaro Connect Asia 2013
Opersys inc.
 
PDF
Memory Management in Android
Opersys inc.
 
PPTX
Android build on windows
Addweup
 
PDF
Drone CI/CD 自動化測試及部署
Bo-Yi Wu
 
PDF
Gitlab - Creating C++ applications with Gitlab CI
Uilian Ries
 
PDF
Embedded Android Workshop with Marshmallow
Opersys inc.
 
PDF
Using and Customizing the Android Framework / part 4 of Embedded Android Work...
Opersys inc.
 
PDF
Drone 1.0 Feature
Bo-Yi Wu
 
PDF
oSC19 openSUSE on ARM
Guillaume GARDET
 
PDF
Customizing Android's UI
Opersys inc.
 
PDF
Docker in Production: Reality, Not Hype - DevOps Chicago
bridgetkromhout
 
PDF
Webinar - Unbox GitLab CI/CD
Annie Huang
 
PDF
Inside Android's UI / ABS 2013
Opersys inc.
 
TXT
OPTEE on QEMU - Build Tutorial
Dalton Valadares
 
PDF
Rest, sockets em golang
jefferson Otoni Lima
 
PDF
Using Docker to build and test in your laptop and Jenkins
Micael Gallego
 
PDF
Builder and BuildKit
Moby Project
 
PDF
Design choices of golang for high scalability
SeongJae Park
 
PPTX
Surveillance on slam technology
GMO-Z.com Vietnam Lab Center
 
Scheduling in Android
Opersys inc.
 
Working with the AOSP - Linaro Connect Asia 2013
Opersys inc.
 
Memory Management in Android
Opersys inc.
 
Android build on windows
Addweup
 
Drone CI/CD 自動化測試及部署
Bo-Yi Wu
 
Gitlab - Creating C++ applications with Gitlab CI
Uilian Ries
 
Embedded Android Workshop with Marshmallow
Opersys inc.
 
Using and Customizing the Android Framework / part 4 of Embedded Android Work...
Opersys inc.
 
Drone 1.0 Feature
Bo-Yi Wu
 
oSC19 openSUSE on ARM
Guillaume GARDET
 
Customizing Android's UI
Opersys inc.
 
Docker in Production: Reality, Not Hype - DevOps Chicago
bridgetkromhout
 
Webinar - Unbox GitLab CI/CD
Annie Huang
 
Inside Android's UI / ABS 2013
Opersys inc.
 
OPTEE on QEMU - Build Tutorial
Dalton Valadares
 
Rest, sockets em golang
jefferson Otoni Lima
 
Using Docker to build and test in your laptop and Jenkins
Micael Gallego
 
Builder and BuildKit
Moby Project
 
Design choices of golang for high scalability
SeongJae Park
 
Surveillance on slam technology
GMO-Z.com Vietnam Lab Center
 

Viewers also liked (20)

PDF
Is Android the New King of Embedded OSes at Embedded World 2014
Opersys inc.
 
PDF
Android Platform Debugging and Development at ABS 2014
Opersys inc.
 
PDF
Leveraging Android's Linux Heritage at AnDevCon VI
Opersys inc.
 
PDF
Headless Android at AnDevCon3
Opersys inc.
 
PDF
Customizing Android's UI
Opersys inc.
 
PDF
Brillo / Weave Internals
Opersys inc.
 
PDF
Project Ara
Opersys inc.
 
PDF
Memory Management in Android
Opersys inc.
 
PDF
Android Platform Debugging and Development
Opersys inc.
 
PDF
Android Storage - Internal and External Storages
William Lee
 
PDF
Porting Android
Opersys inc.
 
PDF
Android Internals
Opersys inc.
 
PDF
Memory Management in Android
Opersys inc.
 
PDF
Embedded Android Workshop with Nougat
Opersys inc.
 
PDF
Understanding the Android System Server
Opersys inc.
 
PDF
Android Things Internals
Opersys inc.
 
PDF
Embedded Android Workshop with Nougat
Opersys inc.
 
PDF
Android Things: Android for IoT
Opersys inc.
 
PDF
Android Variants, Hacks, Tricks and Resources
Opersys inc.
 
PDF
Android Internals
Opersys inc.
 
Is Android the New King of Embedded OSes at Embedded World 2014
Opersys inc.
 
Android Platform Debugging and Development at ABS 2014
Opersys inc.
 
Leveraging Android's Linux Heritage at AnDevCon VI
Opersys inc.
 
Headless Android at AnDevCon3
Opersys inc.
 
Customizing Android's UI
Opersys inc.
 
Brillo / Weave Internals
Opersys inc.
 
Project Ara
Opersys inc.
 
Memory Management in Android
Opersys inc.
 
Android Platform Debugging and Development
Opersys inc.
 
Android Storage - Internal and External Storages
William Lee
 
Porting Android
Opersys inc.
 
Android Internals
Opersys inc.
 
Memory Management in Android
Opersys inc.
 
Embedded Android Workshop with Nougat
Opersys inc.
 
Understanding the Android System Server
Opersys inc.
 
Android Things Internals
Opersys inc.
 
Embedded Android Workshop with Nougat
Opersys inc.
 
Android Things: Android for IoT
Opersys inc.
 
Android Variants, Hacks, Tricks and Resources
Opersys inc.
 
Android Internals
Opersys inc.
 
Ad

Similar to Android Platform Debugging and Development (20)

PDF
Android Platform Debugging and Development
Opersys inc.
 
PDF
Android Platform Debugging and Development
Opersys inc.
 
PDF
Android Platform Debugging and Development
Opersys inc.
 
PDF
Android Platform Debugging and Development
Opersys inc.
 
PDF
Extending Android's Platform Toolsuite
Opersys inc.
 
PDF
Inside Android's UI at AnDevCon IV
Opersys inc.
 
PDF
Customizing Android's UI
Opersys inc.
 
PDF
Leveraging Android's Linux Heritage at AnDevCon V
Opersys inc.
 
PDF
Inside Android's UI at AnDevCon VI
Opersys inc.
 
PDF
Native Android Userspace part of the Embedded Android Workshop at Linaro Conn...
Opersys inc.
 
PDF
Inside Android's UI at AnDevCon V
Opersys inc.
 
PDF
Headless Android
Opersys inc.
 
PDF
Android Things Internals
Opersys inc.
 
PDF
Android's HIDL: Treble in the HAL
Opersys inc.
 
PDF
Running Code in the Android Stack at ELCE 2013
Opersys inc.
 
PDF
Inside Android's UI
Opersys inc.
 
PDF
Running Code in the Android Stack at ABS 2014
Opersys inc.
 
PDF
Android's Multimedia Framework
Opersys inc.
 
PDF
Leveraging Android's Linux Heritage at AnDevCon IV
Opersys inc.
 
PDF
Embedded Android Workshop part I ESC SV 2012
Opersys inc.
 
Android Platform Debugging and Development
Opersys inc.
 
Android Platform Debugging and Development
Opersys inc.
 
Android Platform Debugging and Development
Opersys inc.
 
Android Platform Debugging and Development
Opersys inc.
 
Extending Android's Platform Toolsuite
Opersys inc.
 
Inside Android's UI at AnDevCon IV
Opersys inc.
 
Customizing Android's UI
Opersys inc.
 
Leveraging Android's Linux Heritage at AnDevCon V
Opersys inc.
 
Inside Android's UI at AnDevCon VI
Opersys inc.
 
Native Android Userspace part of the Embedded Android Workshop at Linaro Conn...
Opersys inc.
 
Inside Android's UI at AnDevCon V
Opersys inc.
 
Headless Android
Opersys inc.
 
Android Things Internals
Opersys inc.
 
Android's HIDL: Treble in the HAL
Opersys inc.
 
Running Code in the Android Stack at ELCE 2013
Opersys inc.
 
Inside Android's UI
Opersys inc.
 
Running Code in the Android Stack at ABS 2014
Opersys inc.
 
Android's Multimedia Framework
Opersys inc.
 
Leveraging Android's Linux Heritage at AnDevCon IV
Opersys inc.
 
Embedded Android Workshop part I ESC SV 2012
Opersys inc.
 
Ad

More from Opersys inc. (12)

PDF
Android Automotive
Opersys inc.
 
PDF
Android 10 Internals Update
Opersys inc.
 
PDF
Android Security Internals
Opersys inc.
 
PDF
Embedded Android Workshop with Pie
Opersys inc.
 
PDF
Android Treble: Blessing or Trouble?
Opersys inc.
 
PDF
Embedded Android Workshop with Oreo
Opersys inc.
 
PDF
Embedded Android Workshop with Nougat
Opersys inc.
 
PDF
Brillo / Weave Internals
Opersys inc.
 
PDF
Brillo/Weave Internals
Opersys inc.
 
PDF
Embedded Android Workshop with Marshmallow
Opersys inc.
 
PDF
Memory Management in Android
Opersys inc.
 
PDF
Project Ara
Opersys inc.
 
Android Automotive
Opersys inc.
 
Android 10 Internals Update
Opersys inc.
 
Android Security Internals
Opersys inc.
 
Embedded Android Workshop with Pie
Opersys inc.
 
Android Treble: Blessing or Trouble?
Opersys inc.
 
Embedded Android Workshop with Oreo
Opersys inc.
 
Embedded Android Workshop with Nougat
Opersys inc.
 
Brillo / Weave Internals
Opersys inc.
 
Brillo/Weave Internals
Opersys inc.
 
Embedded Android Workshop with Marshmallow
Opersys inc.
 
Memory Management in Android
Opersys inc.
 
Project Ara
Opersys inc.
 

Recently uploaded (20)

PPTX
Agentic Automation Journey Session 1/5: Context Grounding and Autopilot for E...
klpathrudu
 
PDF
Build It, Buy It, or Already Got It? Make Smarter Martech Decisions
bbedford2
 
PDF
SciPy 2025 - Packaging a Scientific Python Project
Henry Schreiner
 
PDF
SAP Firmaya İade ABAB Kodları - ABAB ile yazılmıl hazır kod örneği
Salih Küçük
 
PDF
AOMEI Partition Assistant Crack 10.8.2 + WinPE Free Downlaod New Version 2025
bashirkhan333g
 
PDF
Download Canva Pro 2025 PC Crack Full Latest Version
bashirkhan333g
 
PDF
Add Background Images to Charts in IBM SPSS Statistics Version 31.pdf
Version 1 Analytics
 
PDF
IObit Driver Booster Pro 12.4.0.585 Crack Free Download
henryc1122g
 
PPTX
Foundations of Marketo Engage - Powering Campaigns with Marketo Personalization
bbedford2
 
PDF
MiniTool Partition Wizard 12.8 Crack License Key LATEST
hashhshs786
 
PPTX
Customise Your Correlation Table in IBM SPSS Statistics.pptx
Version 1 Analytics
 
PDF
유니티에서 Burst Compiler+ThreadedJobs+SIMD 적용사례
Seongdae Kim
 
PPTX
Comprehensive Risk Assessment Module for Smarter Risk Management
EHA Soft Solutions
 
PDF
Empower Your Tech Vision- Why Businesses Prefer to Hire Remote Developers fro...
logixshapers59
 
PDF
MiniTool Partition Wizard Free Crack + Full Free Download 2025
bashirkhan333g
 
PDF
TheFutureIsDynamic-BoxLang witch Luis Majano.pdf
Ortus Solutions, Corp
 
PDF
4K Video Downloader Plus Pro Crack for MacOS New Download 2025
bashirkhan333g
 
PPTX
Hardware(Central Processing Unit ) CU and ALU
RizwanaKalsoom2
 
PDF
AI + DevOps = Smart Automation with devseccops.ai.pdf
Devseccops.ai
 
PDF
Technical-Careers-Roadmap-in-Software-Market.pdf
Hussein Ali
 
Agentic Automation Journey Session 1/5: Context Grounding and Autopilot for E...
klpathrudu
 
Build It, Buy It, or Already Got It? Make Smarter Martech Decisions
bbedford2
 
SciPy 2025 - Packaging a Scientific Python Project
Henry Schreiner
 
SAP Firmaya İade ABAB Kodları - ABAB ile yazılmıl hazır kod örneği
Salih Küçük
 
AOMEI Partition Assistant Crack 10.8.2 + WinPE Free Downlaod New Version 2025
bashirkhan333g
 
Download Canva Pro 2025 PC Crack Full Latest Version
bashirkhan333g
 
Add Background Images to Charts in IBM SPSS Statistics Version 31.pdf
Version 1 Analytics
 
IObit Driver Booster Pro 12.4.0.585 Crack Free Download
henryc1122g
 
Foundations of Marketo Engage - Powering Campaigns with Marketo Personalization
bbedford2
 
MiniTool Partition Wizard 12.8 Crack License Key LATEST
hashhshs786
 
Customise Your Correlation Table in IBM SPSS Statistics.pptx
Version 1 Analytics
 
유니티에서 Burst Compiler+ThreadedJobs+SIMD 적용사례
Seongdae Kim
 
Comprehensive Risk Assessment Module for Smarter Risk Management
EHA Soft Solutions
 
Empower Your Tech Vision- Why Businesses Prefer to Hire Remote Developers fro...
logixshapers59
 
MiniTool Partition Wizard Free Crack + Full Free Download 2025
bashirkhan333g
 
TheFutureIsDynamic-BoxLang witch Luis Majano.pdf
Ortus Solutions, Corp
 
4K Video Downloader Plus Pro Crack for MacOS New Download 2025
bashirkhan333g
 
Hardware(Central Processing Unit ) CU and ALU
RizwanaKalsoom2
 
AI + DevOps = Smart Automation with devseccops.ai.pdf
Devseccops.ai
 
Technical-Careers-Roadmap-in-Software-Market.pdf
Hussein Ali
 

Android Platform Debugging and Development