Android Studio构建系统APP开发环境

APP开发


浏览:1329 次

前言

在Android系统中开发普通App并使用Android Studio非常方便。然而,开发系统App可能很困难,但经过一些配置后,它仍然会很简单。我们知道,系统App需要使用系统级签名,即平台签名,因为它们涉及一些系统API和系统权限。同时在Studio中直接调用系统API是不可行的。使用Android Studio开发系统App,我们需要解决这两个问题。

目录

配置前的准备

在Android Studio中调用系统API

通过Android Studio直接在设备上运行系统APP

实际解决方案

配置前的准备

可用的Android Studio

Android源代码环境,已编译

下载keytool importkeypair

在Android Studio中调用系统API

打开Android Studio并创建一个普通的Android项目。

进入Android源代码环境,设置/target/common/obj/JAVA_LIBRARIES/framework_intermediates/classes完全调试复制的Android项目的libs目录。jar被重命名为framework jar,并将其添加到环境变量中(在Android Studio中,选择framework.jar图标,右键单击并选择add as library)

将以下内容添加到生成中。Android项目的等级(不是App):

所有项目{

格勒。项目已评估{

tasks.withType(JavaCompile){

options.compilerArgs.add('-Xbootclasspath/p:yourpath/app/src/main/libs/framework.jar')

}

}

}

请注意,这与所有项目中的存储库级别相同。如果配置了此选项,则在编译App时将报告数组越界错误。这是因为App还将打印框架。当包装时,导致方法数量超过64K。

将以下内容添加到Appbuild.gradle的第一行

compileOnly文件('libs/framework.jar')

这句话的意思是打开框架。jar,并且在打包App时不会打包。这解决了方法数量超过64k的问题

当第四步完成时,您会发现当您调用系统API时,仍然会报告错误而不提示。这是因为Android Studio默认搜索的SDK具有比框架更高的优先级。你进口的罐子。应用内/应用内。iml在项目目录结构下,您可以将其放在末尾。

通过Android Studio直接在设备上运行系统App

事实上,有两种方法可以解决这个问题。首先,我们应该明确,Android源代码中的系统App之所以可以使用系统API和一些系统权限,是因为它在Android中。mk文件指定签名使用系统级平台。一、 e.本地证书:=平台直接在Android Studio中运行的App使用通用的开发者签名jks。第一个想法是,我们只需要将系统签名引入到jk中,下面也将对此进行介绍。另一个想法是,Android系统中的MAC机制,即SEAndroid,将通过两种机制设置Android程序进程的类型:签名和包名称。因此,我们可以考虑将我们开发的App的包名添加到根据这个想法设置SEAndroid类型的机制中。通过这种方式,您的App可以使用一些系统资源,而不会成为系统App。当然,第二种思维方式非常复杂,所以它只是一种思维方式。以下是第一个想法的实现方法。

在Android Studio中构建->;生成签名的APK,然后输入密码别名以生成自己的新jks文件。

在Android源代码环境中,输入build/target/product/security以放置平台。pk8、platform.x509.pem和步骤1中生成的jk放在一个目录中。

在Linux环境中,我们推荐ubuntu在下载keytool importkeypair之后,可以将keytool导入keypair可执行文件和jks放在一个目录中。实现/Keytool importkeypair-k jks文件名-p jks密码-pk8平台pk8-cert平台.x509.pem-别名jks的别名这允许您将系统签名引入jks。接下来,您只需要在Android Studio Run期间为App签名时使用此签名

在Android项目中,将以下内容添加到App的build.gradle中。

签名配置{

释放,释放{

storeFile文件(“yourpath/SignSys.jks”)

StorePassword“jks的密码”

KeyAlias“jks的别名”

KeyPassword'jks的密码'

}

调试{

storeFile文件(“yourpath/SignSys.jks”)

StorePassword“jks的密码”

KeyAlias“jks的别名”

KeyPassword'jks的密码'

}

}

应该注意的是,这一部分与defaultConfigs处于同一级别,如果你在Ubuntu环境中,如果你的jk在你的主目录中。请使用/home/username而不是~,否则您可能找不到