GithubHelp home page GithubHelp logo

alibaba / atlas Goto Github PK

View Code? Open in Web Editor NEW
8.1K 412.0 1.5K 82.52 MB

A powerful Android Dynamic Component Framework.

License: Apache License 2.0

CMake 0.02% Makefile 0.24% Shell 0.06% C 9.94% C++ 25.74% Assembly 0.33% Python 0.01% Java 59.87% JavaScript 0.19% CSS 0.44% HTML 3.16% Kotlin 0.01%
atlas android dynamic

atlas's Introduction

Atlas

license Release Version Release Version

A powerful Android Dynamic Component Framework.

Atlas is an Android client-side containerization framework. we call it android dynamic component framework.

Atlas provides decoupled, component, and dynamic support. Atlas covers various issues in the project coding period, Apk run-time and follow-up operation and maintenance.

In the project period, Atlas enable engineers independent development, independent debug, because their project were physical isolation.

In the apk run-time, Atlas has complete component life cycle, class isolation and other mechanisms.

In the operation and maintenance period, Atlas provide rapid incremental update and rapid upgrade capacity.

Atlas put the work into the project period as much as possible, to ensure runtime simple and stable, maintenance easy.


Compared with multidex solution, Atlas not only solved the limitation of the method count(65535), but also clarified the boundary of development, provied the powerful capabilities for Android development, such as Parallel Iteration, Rapid Development, Flexible Release, Dynamically Update, Quick Fix Online Failure.

Unlike some Android plugin frameworks, Atlas is a component framework (we call it Bundle), Atlas is not a multi-process framework.


You can see there were three main library in this project (atlas-core/atlas-update/atlas-gradle-plugin)

  • atlas-core: This is client-side core library, it's job is to install each bundle, load the classes and resources on-demand when runtime.
  • atlas-update: This is client-side update library, which provide dexmerge capacity for update or upgrade.
  • atlas-gradle-plugin: This is Android Studio Gradle Plugin for engineers developing in project period, because we change some android default package mechanisms, include android aapt atlas-aapt.

Use Atlas

  • Demo
  • Doc: English, 中文
  • DingTalk im group: Scan the follow QR code or Search group 11727755 using DingTalk(钉钉) app. dingtalk.jpg

Support


Atlas support all Android version from Android 4.0 to 9.0.

Follow is support status.

Runtime Android Version Support
Dalvik 2.2 Not Test
Dalvik 2.3 Not Test
Dalvik 3.0 Not Test
Dalvik 4.0-4.4 Yes
ART 5.0 Yes
ART 5.1 Yes
ART M Yes
ART N Yes
ART 8.0 Yes
ART 9.0 Yes

atlas's People

Contributors

alancheen avatar buptlingfeng avatar flyeek avatar hwjump avatar idev01 avatar intersimone999 avatar jiawulu avatar jiejingzhang avatar jiqimaogou avatar kzjeef avatar lilongaaaa avatar lirenlong avatar liuzxc avatar lucky-chen avatar nitrohsu avatar nlmartian avatar puke3615 avatar simonla avatar sospartan avatar sunlongda avatar wispy316 avatar zjutyujf avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

atlas's Issues

新Demo无法运行 Unable to delete flie

编译时没错 直接运行到手机就报这个错 手动也无法删除该文件
Error:Execution failed for task ':app:clean'.

Unable to delete file: D:\AndroidCode\atlas-master\atlas-demo\AtlasDemo\app\build\intermediates\exploded-aar\com.android.support\animated-vector-drawable\25.3.0\jars\classes.jar

[demo]:update.json问题,"version":"1.0.0@unspecified"

{
"baseVersion":"1.0.0",
"updateBundles":[
{
"dependency":[],
"isMainDex":false,
"name":"com.taobao.firstbundle",
"version":"1.0.0@unspecified"
},
{
"isMainDex":true,
"name":"com.taobao.maindex",
"version":"[email protected]"
}
],
"updateVersion":"1.0.1"
}
这个版本为什么是unspecified啊,而且在dependencyTree-debug.json文件中

"awbs":{
"AtlasDemo:remotebundle:unspecified@awb":[],
"AtlasDemo:publicbundle:unspecified@awb":[],
"AtlasDemo:firstbundle:unspecified@awb":[],
"AtlasDemo:secondbundle:unspecified@awb":[
"AtlasDemo:secondbundlelibrary:unspecified@aar"
]
}
这个也是unspecified的,
动态部署的时候都不成功

[feature]:为什么不支持 abiFilters "armeabi-v7a"的so打包

atlas什么时候支持 armeabi-v7a中的so打包,这个应该很简单吧?我的应用只保留了 armeabi-v7a的so,尤其是一些三方的依赖的aar中也只提供 armeabi-v7a,要改回armeabi这个第三方的aar都得重新提供包,这个也太麻烦吧

        ndk {
            abiFilters "armeabi-v7a"
        }

