当前位置: 首页 > wzjs >正文

搜狗提交网站收录入口seo站长综合查询

搜狗提交网站收录入口,seo站长综合查询,wordpress api,网站策划书结尾背景描述:起初Android Studio创建的apk工程,为了方便系统版本发布和后期维护需要同时支持两种构建方式:Android Studio Gradle构建 IDE界面环境,对习惯java环境变成的友好、UI设计方便看效果Android15系统构建时自动构建 So…

背景描述:

起初Android Studio创建的apk工程,为了方便系统版本发布和后期维护需要同时支持两种构建方式:

  • Android Studio Gradle构建       IDE界面环境,对习惯java环境变成的友好、UI设计方便看效果
  • Android15系统构建时自动构建 Soong构建   这种构建apk源码放在aosp系统源码中,作为一个普通的module来进行编译构建。对于平时中心在系统集成的同学友好,对版本管理也方便。

由于Android Studio创建的app工程有固定的文件结构,和Soong构建时文件结构组织会有些差异,所以做两套构建系统的兼容,主要从以下几个方面进行:

  1. 调整apk源码的目录结构,兼容Gradle构建和Soong构建
  2. 添加Soong构建相关的脚本
  3. 调整apk源码文件(包括ui相关脚本、res文件等), 使兼容Gradle构建和Soong构建

下面以具体例子来讲解自己是如何实现Androd Studio创建的CameraDemo.apk同时支持:

  • Windows11 Android Studio构建
  • Linux ubuntu aosp源码构建

1.Android Studio创建的CameraDemo Project

Android Studio创建一个新的工程,工程名为camerademo, 创建完成的工程文件结构如下:

├── app
│   ├── build.gradle
│   ├── libs
│   ├── proguard-rules.pro              
│   └── src
│       ├── androidTest/java/com/example/camerademo //测试程序目录
│       ├── main
│       │   ├── AndroidManifest.xml                 //声明camerademo所需权限等内容
│       │   ├── java/com/example/camerademo         //camerademo程序源码.java目录
│       │   └── res                                 //camerademo程序资源文件(ui, layout等)目录
│       └── test/java/com/example/camerademo        //test程序目录
├── build.gradle                                    //下边是gralde构建相关的脚本文件
├── gradle                              
│   └── wrapper
│       ├── gradle-wrapper.jar
│       └── gradle-wrapper.properties
├── gradle.properties
├── gradlew
├── gradlew.bat
├── local.properties
└── settings.gradle

2.调整CameraDemo目录结构,兼容Soong构建

Soong编译的模块,构建目录结构如下:

aosp/vendor/amlogic/package/camerademo/
├── Android.bp                            //camerademo soong构建的脚本
├── AndroidManifest.xml                   //声明camerademo应用所需的权限和Activity
├── res                                   //camerademo应用资源文件
└── src/com/example/android/camera2demo/  //camerademo应用程序代码目录

 基于上边Android Studio创建的camerademo工程,修改出兼容上边Soong编译模块目录结构, 修改后的兼容结构如下:

├── app
│   ├── build.gradle
│   ├── libs
│   ├── proguard-rules.pro              
│   └── src
│       ├── androidTest/java/com/example/camerademo //测试程序目录
│       ├── main
│       │   ├── AndroidManifest.xml                 //【gradle构建】声明camerademo所需权限等内容
│       │   ├── java/com/example/camerademo         //【gradle/soong构建】camerademo程序源码.java目录
│       │   └── res                                 //【gradle/soong构建】camerademo程序资源文件(ui, layout等)目录
│       └── test/java/com/example/camerademo        //test程序目录
├── build.gradle                                    //下边是gralde构建相关的脚本文件
├── gradle                              
│   └── wrapper
│       ├── gradle-wrapper.jar
│       └── gradle-wrapper.properties
├── gradle.properties
├── gradlew
├── gradlew.bat
├── local.properties
├── settings.gradle
├── Android.bp                                     //【soong构建】构建配置脚本
├── AndroidManifest.xml                            //【soong构建】声明camerademo所需权限、Activity等
├── CleanSpec.mk                                   //【soong构建】make clean脚本  
├── src
│   └── com -> ../app/src/main/java/com/           //【soong构建】实现源码文件的软连接
├── res -> app/src/main/res                        //【soong构建】实现资源文件的软连接
└── keys                                           //【soong构建】签名证书文件├── com.example.camerademo.avbpubkey├── com.example.camerademo.pem├── camerademo.jks├── camerademo.p12├── camerademo.pk8└── camerademo.x509.pem                                    

