Android Studio for Platform (ASfP) 使用教程


在这里插入图片描述
归纳的很清楚,下载Repo并下载源码->可以参考我的 Framework入门のPiex 6P源码(下载/编译/刷机)

启动图标(重启生效)

[Desktop Entry]
Encoding=UTF-8
Name=AndroidStudio                                     
Comment=AndroidStudio                                  
Exec=/opt/android-studio-for-platform/bin/studio.sh
Icon=/opt/android-studio-for-platform/bin/studio.png
Terminal=false
StartupNotify=true
Type=Application
Categories=Application;Development;

OR
/opt/android-studio-for-platform/bin/studio.sh

修改vmoptions配置
/opt/android-studio-for-platform/bin/studio64.vmoptions
网上搜索了下相关配置主要是对 Xmx 的修改

heap size
-Xms-Xmx 配置堆内存,也就是 IntelliJ 可以使用的内存。

-Xms 初始堆内存,调大该内存可以让启动速度更快,以省去分配内存的时间
-Xmx 最大堆内存,如果遇到 OutOfMemoryError 可以调大该数值,最大不要超过系统 1/4.
GC Algorithm
-XX:+UseConcMarkSweepGC 参数用来调整 GC 算法。使用该算法利用多个线程在后台进行 GC,以避免应用程序停止。

当分配超过 4GB 的堆内存时,可以尝试使用 -XX:+UseG1GC.

Other
-ea 选项开启 assertions。如果调试 IntelliJ 或者开发插件时可能用到,对 IntelliJ 性能并没有影响。

-server 虚拟机的解释执行模式。

-XX:SoftRefLRUPolicyMSPerMB=[value] 参数用来控制每 M 空间中 soft reference 保证存活的毫秒数。默认的时间是 1000JetBrains 推荐 50-XX:ReservedCodeCacheSize=510m 设置编译器最大的 code cache,另外一个相关的 JVM 参数是 -XX:InitialCodeCacheSize JetBrains 推荐这里使用 240m. 1

-Dsun.io.useCanonCaches=[boolean] 该参数是否开启文件名及路径缓存,默认 java 会缓存文件名 302JetBrains 建议关闭。

-XX:+OmitStackTraceInFastThrow JetBrains 官方推荐的参数。

-XX:MaxJavaStackTraceDepth=-1 JVM 在实现 java.lang.Throwable.fillInStackTrace() 时把整个调用栈上的所有 Java 栈帧消息记录下来

-XX:+HeapDumpOnOutOfMemoryError 当发生 OutOfMemoryError 时 dump 堆内容。3

编写Repo脚本

#!/usr/bin/env bash
 
export LOG_ACCOUNT=tmp
export LOG_FILENAME=repo-sync
export REPO_URL='https://mirrors.tuna.tsinghua.edu.cn/git/git-repo'
 
aosp_branch=android-11.0.0_r9
 
if [ ! -d ".repo" ]; then
    repo init -u https://mirrors.tuna.tsinghua.edu.cn/git/AOSP/platform/manifest -b $aosp_branch
    repo_stat=$?
    if [ $repo_stat -ne 0 ]; then
        echo "init repo faild, please try again"
        exit 0
    fi
else
    log -o -- "local .repo dir exists"
fi
 
try_count=0
echo "from remote sync aosp"
 
repo sync
repo_stat=$?
while [ $repo_stat -ne 0 ]; do
    log -o -- "sync faild, status: $repo_stat, try again in 5s ..."
    sleep 5
    repo sync
    repo_stat=$?
    ((try_count++))
done
 
echo "sync repo over, try_count: $try_count"
echo "sync over, success"

下载源代码

在这里插入图片描述

lunch 查看版本

Lunch menu... pick a combo:
     1. aosp_arm-eng
     2. aosp_arm64-eng
     3. aosp_blueline-userdebug
     4. aosp_blueline_car-userdebug
     5. aosp_bonito-userdebug
     6. aosp_bonito_car-userdebug
     7. aosp_bramble-userdebug
     8. aosp_car_arm-userdebug
     9. aosp_car_arm64-userdebug
     10. aosp_car_x86-userdebug
     11. aosp_car_x86_64-userdebug
     12. aosp_cf_arm64_auto-userdebug
     13. aosp_cf_arm64_phone-userdebug
     14. aosp_cf_x86_64_phone-userdebug
     15. aosp_cf_x86_auto-userdebug
     16. aosp_cf_x86_phone-userdebug
     17. aosp_cf_x86_tv-userdebug
     18. aosp_coral-userdebug
     19. aosp_coral_car-userdebug
     20. aosp_crosshatch-userdebug
     21. aosp_crosshatch_car-userdebug
     22. aosp_flame-userdebug
     23. aosp_flame_car-userdebug
     24. aosp_redfin-userdebug
     25. aosp_sargo-userdebug
     26. aosp_sunfish-userdebug
     27. aosp_taimen-userdebug
     28. aosp_trout_arm64-userdebug
     29. aosp_trout_x86-userdebug
     30. aosp_walleye-userdebug
     31. aosp_walleye_test-userdebug
     32. aosp_x86-eng
     33. aosp_x86_64-eng
     34. arm_krait-eng
     35. arm_v7_v8-eng
     36. armv8-eng
     37. armv8_kryo385-eng
     38. beagle_x15-userdebug
     39. beagle_x15_auto-userdebug
     40. car_x86_64-userdebug
     41. db845c-userdebug
     42. fuchsia_arm64-eng
     43. fuchsia_x86_64-eng
     44. hikey-userdebug
     45. hikey64_only-userdebug
     46. hikey960-userdebug
     47. hikey960_tv-userdebug
     48. hikey_tv-userdebug
     49. pixel3_mainline-userdebug
     50. poplar-eng
     51. poplar-user
     52. poplar-userdebug
     53. qemu_trusty_arm64-userdebug
     54. silvermont-eng
     55. uml-userdebug
     56. yukawa-userdebug
     57. yukawa_sei510-userdebug