atlas的so都没有打进包中,导致无法运行,armeabi-v7a是常用的架构应该提供支持吧

buildApk.sh 构建异常

以下是log
bogon:app JellyHell$ sh buildApk.sh -stacktrace
(1) 构建app, 生成 apk 和 ap, 同时把 ap 文件发布到本地仓库
Parallel execution with configuration on demand is an incubating feature.

FAILURE: Build failed with an exception.

  • Where:
    Build file '/Users/JellyHell/Desktop/atlas/atlas-demo/app/build.gradle' line: 15

  • What went wrong:
    A problem occurred evaluating root project 'app'.

java.lang.UnsupportedClassVersionError: com/taobao/android/builder/AtlasApplicationPlugin : Unsupported major.minor version 52.0

  • Try:
    Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.

BUILD FAILED

Total time: 1.305 secs
cat: build/publications/maven/pom-default.xml: No such file or directory
ap 模块发布到本地仓库成功
(3) 安装基线apk
adb install -r build/outputs/apk/app-debug.apk

执行buildTpatch.sh时报错

FAILURE: Build failed with an exception.

  • What went wrong:
    Execution failed for task ':prepareDebugAP'.

Could not resolve all dependencies for configuration 'detachedConfiguration1'.
Could not find com.taobao.android.atlasdemo:AP-debug:1.0.0.
Searched in the following locations:
file:/Users/wangzihang/android_sdk/android-sdk/extras/m2repository/com/taobao/android/atlasdemo/AP-debug/1.0.0/AP-debug-1.0.0.pom
file:/Users/wangzihang/android_sdk/android-sdk/extras/m2repository/com/taobao/android/atlasdemo/AP-debug/1.0.0/AP-debug-1.0.0.ap
file:/Users/wangzihang/android_sdk/android-sdk/extras/google/m2repository/com/taobao/android/atlasdemo/AP-debug/1.0.0/AP-debug-1.0.0.pom
file:/Users/wangzihang/android_sdk/android-sdk/extras/google/m2repository/com/taobao/android/atlasdemo/AP-debug/1.0.0/AP-debug-1.0.0.ap
file:/Users/wangzihang/android_sdk/android-sdk/extras/android/m2repository/com/taobao/android/atlasdemo/AP-debug/1.0.0/AP-debug-1.0.0.pom
file:/Users/wangzihang/android_sdk/android-sdk/extras/android/m2repository/com/taobao/android/atlasdemo/AP-debug/1.0.0/AP-debug-1.0.0.ap
file:/Users/wangzihang/.m2/repository/com/taobao/android/atlasdemo/AP-debug/1.0.0/AP-debug-1.0.0.pom
file:/Users/wangzihang/.m2/repository/com/taobao/android/atlasdemo/AP-debug/1.0.0/AP-debug-1.0.0.ap
https://jcenter.bintray.com/com/taobao/android/atlasdemo/AP-debug/1.0.0/AP-debug-1.0.0.pom
https://jcenter.bintray.com/com/taobao/android/atlasdemo/AP-debug/1.0.0/AP-debug-1.0.0.ap
Required by:
com.taobao.android.atlasdemo:app:1.0.1

  • Try:
    Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.

BUILD FAILED

demo建议

你好,我建议你们多弄几个Bundle,帮我们展示下Bundle之间的调用,怎么依赖的,Bundle如何可以调用的宿主的方法资源,谢谢了,俺是菜鸟

bundle工程必须应用'maven-publish'插件?

我在自己编写demo时,建立的一个bundle项目仿照demo应用了'com.taobao.atlas.library'插件,编译报了个Task with name 'publish' not found in project ':bundlea'.
错误。但是加上“apply plugin: 'maven-publish”就好了。
问题来了,为什么bundle项目一定要maven-publish插件,难道bundle只能通过maven方式被host应用依赖吗?

运行FirstBundle报错

Error:Execution failed for task ':bundleDebug'.

java.lang.NullPointerException (no error message)

Demo太过简陋了

demo里充其量只体现出了bundle的更新,文档中所说的bundle依赖,bundle之间的接口,模块的划分等等都完全没有体现出来啊

buildApk.sh构建错误

_我构建完了后,跑通后,又修改了下firstbundle加了个activity,想更新以前的,然后再去调buildApk.sh,就报下面的错误了,是不能覆盖吗?

qq 20170316180128

这是什么错误

Execution failed for task ':prepareDebugAP'.

