使用Lib文件夹更改包装名称Android/Maven

问题描述:

我正在为我的项目构建过程。基本上我想从同一个来源构建2个应用程序。我使用不同的配置文件来做到这一点。使用Lib文件夹更改包装名称Android/Maven

我已经设法配置maven更改应用程序内的名称和网址。我还需要更改包装,因此这两个应用程序可以同时在设备上。

我的项目设置与父POM和2分孩子的POM

的第一个孩子POM是它打包为APKlib库。 packaing是com.companylib

第二个孩子POM是创建实际APK并引用apklib。这是打包成com.company。

目前我正在使用此配置更改清单中的打包。

   <plugin> 
        <groupId>com.jayway.maven.plugins.android.generation2</groupId> 
        <artifactId>android-maven-plugin</artifactId> 
        <inherited>true</inherited> 
        <configuration> 
         <renameManifestPackage>${manifest_pakage}</renameManifestPackage> 
         <sign> 
          <debug>false</debug> 
         </sign> 
         <zipalign> 
          <verbose>true</verbose> 
          <inputApk>${project.build.directory}/${project.artifactId}.apk</inputApk> 
          <outputApk>${project.build.directory}/${project.artifactId}-signed-aligned.apk 
          </outputApk> 
         </zipalign> 
         <manifest> 
          <debuggable>true</debuggable> 
          <versionCodeAutoIncrement>true</versionCodeAutoIncrement> 
         </manifest> 
         <proguard> 
          <skip>true</skip> 
         </proguard> 

        </configuration> 
        <executions> 
         <execution> 
          <id>manifestUpdate</id> 
          <phase>process-resources</phase> 
          <goals> 
           <goal>manifest-update</goal> 
          </goals> 
         </execution> 
         <execution> 
          <id>alignApk</id> 
          <phase>package</phase> 
          <goals> 
           <goal>zipalign</goal> 
          </goals> 
         </execution> 
        </executions> 
       </plugin> 

我在我使用的不同配置文件中定义了manifest_pakage。这是在第一个孩子POM中定义的。

两个配置文件都可以正常工作,我可以将它们都安装在同一个设备上。但是,当roboguice尝试引用APKLIB时,我遇到了登台应用程序中的问题。我收到以下错误...

FATAL EXCEPTION: main 
com.google.inject.ConfigurationException: Guice configuration errors: 
1) No implementation for com.companylib.ServerComms.Senders.StringSenderImp annotated with @com.google.inject.name.Named(value=json) was bound. 
    while locating com.companylib.ServerComms.Senders.StringSenderImp annotated with @com.google.inject.name.Named(value=json) 

因此,看起来apklib上的包装没有改变。奇怪的是,我更换生产包装,它工作正常(我用相同的包装取代它)。

当我像这样设置时,我应该期望构建更改lib的打包吗?

如果lib与主应用程序有不同的软件包名称,可以吗?

在我的情况下,我这样做,并得到它的工作。 (我使用的Eclipse IDE)

  1. 选择项目和老包的名称做了file search,并用新的软件包名称替换。 (这将替换项目文件中的所有旧包名称)

  2. 右键单击package --> Refactor --> Rename。替换为新的软件包名称。这将取代软件包配置。

    (如果你这样做的第一步之前,如果您有 .YourActivity代替 (com.project.package.name.YourActivity)在你的清单中声明全包的名称, 可能会导致错误)

  3. 再次选择该项目并做文件搜索。这次,如果您使用的是AndroidAnnotations,则会显示带注释的文件,并在此处用新包名替换其导入。

注:如果您使用的是自己的插件或使用旧包名称库,您可能需要确保它是在孩子pom.xml一样,它也将被替换。

希望这有助于..! :)快乐编码..!