发布;
在阅读下面内容前,先假设是对 $ANDROID_HOME/device/sample 进行修改。
一、添加模块(Add Module)
在自己 product-name 目录下建立 frameworks 文件夹,从 sample 中拷贝 Android.mk 文件到 frameworks。
依照 sample 的方式,在 frameworks 路径下,建立 PlatformLibrary 文件夹,再次从 sample/frameworks 中拷贝 Android.mk 文件,并将其中的 LOCAL_MODULE 和 LOCAL_DROIDDOC_OPTIONS 修改为自己中意的名字。C这里值得注意的是,LOCAL_MODULE 变量被定义两次,第一次是 library,第二次是 document。
依照 sample/frameworks/com.example.android.platform_library.xml 的形式创建自己的 XML 文件,文件名称、XML 内容中 name 和 file 保持和 LOCAL_MODULE(library) 一致。
完成上述操作之后,建立 java 文件夹,并将自己创建的源文件(java)放入到其中,这里不再赘述。
二、添加 Overlay(Add Resoruce)
代码中可能需要访问图片、字符串等资源,但是这些在原有的 Android 中没有,因此需要想办法自行加入,Android 对此提供了两种方式。
第一种就是直接在 $ANDROID_HOME/framework/base/core/res/res 下进行操作,添加文件,追加字符串。这种方式虽然简单,但是破坏了原有的“纯洁性”,因此不予推荐。
第二种方式就是使用 overlay。在 product-name 目录下建立 overlay 文件夹,依照 framework 的结构建立各级目录,例如想添加图片,可以先依次建立 base/core/res/res/drawable,然后将图片置于其中,同样可以建立 layout 等文件夹。
如果要添加字符串或者 style 资源,就要稍微复杂一点,需要使用 add-resource 来让系统“明白”新添加的内容。
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<add-resource type="string" name="numwheel_year" />
<!-- Strings for number wheel -->
<string name="numwheel_year">年</string>
</resources>
如果没有 add-resource,则会遇到这样的信息:Resource at numwheel_year appears in overlay but not in the base package; use to add.
完了以后,就可以用使用 com.android.internal.R 来访问这些资源了
。
device.mk中有个DEVICE_PACKAGE_OVERLAYS指向的overlay文件夹的内容,在编译时会替换Android顶层文件夹下相同路径中的内容。这些需要替换的文件一般都是一些资源文件,比如wallpaper,icon或xml的配置文件。如下:
DEVICE_PACKAGE_OVERLAYS:= device/htc/anything/projectname/overlays
在overlays下的路径必须为在android顶层文件夹下需要替换的文件的相同路径,如:
.
├── frameworks
└── base
└── core
└── res
└── res
├── drawable
│ └── default_wallpaper.jpg
├── drawable-mdpi
│ ├── stat_bluetooth_off_cust.png
│ ├── stat_bluetooth_off.png
├── values
│ └── strings.xml
├── values-zh-rCN
│ └── strings.xml
└── values-zh-rTW
└── strings.xml
三、加入编译脚本(Add build script)
在自己 product-name 目录下建立 sdk_addon 文件夹,并依照 sample/sdk_addon 分别拷贝 manifest.xml 和 hardware.xml,注意 manifest.xml 中的内容必须要根据之前第一步的变更同步修改。
接下来最关键,也是最容易出错的环节到了,那就是修改自己 product 的 mk 文件,需要修改 PRODUCT_PACKAGES、PRODUCT_COPY_FILES、DEVICE_PACKAGE_OVERLAYS 的值,定义 PRODUCT_SDK_ADDON_NAME、PRODUCT_SDK_ADDON_COPY_FILES、 PRODUCT_SDK_ADDON_COPY_MODULES和PRODUCT_SDK_ADDON_DOC_MODULE。修改和定义的区别就在于, 前者使用”+=”,后者使用“:=”。这些变量的值可以参照sample示例。
由于 sample 的示例中没有出现 DEVICE_PACKAGE_OVERLAYS,所以我这里特别解释一下它的作用,除了刚才为 add-on 增加资源以外,它还起到的作用就是替换掉原来的framework中的资源,比如图片等等,惟一的要求就是必须建立和原来图片位置相同的路径。和 add-on 不同的是,如果你是替换原来资源,那么是不用 add-resource 的。DEVICE_PACKAGE_OVERLAYS 的值就是 overlay 文件夹的路径,不包含 $ANDROID_HOME,到 overlay
一级即可。
完成了修改以后,使用 make PRODUCT-product-name-sdk_addon 进行编译。当然也可以直接执行 make sdk_addon,但是需要注意在此之前,你需要使用 chooseproduct 指定 product-name。执行完毕以后,会得到一个 zip 文件,这个就是 add-on 了。
四、发布(Relase)
完成上面的环节以后,剩下临门一脚了。所谓发布,就是通过诸如 HTTPD 一类的 HTTP SERVER 将资源公布出去。从 http://httpd.apache.org 下载 httpd,如何安装以及修改监听端口可参看其 document,在此不予赘述。
现在把刚才生成的 zip 文件,放置到 htdoc 目录下。并且创建一个 repository.xml,其内容和形式参看 https://dl-ssl.google.com/android/repository/repository.xml,我把它删减一下得到以下内 容:
<sdk:sdk-repository
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:sdk="http://schemas.android.com/sdk/android/repository/2"><sdk:add-on>
<sdk:name>Google APIs</sdk:name>
<sdk:api-level>3</sdk:api-level>
<sdk:vendor>Google Inc.</sdk:vendor>
<sdk:revision>03</sdk:revision>
<sdk:description>Android + Google APIs</sdk:description>
<sdk:desc-url>http://developer.android.com/</sdk:desc-url>
<sdk:uses-license ref="android-sdk-license" />
<sdk:archives>
<sdk:archive os="any">
<sdk:size>34908058</sdk:size>
<sdk:checksum type="sha1">1f92abf3a76be66ae8032257fc7620acbd2b2e3a</sdk:checksum>
<sdk:url>google_apis-3-r03.zip</sdk:url>
</sdk:archive>
</sdk:archives>
<sdk:libs>
<sdk:lib>
<sdk:name>com.google.android.maps</sdk:name>
<sdk:description>API for Google Maps.</sdk:description>
</sdk:lib>
</sdk:libs>
</sdk:add-on><sdk:license type="text" id="android-sdk-license">
This is the Android Software Development Kit License Agreement.
</sdk:license>
</sdk:sdk-repository>
接下来的事情,就是替换掉里面的 Google 信息为自己,大部分可以从它们的名称中理解其含义,例如 size 是指文件大小,你可以使用ls Cl来查看文件大小。checksum 则要麻烦一些,执行 sha1sum ZIP.zip,即使用 sha1 对刚才生成 zip 文件生成校验码。
修改完成以后,通过浏览器访问 http://IP-address:port/repository.xml,确认是否 OK。确认以后,打开
Android SDK and AVD Manager,点击左侧 Available Packages,选择 “Add Add-on Sites” 填入URL,接下来的安装就不费口舌了。完成以后,你可以在 sdk 下的 add-ons 目录下看到刚刚安装的 add-on。
捎带提一下,应用开发方面使用该 add-on 时,调整工程的 Project Build Target 设定即可。
相关推荐
4.2.7 Packet Tracer - Configure Router-on-a-Stick Inter-VLAN Routing Cisco Packet Tracer 思科模拟器 正确答案文件 可直接上交正确答案文件 本答案版权归mewhaku所有,严禁再次转载!!! Copyright @...
15.6.1-packet-tracer---configure-ipv4-and-ipv6-static-and-default-routes_zh-CN (1).pka
6.8.1 Packet Tracer - Configure NAT for IPv4 Cisco Packet Tracer 思科模拟器 正确答案文件 可直接上交正确答案文件 本答案版权归mewhaku所有,严禁再次转载!!! Copyright @mewhaku 2022 All Rights ...
./configure --prefix=/usr/local/android --host aarch64-linux-android --with-pic --disable-shared make -j4;make install 在wsl下面用ndk20编译的, aarch64-linux-android29-clang++ aarch64-linux-android-...
2.7.2-packet-tracer---configure-single-area-ospfv2---physical-mode_zh-CN.pka
openCV4.6.0+android-ndk-r22-windows-x86_64编译的arm64-v8a动、静态库 https://blog.csdn.net/aggs1990/article/details/124527556 CSDN审核可能较慢,如无法下载,可以过段时间再回来看下 仅供相关爱好者交流使用...
rootroot@rootroot-virtual-machine:~/wyb/libxml2-2.9.2$ ./configure --prefix=/home/rootroot/wyb/libxml2-2.9.2/install CC=arm-linux-gcc LD=arm-linux-ld --enable-shared --enable-static --host=arm-linux -...
ffmpeg学习笔5 编译ffmpeg(Win10+android-ndk-r22)生成的arm64-v8a动、静态库 https://blog.csdn.net/aggs1990/article/details/124577714 CSDN审核可能较慢,如无法下载,可以过段时间再回来看下 仅供相关爱好者...
右击目标工程,Build Path -> Configure Build Path -> Library选项下 -> Android 4.1 -> android.jar -> Source attachment --> Edit --> External Folder 选择这个文件目录C:\Program Files\Android\android-sdk\...
Simply right click on ./libs and select Build Path > Configure Build Path. Choose Java Build Path and select the Libraries tab. Click add Jars and select phonegap.jar. If you are building an Android ...
ffmpeg FULL SDK V3.2 (2008-04-12) -------------------------------------------------------------------------------- 继ffmpeg工程组(http://www.ffmpeg.com.cn)2006年5月5日发布ffmpeg+x264 SDK V...
You will need to configure your computer to enable Wake On Lan first. Wake On Lan Help Please refer to the following links to help you get started with Wake On Lan. A mini-tutorial for Windows/Debian:...
configure account password-policy lockout-on-login-failures 81 configure account password-policy maxage 82 configure account password-policy min-pwd-length 83 configure banner 85 configure banner ...
vmware-vsphere-install-configure-manage-v70
log的第三方demo Why logging with Log4j ...There is a project called android-logging-log4j, which provides a convenient way to configure the log4j system properly. It also provides an appender for LogCat.
./configure -confirm-license -opensource -debug-and-release -static -prefix ../build -no-opengl -nomake tests -no-compile-examples -nomake examples -qt-xcb ———————————————— 原文链接:...
This is a guide to get the alpha release of Android Analysis GUI. It has only been tested on Linux. Install Qt SDK. (1)Download the QtSDK (Qt_SDK_Lin32_offline_v1_1_1_en.run from ...
nodric 蓝牙mesh源码, An early alpha version of the Bluetooth Mesh specification, this library will allow you to ...nRF Mesh for Android is supported on Android devices running Android 4.3 and onwards
教你如何配置基本的交换机和路由器,和排除一些故障
尝试尽快通过迁移到Android Studio,以获取Stickers SDK的最新更新和更简单的集成。 关于 StickerPipe是适用于Android平台的Stickers SDK。 此样本演示了如何在Eclipse IDE的聊天中添加标签。 安装方式 进口 首先,...