如上,camerademo project为了兼容soong构建,添加了6个文件:

  • Android.bp 配置camerademo构建参数
  • AndroidManifest.xml 声明camerademo权限等内容
  • src/com和res 这两个软链接使soong构建和gradle构建时src(源文件、资源文件)是同一份,后期维护修改只针对一份代码。
  • keys 目录存放的是soong构建系统进行apk打包签名时用到的文件。

3.添加CameraDemo到Soong构建系统

将CameraDemo添加到aosp源码构建系统需要加两个内容:

  1. 将camerademo添加到系统镜像(注意:非prebuild构建)
  2. 添加camerademo的构建脚本,即Android.bp

添加到系统镜像

假设,我们是基于amlogic/yukawa构建系统镜像。

#当前文件:android/device/amlogic/yukawa/device-yukawa.mk
#在设备mk文件中添加:PRODUCT_PACKAGES += CameraDemo

如果之前镜像打包的时候已经带CameraDemo并且是prebuilt构建的,则需要从预构建列表中去掉对应的预构建配置:

camerademo soong构建之Android.bp

 对应camerademo工程目录中的./Android.bp文件:

//
// Copyright (C) 2013 Google Inc.
//package {// See: http://go/android-license-faqdefault_applicable_licenses: ["Android-Apache-2.0",],
}apex_key {name: "com.example.camera2demo.key",public_key: "keys/com.example.camerademo.avbpubkey",private_key: "keys/com.example.camerademo.pem",
}android_app_certificate {name: "com.example.camerademo.certificate",certificate: "keys/vk",
}apex_defaults {name: "com.example.camerademo.apex-defaults",key: "com.example.camerademo.key",certificate: ":com.example.camerademo.certificate",
}android_app {name: "CameraDemo",sdk_version: "current",manifest: "AndroidManifest.xml",optimize: {enabled: true,},defaults: ["com.example.camerademo.apex-defaults"],privileged: true,static_libs: ["androidx.appcompat_appcompat","com.google.android.material_material","androidx.legacy_legacy-support-v13","androidx.legacy_legacy-support-v4","androidx.core_core","android-ex-camera2-portability","xmp_toolkit","glide","guava","jsr305",],srcs: ["src/**/*.java",],resource_dirs: ["res",],product_specific: true,
}

camerademo soong构建之AndroidManifest.xml

对应camerademo工程目录中的./AndroidManifest.xml文件, 是从Android Studio构建使用的AndroidManifest.xml文件拿过来的:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"package="com.example.camera2demo"><uses-feature android:name="android.hardware.camera.autofocus" /><uses-permission android:name="android.permission.CAMERA" /><uses-permission android:name="android.permission.RECORD_AUDIO" /><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /><applicationandroid:allowBackup="true"android:icon="@mipmap/ic_launcher"android:label="@string/app_name"android:supportsRtl="true"android:theme="@style/Theme.AppCompat"><activityandroid:name=".MainActivity"android:exported="true"android:label="@string/app_name"><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity></application></manifest>

4.为CameraDemo添加签名配置

为了让soong构建的camerademo是签名后的.apk,需要为camerademo添加签名:

  1. 制作camerademo签名使用的密钥库文件
  2. camerademo构建脚本中添加签名配置

