我正在为我的项目构建流程。基本上我想从同一个源构建2个应用程序。我使用不同的配置文件来执行此操作。
我已设法配置maven更改应用内的名称和网址。我还需要更改包装,以便两个应用程序可以同时在设备上。
我的项目设置了父POM和2个子POM
第一个子POM是一个包装为APKlib的库。打包是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与主应用程序的包名称不同,可以吗?
答案 0 :(得分:0)
就我而言,我是这样做的并且让它运转起来。 (我正在使用Eclipse IDE)
选择项目并为旧包名执行file search
并替换为新包名称。 (这将替换项目文件中的所有旧包名称)
右键点击package --> Refactor --> Rename
。替换为新的包名称。这将取代包配置。
(如果你在第一步之前这样做,如果你有
.YourActivity
而不是整个包名
(com.project.package.name.YourActivity
)在你的清单中声明,
它可能会导致错误)
再次选择项目并进行文件搜索。这次,如果您使用AndroidAnnotations
,它将显示带注释的文件,并在此替换新的包名称将替换其导入。
注意:如果您使用自己的插件或具有旧包名称的库,则可能必须确保它在子pom.xml
中是相同的,因为它也将被替换
希望这会有所帮助..! :)快乐的编码..!