Android 13 DreamCamera2在Android studio中运行

1.将服务器中DreamCamera2代码复制到本地电脑

s_unisoc_22a\vendor\sprd\platform\packages\apps\DreamCamera2

2.下载build.gradle对应版本Android Studio 4.1.1

下载地址:https://developer.android.google.cn/studio/archive

3.用Android Studio 4.1.1打开DreamCamera2项目,如出现gradle无法下载的情况,请自备梯子

File > Open... > DreamCamera2 > New Window > OK > New Window

4.连接平板电脑,点击Run "DreamCamera2"

5.出现Duplicate resources报错,报错文件为资源key同名冲突,注释一个即可

资源文件一:res\values\dream_camera_arrays_photo_part.xml

资源文件二:res\values\dream_camera_arrays_video_part.xml

同名key为:pref_camera_filter_display_key_array

对比发现同名key对应内容也一致,因些注释上述两个资源文件中的一个pref_camera_filter_display_key_array即可

这里我们注释dream_camera_arrays_video_part.xml中的pref_camera_filter_display_key_array

6.再次点击Run "DreamCamera2"

7.出现依赖缺失报错如下:

Transform's input file does not exist: ...\DreamCamera2\studio_libs\android-ex-camera2-utils.jar

8.去android12源码out目录使用find out -name "android-ex-camera2-utils.jar"可快速查找到该文件所在位置

out/soong/.intermediates/frameworks/ex/camera2/utils/android-ex-camera2-utils/android_common/javac/android-ex-camera2-utils.jar

out/soong/.intermediates/frameworks/ex/camera2/utils/android-ex-camera2-utils/android_common/javac/android-ex-camera2-utils.jar.rsp

out/soong/.intermediates/frameworks/ex/camera2/utils/android-ex-camera2-utils/android_common/turbine/android-ex-camera2-utils.jar

out/soong/.intermediates/frameworks/ex/camera2/utils/android-ex-camera2-utils/android_common/turbine/android-ex-camera2-utils.jar.rsp

out/soong/.intermediates/frameworks/ex/camera2/utils/android-ex-camera2-utils/android_common/turbine-combined/android-ex-camera2-utils.jar

这里我们使用javac/android-ex-camera2-utils.jar文件,并将其放入编译报错所在路径studio_libs中

9.再次点击Run "DreamCamera2"

10.出现类缺失报错如下:

错误: 找不到符号

符号: 类 SystemProperties;

位置: 程序包 android.os

此类为framework.jar中的类,这里我们他用find out -name "framework-minus-apex.jar"

out/soong/.intermediates/frameworks/base/framework-minus-apex/android_common/aligned/framework-minus-apex.jar

out/soong/.intermediates/frameworks/base/framework-minus-apex/android_common/combined/framework-minus-apex.jar

out/soong/.intermediates/frameworks/base/framework-minus-apex/android_common/dex/framework-minus-apex.jar

out/soong/.intermediates/frameworks/base/framework-minus-apex/android_common/hiddenapi/framework-minus-apex.jar

out/soong/.intermediates/frameworks/base/framework-minus-apex/android_common/hiddenapi/unaligned/framework-minus-apex.jar

out/soong/.intermediates/frameworks/base/framework-minus-apex/android_common/jarjar/framework-minus-apex.jar

out/soong/.intermediates/frameworks/base/framework-minus-apex/android_common/turbine/framework-minus-apex.jar

out/soong/.intermediates/frameworks/base/framework-minus-apex/android_common/turbine/framework-minus-apex.jar.rsp

out/soong/.intermediates/frameworks/base/framework-minus-apex/android_common/turbine-combined/framework-minus-apex.jar

out/soong/.intermediates/frameworks/base/framework-minus-apex/android_common/turbine-jarjar/framework-minus-apex.jar

这里的们选一个文件最大的combined/framework-minus-apex.jar,并将其放入build.gradle文件中描述的目录,并重命名为framework.jar

options.compilerArgs.add("-Xbootclasspath/p:${ANDROID_TOP}/unisoc_framework/framework.jar")

11.再次点击Run "DreamCamera2"

12.出现已有软件版本号更新报错:The device already has a newer version of this application.

通过下面命令可以监控打开app的包名

C:\Users\WJS>adb shell am monitor

Monitoring activity manager... available commands:

(q)uit: finish monitoring

** Activity starting: com.android.camera2

通过包名获取apk安装位置

C:\Users\WJS>adb shell pm path com.android.camera2

package:/system_ext/app/DreamCamera2/DreamCamera2.apk

将apk下载到电脑上

C:\Users\WJS>adb pull /system_ext/app/DreamCamera2/DreamCamera2.apk .

/system_ext/app/DreamCamera2/DreamCamera2.apk: 1 file pulled, 0 skipped. 32.6 MB/s (7698606 bytes in 0.225s)

将apk拖入Android Studio中进行反编译可获取到其:

android:versionCode="20002000"

android:versionName="2.0.002"

将上述参数写入build.gradle中,同时点击Sync Now

11.再次点击Run "DreamCamera2"

12.签名不一致报错:The device already has an application with the same package but a different signature.

jks签名文件生成方法:

openssl pkcs8 -inform DER -nocrypt -in "platform.pk8" -out "key"

openssl pkcs12 -export -in "platform.x509.pem" -inkey "key" -out "p12" -password pass:123456 -name platform

openssl x509 -noout -fingerprint -in "platform.x509.pem"

keytool -importkeystore -deststorepass 123456 -destkeystore "platform.jks" -srckeystore "p12" -srcstoretype PKCS12 -srcstorepass 123456

platform.pk8和platform.x509.pem可以在build\target\product\security(debug签名)或者vendor\sprd\release\apk_key(release签名)找到

将生成的jks签名文件放入DreamCamera2/key目录中

在build.gradle中android节点下添加如下内容:

android {

signingConfigs {

bnd {

storeFile file('key/bnd/platform.jks')

storePassword '123456'

keyPassword '123456'

keyAlias 'platform'

}

}

...

buildTypes {

...

debug {

...

signingConfig signingConfigs.bnd

}

}

}

完成后点击Sync Now

13.再次点击Run "DreamCamera2", 成功使用Android Studio安装DreamCamera2到平板电脑上,并支持实时调试

相关推荐
sweetying1 小时前
30了,人生按部就班
android·程序员
用户2018792831672 小时前
Binder驱动缓冲区的工作机制答疑
android
真夜2 小时前
关于rngh手势与Slider组件手势与事件冲突解决问题记录
android·javascript·app
用户2018792831672 小时前
浅析Binder通信的三种调用方式
android
用户092 小时前
深入了解 Android 16KB内存页面
android·kotlin
火车叼位3 小时前
Android Studio与命令行Gradle表现不一致问题分析
android
前行的小黑炭5 小时前
【Android】 Context使用不当,存在内存泄漏,语言不生效等等
android·kotlin·app
前行的小黑炭6 小时前
【Android】CoordinatorLayout详解;实现一个交互动画的效果(上滑隐藏,下滑出现);附例子
android·kotlin·app
用户20187928316718 小时前
Android黑夜白天模式切换原理分析
android
芦半山18 小时前
「幽灵调用」背后的真相:一个隐藏多年的Android原生Bug
android