制作camerademo应用签名的密钥文件

有两种方法生成.jks文件:

  1. 使用Android Studio,通过界面配置生成.jks
  2. 使用jdk keytool命令行工具,生成.jks

方法1.使用Android Studio生成

注:根据自己需要配置好key,点击next选择应用的apk版本为debug或者relase。这是会生成一个.jks文件。

方法2.使用keytool命令行工具生成.jks

keytool工具是jdk自带的命令行工具,所以需要先配置好jdk环境。

$keytool -genkeypair -v -keystore my-release-key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias my-alias

参数说明:

  • -keystore:指定生成的.jks文件名
  • -alias:密钥别名(后续签名会用到)
  • -keyalg:密钥算法(推荐RSA)
  • -keysize:密钥大小(推荐2048)
  • -validity:有效期天数(单位:天)

执行后会提示输入密钥库密码、密钥密码以及一些个人信息。

将JKS转换成soong构建系统需要的格式

使用keytool和openssl将JKS转换为Android构建系统需要的格式:

##进入证书目录
#cd vendor/google/packages/apps/camerademo/keys##从JKS导出P12格式
#keytools -importkeystore \-srckeystore camerademo.jsk \-destkeystore camerademo.p12 \-deststoretype PKCS12##导出证书(PEM格式)
#openssl pkcs12 -in camerademo.p12 -nokeys -out camerademo.x509.pem##导出私钥(PKCS8格式)
#openssl pkcs12 -in camerademo.p12 -nodes -nocerts \| openssl pkcs8 -topk8 -outform DER -out camerademo.pk8 -nocrypt

 生成如下文件:

keys/├── camerademo.jks        # 原始文件├── camerademo.x509.pem   # 证书文件└── camerademo.pk8        # 私钥文件

camerademo构建脚本中添加签名配置

 即如上Android.bp中的如下内容:

5.aosp源码方式编译CameraDemo

$cd android
$source build/envsetup.sh
$lunch xx-userdebug
$make camerademo
##或者
$cd /vendor/amlogic/package/camerademo
$mm

http://www.dtcms.com/wzjs/70715.html

相关文章:

  • 波兰 政府网站建设google官网
  • 北京大兴网站制作推广四川专业网络推广
  • 东莞网站设计公司网络推广方式主要有
  • 建设网站备案与不备案区别seo常用方法
  • 深圳网站建设推进软件推广接单平台
  • 做啥网站seo网络排名优化方法
  • 金山做企业网站东莞市网站seo内容优化
  • node怎么做网站百度软件下载安装
  • 长沙长沙建设网站长尾词挖掘工具
  • 做旅游网站挣钱吗网站不收录怎么解决
  • 怎样在门户网站做 推广注册一个域名需要多少钱
  • seo就业前景怎么样seo网站优化排名
  • 深圳便宜网站建设产品推广平台
  • 佛山专业做网站公司百度最新人工智能
  • 背景响应式网站开发 css做电商需要什么条件
  • 公司网站设计有基本哪些要求做推广app赚钱的项目
  • 睢宁微网站开发我的百度账号
  • 长春网站建设厂家国内b2b十大平台排名
  • 动态网站设计的基本流程产品市场推广计划书
  • 杭州精品课程网站建设百度信息流推广教程
  • app定制开发谈判技巧山东网络推广优化排名
  • 官方网站弹幕怎么做友情链接的网站有哪些
  • 做旅游网站的公司网站seo方案撰写
  • wordpress向登录页面跳转百度seo教程视频
  • 公安网站服务平台在线视频观看免费视频22
  • 微商城网站建设平台如何做网站推广广告
  • 威海高新园区建设运营有限公司网站网络营销的优缺点
  • 自己做导航网站google推广妙招
  • 推广型网站建设模板网站开发是做什么的
  • 网站空间期限查询天津快速关键词排名