Could not resolve all dependencies for configuration 'detachedConfiguration1'.
Could not find com.taobao.android.atlasdemo:AP-debug:1.0.0.
Searched in the following locations:
file:/Users/huai418/Documents/androidSDK/extras/m2repository/com/taobao/android/atlasdemo/AP-debug/1.0.0/AP-debug-1.0.0.pom
file:/Users/huai418/Documents/androidSDK/extras/m2repository/com/taobao/android/atlasdemo/AP-debug/1.0.0/AP-debug-1.0.0.ap
file:/Users/huai418/Documents/androidSDK/extras/google/m2repository/com/taobao/android/atlasdemo/AP-debug/1.0.0/AP-debug-1.0.0.pom
file:/Users/huai418/Documents/androidSDK/extras/google/m2repository/com/taobao/android/atlasdemo/AP-debug/1.0.0/AP-debug-1.0.0.ap
file:/Users/huai418/Documents/androidSDK/extras/android/m2repository/com/taobao/android/atlasdemo/AP-debug/1.0.0/AP-debug-1.0.0.pom
file:/Users/huai418/Documents/androidSDK/extras/android/m2repository/com/taobao/android/atlasdemo/AP-debug/1.0.0/AP-debug-1.0.0.ap
file:/Users/huai418/.m2/repository/com/taobao/android/atlasdemo/AP-debug/1.0.0/AP-debug-1.0.0.pom
file:/Users/huai418/.m2/repository/com/taobao/android/atlasdemo/AP-debug/1.0.0/AP-debug-1.0.0.ap
https://jcenter.bintray.com/com/taobao/android/atlasdemo/AP-debug/1.0.0/AP-debug-1.0.0.pom
https://jcenter.bintray.com/com/taobao/android/atlasdemo/AP-debug/1.0.0/AP-debug-1.0.0.ap
Required by:
com.taobao.android.atlasdemo:app:1.0.1

manifest中没有指定自己的Application类编译出的apk无法安装

自己新建的Demo里,没有指定Applicaion类,manifest如下,

<application
        android:allowBackup="false"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        ...
</application>

编译后的apk文件无法安装,解包发现

<application name="android.taobao.atlas.startup.AtlasBridgeApplication" android:allowBackup="false" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:supportsRtl="true" android:theme="@style/AppTheme"> 

错误的地方:name="android.taobao.atlas.startup.AtlasBridgeApplication"

执行buildTpatch.sh报错

日志是这样的:

  • What went wrong:
    Execution failed for task ':atlas-demo:app:prepareDebugAP'.

Could not resolve all dependencies for configuration 'detachedConfiguration1'.
Could not find com.taobao.android.atlasdemo:AP-debug:1.0.0.
Searched in the following locations:
file:.../android-sdk-macosx/extras/m2repository/com/taobao/android/atlasdemo/AP-debug/1.0.0/AP-debug-1.0.0.pom
file:.../android-sdk-macosx/extras/m2repository/com/taobao/android/atlasdemo/AP-debug/1.0.0/AP-debug-1.0.0.ap
file:.../android-sdk-macosx/extras/google/m2repository/com/taobao/android/atlasdemo/AP-debug/1.0.0/AP-debug-1.0.0.pom
file:.../android-sdk-macosx/extras/google/m2repository/com/taobao/android/atlasdemo/AP-debug/1.0.0/AP-debug-1.0.0.ap
file:.../android-sdk-macosx/extras/android/m2repository/com/taobao/android/atlasdemo/AP-debug/1.0.0/AP-debug-1.0.0.pom
file:.../android-sdk-macosx/extras/android/m2repository/com/taobao/android/atlasdemo/AP-debug/1.0.0/AP-debug-1.0.0.ap
file:.../.m2/repository/com/taobao/android/atlasdemo/AP-debug/1.0.0/AP-debug-1.0.0.pom
file:.../.m2/repository/com/taobao/android/atlasdemo/AP-debug/1.0.0/AP-debug-1.0.0.ap
https://jcenter.bintray.com/com/taobao/android/atlasdemo/AP-debug/1.0.0/AP-debug-1.0.0.pom
https://jcenter.bintray.com/com/taobao/android/atlasdemo/AP-debug/1.0.0/AP-debug-1.0.0.ap
Required by:
com.taobao.android.atlasdemo:app:1.0.1

Release 开启混淆后,apk不能正常运行

  1. demo问题的issue格式: [demo]:title

    使用Release, 开启混淆后,apk不能正常运行.报错

  2. 容器功能接入或者如何使用的答疑:[use]:title

  3. 提新需求的格式:[feature]:title

运行demo,点击动态部署后提示“更新失败,bundle input is wrong”不知道是为什么,生成的update.json 和新的patch

{
"baseVersion":"1.0.0",
"updateBundles":[
{
"dependency":[],
"isMainDex":false,
"name":"com.taobao.firstbundle",
"version":"[email protected]"
},
{
"isMainDex":true,
"name":"com.taobao.maindex",
"version":"[email protected]"
}
],
"updateVersion":"1.0.1"
}
update.json

