apkplug.com授权码不正确怎么回事

当前访客身份:游客 [
理想与未来看齐,思想与现实同步
:引用来自“刘斯龙”的评论有这个的源码吗?apkpl...
:有这个的源码吗?
:请问这个监控服务何时启动?如何手动启动和关闭?...
:引用来自“东尼”的评论有没有文档,怎么运行这个...
:有没有文档,怎么运行这个项目?
:很棒的体验。
:引用来自“华_琼”的评论 引用来自“梁大帅”的评...
今日访问:22
昨日访问:41
本周访问:159
本月访问:346
所有访问:11204
android下apkplug通用主题(皮肤)切换解决方案之主题包开发-02
发表于1年前( 12:48)&&
阅读(673)&|&评论()
0人收藏此文章,
apkplug是一个插件化通用框架,但其还有一个功能是可以支持应用主题切换。apkplug提供一个完整的通用的优美的主题(皮肤)切换解决方案。30分钟即可为自己的app搭建一个简单可扩展的主题切换功能
该文章是基于apkplug V1.6.8 进行说明的
&&&&我们提供了一个demo做为参考,项目下载地址为:
该&IMThemeDemo 实现了简单的聊天泡泡切换功能,同时主题包(插件)是托管在apkplug的云服务器上的。所以要阅读项目的完整代码可以先看插件托管服务开发系列文章 &&
demo运行效果图:
&上一篇文章我们实现了主应用的开发,本篇应用我们开发主题包(插件)。
一,主题包说明
&&&&&&&apkplug主题(换肤)解决方案中的主题包本质上是一个完整的apk应用程序或者说是apkplug的插件,但它有以下的不同
&&&&&&&&1.主题包对外提供主题样式资源。
&&&&&&&&2.主题包必须上传apkplug官网进行编译,生成的apk才能提供主题切换。否则即为普通apk
二,主题包(插件)搭建
&&&&1.按照普通app创建流程创建安卓工程
&&&&2.按照apkplug插件开发流程添加必要文件 &&
&&&&&&&&osgi.jar应使用osgi1.6.8.jar
&&&&3.将主应用导出的主题切换接口jar包(IMTheme.jar)导入工程
&&&&&&&&com.apkplug.imthemedemo.themeinterface.chatstyles
三,创建主题控件样式资源
&&&&与普通app开发一样,我们创建一些用于聊天泡泡按钮背景的资源,它们可以是图片或者xml样式,最终都将以R.id的形式传递给主应用进行替换
四,添加主应用约定的chatstyles服务
&&&&com.apkplug.imtheme1.SimpleBundle&&&&
ServiceReference reference=mcontext.getServiceReference(ThemeControl.class.getName());
if(null!=reference){
ThemeControl service=(ThemeControl) mcontext.getService(reference);
if(service!=null){
service.addStyles(mcontext, chatstyles.class.getName(),
new chatstyles(){
public int chat_left_msg_background() {
return R.drawable.chat_btn_
public int chat_right_msg_background() {
return R.drawable.chat_btn_
public int Version() {
public int chatbackground() {
return R.drawable.menu_
mcontext.ungetService(reference);
注意:此时仅是添加并未真正设置为可替换的样式(主应用ThemeChengFactory接口监听不到)。只有当该主题包被设置为主题以后才会真正注册。
五,将主题包设置为apkplug框架当前可用替换主题包
&&&&com.apkplug.imtheme1.MainActivity
public void setTheme1(int themeid) throws Exception{
BundleContext mcontext=BundleContextFactory.getInstance().getBundleContext();
ServiceReference reference=mcontext.getServiceReference(ThemeControl.class.getName());
if(null!=reference){
ThemeControl service=(ThemeControl) mcontext.getService(reference);
if(service!=null){
//设置自身为apkplug框架当前可用主题包
service.setTheme(mcontext, mcontext.getBundle(),themeid);
mcontext.ungetService(reference);
这一步在界面表现为用户点击以下按钮:
用户点击此按钮以后该主题包被设置为apkplug层主题,且ThemeChengFactory也将监听到该主题包SimpleBundle中所提供的chatstyles接口服务,同时com.apkplug.imthemedemo.activity.MainActivity也将监听到主题切换事件从而重绘界面。&&&&
六,注意事项
&&&&主题包之间如果资源重用会引起资源冲突,所以我们应当隔离两个主题包之间的资源。通过在主题包
AndroidManifest.xml 文件中配置
&meta-data android:name="apkplug-theme" android:value="Main-Bundle-Hide"&&/meta-data&
禁止主题包activity使用apkplug层的主题,从而防止资源冲突&
android:name="com.apkplug.imtheme1.MainActivity"
android:label="@string/app_name" &
&meta-data android:name="apkplug-theme" android:value="Main-Bundle-Hide"&&/meta-data&
&intent-filter&
&action android:name="android.intent.action.MAIN" /&
&category android:name="android.intent.category.LAUNCHER" /&
&/intent-filter&
&/activity&
七,打包源码包并上传服务器编译
&&&&主题包与普通插件有所不同,不能在本地编译器进行编译,需要将源码包上传服务器进行编译生成apk文件
&&&&1.打包源码包
&&&&&&&&注意:源码包内不能包含中文名称的文件或路径,打包文件zip格式且为根路径
&&&&2.上传云服务器编译生成apk主题包
&&&&3.编译成功以后下载apk主题包
&&&&&&&&该主题包是未签名主题包,开发者可用签名工具自行签名,主题包所有的资源与文件版权都归开发者所有
八,将主题包(插件)安装到主应用中
&&&&我们得到的主题包apk文件是一个完整的app插件,通过apkplug提供的接口可以安装到主应用中&&
九,IMThemeDemo项目简单说明
&&&& IMThemeDemo插件管理与安装是使用的apkplug插件托管服务,可查看相关教程了解&&
1)">1)">1" ng-class="{current:{{currentPage==page}}}" ng-repeat="page in pages"><li class='page' ng-if="(endIndex<li class='page next' ng-if="(currentPage
相关文章阅读阅读本节内容前可先了解&
本教程是基于apkplug V1.6.8 版本编写& 最新开发方式以官网为准
可下载最新的apkplugdemo源码
apkplugdemo演示图
一 apkplugdemo工程源码结构
&&&&&&&&|-com.apkplugdemo.adapter&&&&&&&&&&&& --插件列表Adapter
&&&&&&&&|-com.apkplugdemo.adapter.base&&&&& --adapter 基类
&&&&&&&&|-com.apkplugdemo.FileUtil&&&&&&&&&&&&&& --文件操作类
&&&&&&&&|-com.apkplugdemo.FileUtil.filter&&&&&&& --文件类型过滤类
&&&&&&&&|-com.apkplugdemo.util&&&&&&&&&&&&&&&&&&& --项目通用工具类
&&&&&&&&|-com.apkplugdemo.util.Observer&&&&&& --java观察者设计模式类
&&&&&&&&|-com.apkplugdemo.util.preferencesFactory& --preferences操作类
&&&&&&&&|-com.example.apkplugdemo&&&&&&&&&&&&&--项目application 和activity类
&&&&&&&&|-huahua.viewpager&&&&&&&&&&&&&&&&&&&&&&&& --与com.example.apkplugdemo功能相同 只是提供fragment方式展示
二 阅读方式
&&&&根据以上结构可以看出除去工具类我们需要阅读的代码并不多
&&& com.apkplugdemo.adapter.ListBundleAdapter&&& --负责首页列表Item展示以及 &运行&按钮事件
&&&&com.example.apkplugdemo.ProxyApplication& && --负责启动apkplug框架,以及安装assets目录下的插件 (通过InstallBundle类安装)
&&& com.example.apkplugdemo.MyProperty&&&&&&&&&&& --启动框架需要的接口类,为框架提供本地化变量保存于获取的接口 (老版本还提供自启插件的安装& v1.6.8版本用BundleControl服务替代)
&&&&com.example.apkplugdemo.MainActivity&&&&&&&&&& --项目启动类,展示已安装插件列表,提供安装SD卡中插件的按钮等功能&
&&&&com.example.apkplugdemo.InstallBundle&&& --启动assets目录下的插件&&&&&&
三 ProxyApplication
&&&&ProxyApplication 只启动框架 然后调用InstallBundle启动插件
public&void&onCreate()
&&&&super.onCreate();
&&&&&&&&List
activators=new&java.util.ArrayList&BundleActivator&();
&&&&&&&&activators.add(new&appServiceManager());
&&&&&&&frame=FrameworkFactory.getInstance().start(activators,this,new&MyProperty(this.getApplicationContext()));
&&&&&&&&BundleContext
context =frame.getSystemBundleContext();
&&&&&&&&InstallBundle
ib=new&InstallBundle();
&&&&&&&ib.installBundle(getApplicationContext(),
&&&&&&&&&&&&new&installCallback(){
&&&&&&&&&&&&&&&&@Override
&&&&&&&&&&&&&&&&public&void&callback(int&arg0,
Bundle arg1) {
&&&&&&&&&&&&&&&&&&&&if(arg0==installCallback.stutas5||arg0==installCallback.stutas7){
&&&&&&&&&&&&Log.d(&&,String.format(&插件安装
%s : %d&,arg1.getName(),arg0));
&&&&&&&&&&&&&&&&&&&&return;
&&&&&&&&&&&&&&&&&&&&}else{
&&&&&&&&&&&&&&&&&&&&&&&&Log.d(&&,&插件安装失败
:%s&&#43;arg1.getName());
&&&&&&&&&&&&&&&&&&&&}
&&&&&&&&&&&&&&&&}
&&&&&&&&});
&&&&&&&}catch&(Exception
&&&&&&&&&&&&System.err.println(&Could
not create : &&&#43;
&&&&&&&&&&&&ex.printStackTrace();
&&&&&&&int&nPid
= android.os.Process.myPid();
&&&&&&&&&&&&android.os.Process.killProcess(nPid);
四 InstallBundle 安装插件实现
&&&&InstallBundle 是调用BundleControl实现将assets目录中的apk文件安装到宿主应用中的,详细可看&&&
//从assets目录中复制apk文件到SD卡中
InputStream in=context.getAssets().open(&BundleDemoOSGIService1.apk&);
File f0=new File(context.getFilesDir(),&BundleDemoOSGIService1.apk&);
if(!f0.exists()){
copy(in, f0);
//第一次启动时执行安装,以后就不执行了
// startlevel设置为1插件会自启 isCheckVersion不检测插件版本覆盖更新
this.install(mBundleContext,&file:&&#43;f0.getAbsolutePath(),callback,1,false);
五 MainActivity 界面代码
&&&&MainActivity 初始化函数
&&&&&&&&initBundleList()&&&&&&&&&&&&& -- 获取已安装插件& &&
&&&&&&&&ListenerBundleEvent()&&& --监听插件安装事件 &&
apkplugdemo有关于apkplug框架的调用就是这些了,其他工具性的代码感兴趣的同学可以自己看。
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:56823次
积分:1036
积分:1036
排名:千里之外
原创:42篇
评论:57条
(1)(1)(1)(22)(1)(2)(5)(4)(1)(4)三星平板 显示 not authorized by apkplug!_百度知道
三星平板 显示 not authorized by apkplug!
6,建议设置为20mhz),但是依然无法上网.如果仍然不能WLAN上网、三包凭证和平板到三星服务中心由工程师进行检测、路由器复位。5.请确认路由器的传输带宽(支持802。4;网关,再次确认路由器网络是否正常.备份平板重要数据后恢复出厂设置尝试若问题依然存在。方式,建议尝试使用静态IP:设定--WLAN-选择一个无线热点-显示高级选项-打钩-向下滑动屏幕-IP设定-静止-IP地址&#47:1。2.确认路由器中是否设置了IP地址过滤&#47。3.连接其他路由器尝试尝,然后重新连接无线网络.把平板关机重启,建议您;MAC地址过滤,建议您携带购机发票若平板显示已连接无线网络.11n的路由器支持的带宽为40mhz
数码网络营销专家
其他类似问题
为您推荐:
三星的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁您的商业版授权码不正确,请联系商务获取正确的授权码 apkplug-business-auth_百度知道
您的商业版授权码不正确,请联系商务获取正确的授权码 apkplug-business-auth
脑显示这些什么意思
我有更好的答案
卸载jj就好,试试重新下载
其他类似问题
为您推荐:
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁}

我要回帖

更多关于 apkplug.com 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信