android模块化
1. Android BSP 开发中哪个模块比较有含金量
对硬件平台架构之类的比较熟悉,然后是对移动/TV平台熟悉,再一个重要的就是音频,视频,以及android BSP framework。
音频驱动,hal,framework,CODEC熟悉,以及语音调优,AEC,noise cancer, tunning的技术。
Android BSP, 基本可以理解为:
linux 驱动;
linux BSP (CPU,电源管理比驱动更深入的硬件支持包);
Android HAL层;
2. android 模块化 application应该放在哪
通过Intent你可以把一个应用当作你的高级库,使你的代码模块化易复用。例如:Android主屏幕中的拨号功能,就是通过Intent调用的拨号程序。 * method queries the package manager for installed packages that can * respond to an intent with the specified action. If no suitable package is * found, this method returns false.** @param context The application's environment. * @param action The Intent action to check for availability.** @return True if an Intent with the specified action can be sent and * responded to, false otherwise.*/public static boolean isIntentAvailable(Context context, String action) { final PackageManager packageManager = context.getPackageManager(); final Intent intent = new Intent(action); List<ResolveInfo list = packageManager.queryIntentActivities(intent, PackageManager.MATCH_DEFAULT_ONLY); return list.size() 0;}使用方法如下:@Overridepublic boolean onPrepareOptionsMenu(Menu menu) { final boolean scanAvailable = isIntentAvailable(this, com.google.zxing.client.android.SCAN); MenuItem item; item = menu.findItem(R.id.menu_item_add); item.setEnabled(scanAvailable); return super.onPrepareOptionsMenu(menu);}在这个例子中,如果条形码扫描应用没有安装菜单会被置灰,不可用。 另用简单的方式是在调用startActivity()时捕获ActivityNotFoundException, 但是这种方式只能异常发生后对用户进行提醒,不能提前告知用户,它可以用在提醒用户安装缺失应用的场合,你可引导用户去应用市场上去下载安装。
3. android studio中以library形式的模块在androidmanifest文件中怎么写
是的,不管是eclipse还是studio,都是在AndroidManifest.xml中增加权限。Android Studio 是一个Android开发环境,基于IntelliJ IDEA. 类似 Eclipse ADT,Android Studio 提供了集成的 Android 开发工具用于开发和调试。在IDEA的基础上,Android Studio 提供 : 1. 基于Gradle的构建支持。 2. Android 专属的重构和快速修复。 3. 提示工具以捕获性能、可用性、版本兼容性等问题。 4. 支持ProGuard 和应用签名。 5. 基于模板的向导来生成常用的 Android 应用设计和组件。 6. 功能强大的布局编辑器,可以拖拉 UI 控件并进行效果预览。
4. 如何使用ApkPlug进行Android平台下模块化开发
步骤1:注册ApkPlug官网账号:
打开Apkplug官网后,点击右上角的“注册”,在跳转页面填入相关信息,注册界面如下:
确认后注册成功,使用你的账号登录网站。你就可以用Apkplug开发应用了
END
步骤2:开发插件
Apkplug中的插件也是一个完整的apk,它与普通应用的区别有以下3点:
1, 插件assets目录下有一个plugin.xml文档,通过它可判断一个工程是主应用还是插件。
2, 插件有一个入口类BundleActivator
3, 插件会外部引用一个osgi.jar文件
开发插件的步骤有如下4步:
1,引入osgi.jar库文件
Apkplug中插件需要导入的库文件只有一个osgi.jar。
导入osgi.jar库文件需要注意一下
osgi.jar文件只能引用不能编译到apk文件中,否则会出现类冲突的情况
异常代码:had used a different Lorg/osgi/framework/BundleActivator; ring pre-verification。
osgi.jar包导入方法:
这文件在Apkplug SDK中可以找到。2,编写插件入口类BundleActivator
插件启动时首先调用BundleActivator,其功能类似android中的application类。
public class SimpleBundle implements BundleActivator
{
private BundleContext mcontext = null;
public void start(BundleContext context) throws Exception
{
System.err.println("你好我是插件,我将为你展示启动acitivty我已经启动了 我的BundleId为:"+context.getBundle().getBundleId());
}
public void stop(BundleContext context)
{
System.err.println("你好我是插件,我被停止了 我的BundleId为:"+context.getBundle().getBundleId());
}
}
3,编写plugin.xml配置文件
plugin.xml 是一个配置表,它跟AndroidManifest.xml作用类似。 plugin.xml文档放置在assets中即可 重要属性说明: Bundle-Name 插件名称 Bundle-SymbolicName 插件包名 -与应用packagename可一一对应 Bundle-Version 插件版本 -1.0.0 Bundle-Activator 插件入口 -与Appliction 类似 Bundle-Activity 插件界面 -多个Activity可用 , 分割 Bundle-Service 插件Service -多个Service可用 , 分割 (v2.0.0新增) Bundle-Receiver 插件广播 -多个广播类可用 , 分割 (v2.0.0新增)
4, 编译生成插件apk文件
插件工程中添加的文件目录结构如下:
最后编译运行插件工程,生成的apk文件即为插件文件
END
步骤3:开发主应用
Apkplug 主应用开发分两步集成:
1. 获取主应用授权AppAuth。
登录账号进入Apkplug后台后,切换到“应用授权页面”,按要求填写好应用信息,然后确定,你就拥有了一个等待开发的应用授权AppAuth。应用授权界面如下:
进入“授权列表”页面,点击“查看详情”链接,进入“应用详情界面”,就可以看到已申请的AppAuth,点击其后面的“复制”,即可直接复制AppAuth,如下图所示
2. 对接Apkplug SDK 导入相关库文件。
①配置应用权限
主应用需要几个基础的权限配置,请将以下的几个权限加入到主应用的AndroidManifest.xml中。
<!-- 插件平台需要的权限! -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.READ_PHONE_STATE">
</uses-permission>
另外将一下加入到<application></application>节点中
<!-- 插件平台需要的配置! -->
<activity
android:name="org.apkplug.app.apkplugActivity"
android:theme="@style/android:Theme.Light"
android:configChanges="orientation|keyboardHidden"
/>
最后将我们从Apkplug管理后台申请到的AppAuth加入到配置文件中。
<meta-data android:name="apkplug-auth" android:value="xxxxxxxx" ></meta-data>
注:由于3.2.2节中我们直接复制了AppAuth,此处直接粘贴到AndroidManifest文档中。
如下图:
②导入SDK库文件
主应用需要导入两个文件,将其放入libs目录中即可。
1, libndkfoo.so
2, Bundle2.0.0.jar
如下图:
这两个库文件在Apkplug SDK中可以找到。
然后:
主应用启动Apkplug最简只需要一段代码即可,建议在Application中启动框架。
FrameworkInstance frame=FrameworkFactory.getInstance().start(List<BundleActivator>,Context);
将上一步骤开发好的插件apk,放置在主应用工程里的assets路径下。
如下图:
步骤4:启动主应用
最后启动主应用即可。简单的插件化apk的方法就讲完了,有兴趣的关注我,下次讲云端托管插件实现应用内更新。
5. android studio 多个模块相互依赖怎么混淆
1.SDK项目多模块,编译后每个模块自己生成了1个jar包。但是需求是只对外发布一个jar包,需要进行合并多个jar包。
2.生成的jar包中因为模块引入了网络地图定位导致jar包内有不需要的asset文件杂项
3.多模块的混淆问题
6. Android studio怎么为应用程序添加模块依赖
1进行添加相关的依赖包模块,就需要打开Android studio的程序,进行开发界面中之后,点击菜单“file”》“project structure”。2打开project structure中,在mole中选中一个项目。3进入到该项目中点击中间位置中的“Dependencies”后,进行点击添加。可以看看安卓巴士教程:http://www.apkbus.com/thread-463755-1-1.html
7. 如何从成型的android应用中抽离独立模块
1. 将开发的第三方应用比如应用名为 VTest,项目结构如下图所示:
将项目移到Android系统源码:workspace_Android/packages/apps路径下 [workspace_Android为Android工程,名字是自定义命名的],注意Android工程首先必须是全编过的。
2. 在当前目录(workspace_Android/packages/apps/VTest)下新建一个 Android.mk 文件(这个文件的作用自己google),当然也可以从已有的系统项目,比如Browser中拷贝Android.mk文件然后修改。
修改如下所示:
LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE_TAGS := optional
# Only compile source java files in this apk.
LOCAL_SRC_FILES := $(call all-java-files-under, src)
LOCAL_PACKAGE_NAME := VTest
LOCAL_CERTIFICATE := platform
LOCAL_STATIC_JAVA_LIBRARIES := MapAPI
LOCAL_SHARED_LIBRARIES := MapApiEngine
include $(BUILD_PACKAGE)
# ============================================================
include $(CLEAR_VARS)
LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES :=MapAPI:libs/mapapi.jar
LOCAL_PREBUILT_LIBS :=MapApiEngine:libs/armeabi/libBMapApiEngine_v1_3_5.so
LOCAL_MODULE_TAGS := optional
include $(BUILD_MULTI_PREBUILT)
[说明]:其中 LOCAL_STATIC_JAVA_LIBRARIES 和 LOCAL_SHARED_LIBRARIES 为静态库和共享库,其中的区别自己搜索,这里不再阐述。
8. 如何实现一个简单的Android推送模块
是这样子的,我跟你说下流程吧: 一、在素材管理里面,新建推送的图文或者图片文字消息 二、点击高级功能→编辑模式→自动回复(设置)→关键字自动回复→增加规则 规则名乱写没事 →关键字(也就是你要设置的数字或者字母)→选择右下角的图文或者图片,选择你编辑好的素材 →点保存吧,然后就ok啦 希望能看的明白
9. android 插件化怎么把几个模块一起打包
1、java 里面直接把 .class 文件打包到 .jar 文件里面就可以了,但是 Android 的 Dalvik VM 是不认 Java 的 byte code 的,所以不能直接这么打包,而要用 dx 工具转成 Dalvik byte code 才可以。当然,dx 工具转了之后,jar 包里面就不是 .class 文件了,而是 .dex 文件。 2、可以做成server 利用broadcast,pendingIntent,Intent去通信,再provider数据共享过滤器设置下就能实现这样的效果 3、国内的各大应用市场的安卓客户端就是这么做的,由市场客户端可以下载各个功能客户端,在市场里可以对这些功能客户端进行更新、删除、打开操作。其实如果需求是定制化的应用市场,比如“办公应用市场”,在功能性的规则接口定义好之后,可以增加更多的业务逻辑,比如说“从市场客户端开启功能客户端的具体某个页面”,或者“从市场客户端调用功能客户端的某个功能”。
10. 如何将android模块生成apk
执行:$ cd <android>源码目录 $. build/envsetup.sh $ mmm packages/apps/<xxx> 你所要编译的模块或者你直接打make也可以,模块编译后会在out/target/proct/generic/system/app下生成对应的.apk包