lunch product_name-build_variant
product_name作为需要构建的产品
build_variant 作为需要构建的变体

PS:安卓官网这步给出的 lunch aosp_arm-eng在实际编译完成后是无法正常运行的,这个是很大的,很多人都是在这一步卡住了很久
真正能在模拟器上运行的是 lunch sdk_phone_x86_64
在这里插入图片描述
在这里插入图片描述
开始编译

Syncing targets: [frameworks, packages/apps/Settings]

Preparing for sync...
Updating MAX_ARG_STRLEN to 131072

Generating Soong artifacts...
/bin/bash -c "source build/envsetup.sh && lunch sdk_phone_x86_64 && echo ANDROID_PRODUCT_OUT=$ANDROID_PRODUCT_OUT && refreshmod"

Refreshing modules (building module-info.json). Log at /data/android-11.0.0_r9/out/target/product/generic_x86_64/module-info.json.build.log.
============================================
PLATFORM_VERSION_CODENAME=REL
PLATFORM_VERSION=11
TARGET_PRODUCT=sdk_phone_x86_64
TARGET_BUILD_VARIANT=eng
TARGET_BUILD_TYPE=release
TARGET_ARCH=x86_64
TARGET_ARCH_VARIANT=x86_64
TARGET_2ND_ARCH=x86
TARGET_2ND_ARCH_VARIANT=x86_64
HOST_ARCH=x86_64
HOST_2ND_ARCH=x86
HOST_OS=linux
HOST_OS_EXTRA=Linux-5.15.0-86-generic-x86_64-Ubuntu-20.04.4-LTS
HOST_CROSS_OS=windows
HOST_CROSS_ARCH=x86
HOST_CROSS_2ND_ARCH=x86_64
HOST_BUILD_TYPE=release
BUILD_ID=RD1A.200810.020.A1
OUT_DIR=out
PRODUCT_SOONG_NAMESPACES=device/generic/goldfish device/generic/goldfish-opengl hardware/google/camera hardware/google/camera/devices/EmulatedCamera device/generic/goldfish device/generic/goldfish-opengl
============================================
ANDROID_PRODUCT_OUT=/data/android-11.0.0_r9/out/target/product/generic_x86_64

编译成功
在这里插入图片描述
IDE占用内存高达8G
在这里插入图片描述

虚拟机设置
在这里插入图片描述
在这里插入图片描述

https://developer.android.com/studio/platform?hl=zh-cn
https://adtxl.com/index.php/archives/85.html
https://blog.csdn.net/u011897062/article/details/133065217

### 如何在Android Studio使用CC2650进行开发 #### 设置环境准备 为了能够在Android Studio环境中顺利集成并使用CC2650模块,开发者需先确认已安装适当版本的工具链。对于基于C/C++的嵌入式设备编程而言,通常会涉及到NDK(Native Development Kit)。考虑到当前使用Android Studio 4.0默认配置的是cmake version 3.10.2[^1],建议保持一致以减少兼容性问题。 #### 添加硬件支持包 针对TI CC2650这类特定芯片的支持,官方提供了专门的软件开发套件(SDK),其中包含了必要的驱动程序以及示例代码。这些资源可以通过SDK Manager中的“Additional SDK Tools”部分获取到。值得注意的是,在较新的Android Studio版本(如4.2.2及以上)[^2]里,可能已经预集成了更多种类的外设库文件,但仍推荐手动检查是否有最新版可用。 #### 创建项目结构 创建一个新的原生活动(Native Activity)工程模板作为起点是比较好的做法。这一步骤能够自动设置好基本的JNI接口框架,并允许直接编写C/C++源码而无需过多额外配置工作。如果计划深入修改内核级功能,则可考虑采用ASfP平台来进行更底层的操作[^3];不过一般情况下,默认的应用层API足以满足大多数蓝牙通信需求。 #### 编写交互逻辑 当一切就绪后,便可以在`cpp/`目录下新增相应的实现函数来控制CC2650传感器节点的行为模式。例如连接管理、数据读取等功能均能通过调用Bluetooth API完成。另外,若应用程序依赖第三方服务分享机制的话,记得提前执行类似如下所示的初始化语句: ```java // Java侧初始化ShareSDK实例 public class MyApplication extends Application { @Override public void onCreate() { super.onCreate(); ShareSDK.init(this, "your_app_key"); // 替换成实际申请得到的密钥 } } ``` 上述过程仅提供了一个大致的工作流程概述,具体细节还需参照官方文档说明进一步探索和完善。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值