• 现在需要实现将两个项目整合成一个,打包出一个apk文件,安装也是只安装一个App的过程,展示上也是只展示为主项目A的App,通过主项目A的某个按钮跳转,启动项目B,然后执行项目B的业务逻辑。直到B项目退出,又回到A...

    需求
    有两个项目A、B。两个项目相互独立,功能业务逻辑均不同。现在需要实现将两个项目整合成一个,打包出一个apk文件,安装也是只安装一个App的过程,展示上也是只展示为主项目A的App,通过主项目A的某个按钮跳转,启动项目B,然后执行项目B的业务逻辑。直到B项目退出,又回到A项目。
    方案

    1. 将B项目设置成Library类型的项目。B项目右键–Buidle Path–Android 勾选 Is Library。这里写图片描述
    2. 项目A中将B项目加入进来,也是A项目右键–Buidle Path–Android界面中。这里写图片描述
    3. 由于项目B设置成了Is Library后导入到A项目中,但是项目的配置文件却无法跟着导入进去,所以需要将B项目的AndroidManifest.xml的配置信息统一整合到A项目的AndroidManifest中。将B项目的权限要求、Server、Activity的申明都整合到A项目的配置文件中。对于在B中申明的形式如“android:name=”.NotificationService””需要改为带上B项目的包命“android:name=”com.drainemer.server.NotificationService””。

      总结:配置到该程度即已经完成了。在实现过程中,会出现很多问题与冲突。需要一一解决后即可实现项目的整合。

    错误一:项目报存在两个V4包或者V7包错误,这是两个整合的项目都有相同的V4或者V7包,删除一份即可。

    错误二:B中有使用R.id,当A工程引用了B工程时会在A工程的gen目录中生成B的R文件,里面也包含了A的R文件中的内容,但是当B的id定义在layout文件中时需要注意layout的名称,如果A下有个main.xml的layout,B下也有个main.xml的layout,那么A编译时就会将B的main.xml中的所有id忽略,导致混淆报错提示找不到id。所有问题出在,被引用的项目和当前项目之间的资源冲突。假如当前项目存在与被引用项目相同的资源(除了layout外,还包括图片,styles等等)就会默认使用当前项目的资源,完全忽略被引用项目的资源。

    展开全文
  • 今天由于公司业务需要, 经理让安装两个相同的APP到手机上, 考虑到包名是应用程序的唯一标识, 所以在工程列表的app下的build.gradle里, 把applicationId改成了不同的. 然后再使用新的签名文件(也可以使用同一个签名...

    我的开发工具: AndroidStudio

    今天由于公司业务需要, 经理让安装两个相同的APP到手机上, 考虑到包名是应用程序的唯一标识, 所以在工程列表的app下的build.gradle里, 把applicationId改成了不同的. 然后再使用新的签名文件(也可以使用同一个签名文件)重新打包, 这样打包出来的APK就可以和其它的项目同时运行在手机上了. 


    但是这种方法在我华为4.4的手机上可以见效. 在7.0的华为荣耀上却不行, 安装的时候报错,安装不上. 经过搜索和排查,发现是在一些机型上只修改build.gradle里的applicationId是不行的. 还需要修改清单文件里的包名package. 要改成和applicationId里一样的. 然后在项目列表里的包名也要重命名下, 改成和applicationId一样的.这时候再重新打包, 安装到手机上, 就可以了.


    具体截图如下:

    一, 把工程直接复制一份, 然后导入STUDIO并打开. 然后在build.gradle里,把applicationId改成新的, 改什么随你啦. 



    二,在清单文件中, 把包名package修改成和applicationId里一样的内容.


    此时下方的Activity可能会报错, 变红.


    这时候需要再把工程左侧的包名改一下,比如你之前的包名是com.baidu.test 你需要改成com.baidu.test002, 就需要在对应的包名下手动更改下


    找到对应的包, 在上边单击右键选择Refactor - rename , 输入你要更改的包名,然后再点击对话框上的 Refactor, 此时会在STUDIO下方弹出更改包名会涉及到的文件, 直接在大概左下方的位置, 还有一个Refactor, 点击, 然后就更改完毕了. 




    三,然后此时如果你需要更改APP的图标或者名称, 在清单文件里直接更改即可. 然后在菜单栏Build - Generate Signed APK... 里,使用新的或者之前的签名文件从新打个包, 把打包后的APK文件直接发送到手机上, 就可以安装成功了.


    *** 此方法可以装多个相同的APP到手机上. 我装了三个是没有问题的.

    *** 如果你使用新的签名文件打包的话, 并且你的项目中用到了比如高德地图, 友盟分享等功能, 记得要在清单文件里更改第三方的配置文件apikey之类的, 以及在第三方开放平台更改SHA1码和包名等.

    刚开始写博客, 有写的不好的或者不对的地方, 希望各位大神多多指正. 希望能帮到后来的朋友, 谢谢! 欢迎留言讨论!

    展开全文
  • Android studio 两个项目相互依赖 注意: 依赖包中含有全局变量定义:(Application);主项目中也含有全局变量(Application) 解决方式:让主application 继承依赖包中的全局类; 在依赖过程中尽可能不要包含 ...

    Android studio 两个项目相互依赖 注意:

    1. 依赖包中含有全局变量定义:(Application);主项目中也含有全局变量(Application)
      解决方式:让主application 继承依赖包中的全局类;

    2. 在依赖过程中尽可能不要包含 相同的类或者相同的xml文件;这样会导致.R 文件不能知道调用的是哪一个;容易出错!

    3. 依赖过程中要注意的一点:如果两个项目相互依赖;并且每个项目都含有多个各自对应的子依赖包的话; 那么 在主项目A依赖被依赖的项目B 的时候;只要添加对应的B的主项目包即可;不必要添加B中对应的子依赖到A中了(添加过后看看B项目中是否含有对应的子的项目存在;如果不存在那就要重新添加到A主项目中!);

    4. 一定要注意 多Clean ;因为有时候好多莫名其妙的问题都可以是存在缓存导致的;Clean 一下缓存再次尝试更稳妥。

    展开全文
  • 比如有两个项目项目A,和Library项目B,那么打开项目A。 2.在下拉菜单中依次找到New— —Import Module,点击打开项目导入窗口。注意导入的是Module而不是Project,如果是Project的话AndroidStudio会自动打开一个...

    首先说正确的 导入Library的方式:

    1.启动AndroidStudio后,打开你需要接收Library的项目。比如有两个项目,项目A,和Library项目B,那么打开项目A。

    2.在下拉菜单中依次找到New— —Import Module,点击打开项目导入窗口。注意导入的是Module而不是Project,如果是Project的话AndroidStudio会自动打开一个新的窗口编辑,那样的话就是不Library了。
    3.在打开的窗口中点击右侧的"..."浏览窗口,在文件夹窗口中找到你要导入的Library项目的位置,选择后点击底部的OK按钮导入。
    4.导入窗口中显示了该Module(项目)的详细信息,点击Finish完成导入。需要注意的是导入到AndoridStudio项目中的Library也必须是AndroidStudio项目,不能是Eclipse项目,如果是Eclipse项目的话,需要选择导出AndroidStudio项目。

    5.在项目首页中选择Project标签,可以看到项目的文件结构图中多出了我们刚才导入的项目。Library的导入就完成了。

    如图:




    接下来就是各种问题了:

    按F4可以打开调试项目,把该library加入到主项目中

    1.点击顶部左上角的File菜单,在出现的下拉菜单中找到Project Structure,点击进入。

    2.在窗口左侧选择原始的项目后,点击右侧的Dependencies(依赖项)。可以看到项目当前引用的jar包等信息。

    3.点击右侧的“+”添加按钮,在下拉菜单中找到Module Dependency(项目依赖),点击打开项目选择窗口。

    4.选择前面步骤中导入的Library项目后,点击OK按钮导入到原始项目中。

    5.原始项目的依赖项中就出现了导入的Libray项目,这时在项目中就能正确引用Library项目中的内容了,点击底部的OK按钮完成添加。


    你可能会遇到如下问题

    有两个启动项目:

    他并不是一个library,而是和主工程一样的图标,是个小手机的图标,如有多个小手机图标,可以做如下修改


    在我们作为library的项目里,他的头部是apply plugin: 'com.android.application' 
    这句话告诉了Gradle将我们要作为library的项目编译称为application,也就是apk,这就是问题的所在;
    方法就是,将上面该句改为:apply plugin: 'com.android.library'  后,别急 还有问题,Gradle将其编译称为一个Library,也就是库,运行之后,会出现 
    Error  :Libraryprojects cannot set applicationId. applicationId is set to 'package_name' indefault config.
    那是因为一个库不允许设置applicationId,需要将builde.gradle — android — defaultConfig中的applicationId删除。


    swich case的问题


    我们在Android依赖库中使用switch-case语句访问资源ID时会报如下图所示的错误,报的错误是case分支后面跟的参数必须是常数,换句话说出现这个问题的原因是Android library中生成的R.java中的资源ID不是常数

    ADT 14之后,如果在library 项目中,它会没有final关键字。所以必须使用if else来替换,可以一键替换。。。

    build.gradle文件中版本问题



    V4或者V7包的版本号如果是25,那么

    compileSdkVersion 25
    targetSdkVersion 25
    都要改成相应的版本,同时
    buildToolsVersion "23.0.3" 要选用较高的版本,最好实时更新SDK,全部选用最新版本。
    
    
    
    

    展开全文
  • 在把一些错误排查完之后,我把android项目安装到手机上的时候,发现我的app在手机上出现了两个图标。一个图标点开之后是黑屏,一个图标点开之后正常打开我的应用,如果卸载其中一个的话,则是把两个都删掉。

    公司产品和项目总算预期提前完成,我们便马不停蹄地将Eclipse更换成Android的开发工具,将前面的各种bug解决后总算可以运行了。可是安装后发现在手机上有两个应用图标,并且点击不同的应用图标进去的是不同的Activity,如果点击其中任何一个图标进行卸载,则连个图标的应用都会被卸载,我连续装了好几次都是这样,而之前eclipse项目的时候则没有这个问题。我检查了一下自己的代码,发现了问题出在了清单文件上。我的项目除了自己应用的主要代码,还导入了好几个库,也就是library。但是在导入的过程中,自己的studio项目中有一个library库的manifest.xml生成了下面的代码:

    <application  
        android:allowBackup="true"  
        android:icon="@drawable/ic_launcher"  
        android:label="@string/app_name"  
        android:theme="@style/AppTheme" >  
        <activity  
            android:name="cn.org.bjca.ywq.activity.MainActivity"  
            android:label="@string/app_name" >  
            <intent-filter>  
                <action android:name="android.intent.action.MAIN" />  
    
                <category android:name="android.intent.category.LAUNCHER" />  
            </intent-filter>  
        </activity>  
    </application>  

    可能在安装的时候,默认是两个app了,那么我们只要把上面的一段代码删掉再安装就可以了,错误就不见了。或者也可以这么说,检查我们的项目中是否有多个

    <category android:name="android.intent.category.LAUNCHER"/>

    如果有的话,把多余的去掉就可以了。
    如果使用的是aar包的话,那么也需要将该module中的清单文件检查一下,不能指定LUNNCHER项。

    展开全文
  • 譬如,有时候业务需要将两个独立发展的工程整合成一个。android开发发展了这么多年,早年主要靠android标准库,现在慢慢发展到各种各样第三方库极大丰富。早年app工程比较简单,java代码、jni代码、res、manifest这...
  • Android项目中出现多名字相同的重复文件,Android studio就不知道该引用哪个文件,这是就会报错! 我的错误例如以下: 其实这是同一类型问题,产生的原因是有多于一相同名称的文件存在,系统不知道该...
  • Android Studio 如何打开两个项目,以及切换到另一个项目 如图: 切换项目
  • 小组完成一个APP的时候,往往分工一个人实现一个功能,功能往往对应独立界面,但是最后整合的时候总会出现很多问题,我也一样,新手上路,突发奇想,看能不能把两个APP接在一起,网上也有很多教程,要不是很老了,...
  • 在把一些错误排查完之后,我把android项目安装到手机上的时候,发现我的app在手机上出现了两个图标。一个图标点开之后是黑屏,一个图标点开之后正常打开我的应用,如果卸载其中一个的话,则是把两个都删掉。
  • 今天由于公司业务需要, 经理让安装两个相同的APP到手机上, 考虑到包名是应用程序的唯一标识, 所以在工程列表的app下的build.gradle里, 把applicationId改成了不同的. 然后再使用新的签名文件(也可以使用同一个签名...
  • 今天在打开一个Android 工程的时候,想打开另外的一个工程,弹出下面的对话框 然后我选择了【This Window】,并且勾选了【Remember,dont’t ask again】选项框,如下所示 这样新打开的工程就替换了当前的工程,在...
  • 如果想把一个项目,比如项目X,做为另外一个项目,比如Y,的一部分,那么可以将项目X转换为库,编译成为一jar文件,然后把这jar文件加入Y项目的构建路径就行了。 最后一种,完全合并成一个项目。目前只能
  • 需求是这样的,有一个Android项目,里面要添加一个unity3D做的模块,然后把它们融合到一个项目中,操蛋的是两个独立的项目,还是unity3D融合到Android项目中,如果是在项目设计架构之前选择一个为基点做二次开发,那...
  • 复制eclipse下的Android项目,成为一个新项目,这两个项目独立共存。 1、修改.project文件下的 改为不同的名字 appname 2、改包名 选择项目右键弹出菜单,选择android tools -----> rename application...
  • 在编写对数据库差异化处理的时候,差异化就是把请求的json对象存入数据库时,当数据库有相同的数据时不更新,否则更新或插入。这里需要取出数据库的数据封装成对象。 对于内容的比较,这里使用重写类的equal()和...
  • 可能是你依赖的项目中有这个  所有会出现两个图标,都可以启动 删掉就好了 如果你还有不同的解决办法,欢迎指正
  • 最近导入了很多类似的项目,一是普通java项目,一android项目, 第二是将该项目简单移植到android所建立的.   导出方法及遇到的问题: 问题一: 首先,分别导出项目比如XXX和XXX-android   然后...
  • 前两天开发Unity时,由于用到...最后将AndroidManifest.xml文件进行了修改,将各个三方的xml文件进行了集合,再在Unity中使用,打包后安装发现,手机桌面上出现两个一样的应用,最后检查发现xml文件中出现了相同语句:
  • 我手里有两个安卓项目so和TestRotateAnim,我想在so项目上有一个按钮,一点击就跳转到TestRotateAnim这个项目上。话不多说直接上图。![![![图片说明]...
1 2 3 4 5 ... 20
收藏数 269,149
精华内容 107,659