# OpenAtlas
**Repository Path**: largerfish/OpenAtlas
## Basic Information
- **Project Name**: OpenAtlas
- **Description**: OpenAtlas, Android Plugin Framework.
基于OSGI的Android 动态部署框架,开发已完成.
包括OpenAtlasCore和若干sample.
因为Github项目改名,重新导入。
因为资源冲突问题,需要patch AAPT,对资源进行分区,默认0x7f,如果使用sdk的aapt导致资源问题,这个可以用代理方式解决,那么问题来了,耦合性也就上来了。
http://www.oschina.net/p/atlasforandroid
- **Primary Language**: Unknown
- **License**: MIT
- **Default Branch**: master
- **Homepage**: https://github.com/bunnyblue/OpenAtlas
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 35
- **Created**: 2015-08-30
- **Last Updated**: 2020-12-19
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# OpenAtlas-非代理Android动态部署框架

[](https://android-arsenal.com/details/1/2056)
[](https://gitter.im/bunnyblue/OpenAtlas?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
Build Status [](https://travis-ci.org/bunnyblue/OpenAtlas)
OpenAtlasCore Android动态部署框架(你可以认为是插件,但又与插件不一样),与传统意义上的插件不一样
The MIT License (MIT) Copyright (c) 2015 Bunny Blue,achellies
代码遵循MIT License,Android动态部署框架,与通过代理方式实现的插件区别很大,用过代理的应该知道,代理方式会有各种莫名其妙的问题,有bug的话可以在issue里面提交。
### 鉴于仓库体积有点大,示例以及编译工具已经移动到 https://github.com/bunnyblue/OpenAtlasExtension
### Contributors
[achellies](https://github.com/achellies)
[BunnyBlue](https://github.com/bunnyblue)
## plugin start
从OpenAtlasExt下载aapt,建议使用build-tool 22版本,21不在维护,后面的小版本无所谓,主版本是22
编写动态部署的组件跟开发普通App没区别,只不过最后编译的时候需要注意资源分区.
### 组件资源注意事项
在gradle1.3之前的版本,通过aapt修改参数不太好处理,aapt修改的时候gradle插件1.3还没出来。
对于资源分区使用versionName做了个中转,这样把资源的Package-id传给aapt,当然现在方案很多了,后面重构,现在先这样。
比如说原来你这样写
宿主的0x7f这个一般不动。0x10到0x7e的都可以用,当然,0x0这一块的最好不要动,0x00是共享资源,跟你没啥关系基本上,0x01是Android系统资源, 0x02是WebView资源(Android 5.0新增)
```
versionName:"1.0.1"
```
现在versionName应该把package-id的十六进制附加在versionName后面,注意十六进制要小写
```
"1.0.10x7a"
```
那versionName不就变了吗?没,aapt在编译时候会去掉你添加的后4位。编译出来还是1.0.1
##Demo Apk & Gif演示动画
点我下载Demo.apk

# License
[]()
The MIT License (MIT) Copyright (c) 2015 Bunny Blue,achellies
##QA
###1 Activity必须在宿主的manifest注册?那这样动态部署有什么意义?
对,必须注册,动态部署跟代理插件的不同,代理插件不需要注册都知道什么原因,因为OpenAtlas startActivity的时候运行的是真正的Activity,而不是代理类.
你的业务量小得时候的确没意义,当你到源码超过50W行的时候你就能体会了。
###不要再open关于是否必须注册组件的issue,必须注册,这是OpenAtlas的限制。如果你想用代理方式的话不用注册,非代理方式必须注册。