[email protected] 这个是改了下firstbundle后 ,再一次构建产生的,fristbundle中只是改了文本,和版本号

[feature]:bundle的R类字段非final

我反编译发现bundle的R文件的所有字段都是非final的,这样不能替换为常量会对性能有影响吧?我看手淘里bundle的R里面的字段都是static final的。

gradle插件的版本

目前默认是Android gradle plugin version 是2.1,是否可以自己指定版本号? 比如官方的apt在2.2才支持。 如果不支持,什么时候会更新呢?

App工程里面的UpdateInfo字段和生成的的patchs.json里面的字段不一样也?

这个是patchs.json文件:{ "baseVersion": "1.0.0", "diffBundleDex": true, "patches": [ { "bundles": [ { "applicationName": "com.taobao.firstbundle.FirstBundleApplication", "artifactId": "firstbundle", "dependency": [], "mainBundle": false, "newBundle": false, "pkgName": "com.taobao.firstbundle", "version": "1.0.1" }, { "applicationName": "android.taobao.atlas.startup.AtlasBridgeApplication", "mainBundle": true, "name": "libcom_taobao_maindex", "newBundle": false, "pkgName": "com.taobao.demo", "version": "1.0.1" } ], "fileName": "[email protected]", "patchVersion": "1.0.1", "targetVersion": "1.0.0" } ] }

然后UpdateInfo类是这样的:
` /**
* 当前的客户端版本
/
public String baseVersion;
/
*
* 更新后的客户端版本
*/
public String updateVersion;

/**
 * 更新的模块列表信息
 */
public List<Item> updateBundles;

public File workDir = new File(RuntimeVariables.androidApplication.getCacheDir(), "atlas_update");

public class UpdateInfo implements Serializable{

/**
 * 当前的客户端版本
 */
public String baseVersion;
/**
 * 更新后的客户端版本
 */
public String updateVersion;

/**
 * 更新的模块列表信息
 */
public List<Item> updateBundles;

public File workDir = new File(RuntimeVariables.androidApplication.getCacheDir(), "atlas_update");

/**
 * 更新的模块信息
 */
public static class Item implements Serializable {
    /**
     * 是不是主dex
     */
    public boolean isMainDex;
    /**
     * bundle 的名称
     */
    public String name;
    /**
     * bundle 版本信息
     */
    public String version;
    /**
     * bundle 的代码仓库对应的版本
     */
    public String srcVersion;
    /**
     * 依赖的 bundle 列表
     */
    public List<String> dependency;
}

}`

Getting more done in GitHub with ZenHub

Hola! @CrazyDudo has created a ZenHub account for the alibaba organization. ZenHub is the only project management tool integrated natively in GitHub – created specifically for fast-moving, software-driven teams.


How do I use ZenHub?

To get set up with ZenHub, all you have to do is download the browser extension and log in with your GitHub account. Once you do, you’ll get access to ZenHub’s complete feature-set immediately.

What can ZenHub do?

ZenHub adds a series of enhancements directly inside the GitHub UI:

  • Real-time, customizable task boards for GitHub issues;
  • Multi-Repository burndown charts, estimates, and velocity tracking based on GitHub Milestones;
  • Personal to-do lists and task prioritization;
  • Time-saving shortcuts – like a quick repo switcher, a “Move issue” button, and much more.

Add ZenHub to GitHub

Still curious? See more ZenHub features or read user reviews. This issue was written by your friendly ZenHub bot, posted by request from @CrazyDudo.

ZenHub Board

你们这个DEMO简直就是给8年+的人看的

altas的大神们,能否在开源之后对于demo和上手指导方面照顾一下我们普通的程序员,真的是无法看懂,不是一开始issue里链接了一个简书,我可能完全无法知道怎样去搭建项目,上手指南讲述的跟原理一样,还请在demo功能上以及doc的概述上尽可能的丰富一些。

支持加固吗

如果使用组件化,被***应用市场给强制加固,会不会对Atlas有影响

找不到依赖包Could not resolve dom4j:dom4j:2.0.

Error:A problem occurred configuring root project 'app'.

Could not resolve all dependencies for configuration ':classpath'.
Could not resolve dom4j:dom4j:2.0.
Required by:
:app:unspecified > com.taobao.android:atlasplugin:2.2.3.rc2
> Could not resolve dom4j:dom4j:2.0.
> Could not get resource 'https://jcenter.bintray.com/dom4j/dom4j/2.0/dom4j-2.0.pom'.
> Could not GET 'https://jcenter.bintray.com/dom4j/dom4j/2.0/dom4j-2.0.pom'.
> jcenter.bintray.com

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.