Android 包名mave 打包 找不到符号到

android使用第三方jar包,出错notfound - j2eedengzhangtao - ITeye博客
博客分类:
使用第三方jar包
除了我以下介绍的方法,别的方法我基本上都试验过,均会出现编译或运行错误。以下方法经测试编译和运行都完全没问题。
方法1:Eclipse下,
右键工程,
Build path,
java build path,选择libraries
在右边的按钮中点击“Add Library”
选择“User library”,点击“下一步”
点击“User librarys”按钮
在出现的界面中点击“New..”按钮
在弹出的界面中随便起一个名字,点击“确定”
点击“Add jars”按钮选择第三方jar包,点击“确定”完成。
后面的步骤很重要,如果不进行后面的操作。在Eclipse里显示编译通过,不会有错误,但在模拟器或真机上运行的时候可能就会出现java.lang.noclassdeffounderror之类的错误:
1、在Android项目根目录下新建一个libs文件夹;
2、把你需要的导入的第三方Jar包复制进这个目录;
3、在libs目录上点右键,选Bulid path& –& Use as source folder。
方法2,android源码环境下,
1,将out/target/common/obj/JAVA_LIBRARIES/powersave_intermediates下的classess.jar文件放在自己的工程目录下。out/target/product/ventana/system/framework目录下的jar包用以下方法经验证是不好使的,因为他已经打成dex文件了,在工程里引用其包是不行的;
2,修改android.mk文件,如下:
LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE_TAGS := optional
LOCAL_SRC_FILES := $(call all-java-files-under, src)
LOCAL_STATIC_JAVA_LIBRARIES := libpowerjar libpowersave
LOCAL_PACKAGE_NAME := testPowerjar
LOCAL_CERTIFICATE := platform
include $(BUILD_PACKAGE)
##############################################
include $(CLEAR_VARS)
LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES := libpowerjar:classes.jar libpowersave:testlily.jar
include $(BUILD_MULTI_PREBUILT)
# Use the folloing include to make our test apk.
include $(call all-makefiles-under,$(LOCAL_PATH))
解释:LOCAL_STATIC_JAVA_LIBRARIES := libpowerjar和LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES := libpowerjar:classes.jar其实libarity是个名字可以随便取,两个属性的值要一样就好了,但是后面那个冒号里面就一定要写你的jar包名,你的jar包一定放在工程的根目录就好了。我这里是使用两个jar包的例子。
3,源码目录下编译即可:# mmm package/app/testPowerjar,如果出错提示说找不到jar包所打的package,那么请#touch classes.jar 即可.
生成jar包:
方法1:Eclipse下,
1. 创建java 或android project;
2. 工程属性java build path-&Libraries中加入android.jar
3. package explorer中右键点击工程,export java-&jar file.
方法2:Android源码环境下
1,修改Android.mk文件,
LOCAL_PATH:= $(call my-dir)
# the library
# ============================================================
include $(CLEAR_VARS)
LOCAL_MODULE_TAGS := optional
LOCAL_SRC_FILES := powersave.java&&&&&&&&&&&
LOCAL_MODULE := powersave
include $(BUILD_JAVA_LIBRARY)
# additionally, build unit tests in a separate .apk
include $(call all-makefiles-under,$(LOCAL_PATH))
2,编译 # mmm powersave(自己的模块)
其中,BUILD_JAVA_LIBRARY代表生成jar包,包的位置放在out/target/product/ventana/system/framework和out/target/common/obj/JAVA_LIBRARIES/powersave_intermediates(自己的模块)下,
dengzhangtao
浏览: 437974 次
来自: 上海
参考:http://www./bl ...
哥们 我做的数据也都是错误的啊····我怎么可以知道自己otg ...
楼主,我这里有个问题!我这里有个自己制作的font.ttf,这 ...
既然springMVC比struts好那么多的话那struts ...Android程序编译时更改包名
- niyanshi - ITeye博客
博客分类:
Android项目开发中有时候需要改动apk的包名,比如希望能同时安装测试/debug版本和正式版。比较容易的方法是在eclipse中右键点击项目,选择Android Tools-&Rename Application Package。但是这样做比较麻烦,实际上我们也可以通过build脚本在打包时修改包名,方法如下。
ant, 在build.xml中加入下面一段。
&target name="-package-resources" depends="-crunch"&
&!-- only package resources if *not* a library project --&
&do-only-if-not-library elseText="Library project: do not package resources..." &
&aapt executable="${aapt}"
command="package"
manifestpackage="your pakcage name"
versioncode="${version.code}"
versionname="${version.name}"
debug="${build.is.packaging.debug}"
manifest="${out.manifest.abs.file}"
assets="${asset.absolute.dir}"
androidjar="${project.target.android.jar}"
apkfolder="${out.absolute.dir}"
nocrunch="${build.packaging.nocrunch}"
resourcefilename="${resource.package.file.name}"
resourcefilter="${aapt.resource.filter}"
libraryResFolderPathRefid="project.library.res.folder.path"
libraryPackagesRefid="project.library.packages"
libraryRFileRefid="project.library.bin.r.file.path"
previousBuildType="${build.last.target}"
buildType="${build.target}"
ignoreAssets="${aapt.ignore.assets}"&
&res path="${out.res.absolute.dir}" /&
&res path="${resource.absolute.dir}" /&
&!-- &nocompress /& forces no compression on any files in assets or res/raw --&
&!-- &nocompress extension="xml" /& forces no compression on specific file extensions in assets and res/raw --&
&/do-only-if-not-library&
2. maven,在maven的build插件中加入下面一句
&groupId&com.jayway.maven.plugins.android.generation2&/groupId&
&artifactId&android-maven-plugin&/artifactId&
&version&3.6.0&/version&
&configuration&
&renameManifestPackage&com.napa.bluelion.reading.xzhz&/renameManifestPackage&
&/configuration&
gradle, gradle已经考虑了我们这点需求,可以直接为测试和正式版打出两个不同包名的Apk
可以直接在android default config中指定包名
compileSdkVersion 15
defaultConfig {
packageName: your package name
testPackageName: your test package name
也可以指定不同的productFlavors
defaultConfig {
minSdkVersion 8
versionCode 3001
productFlavors {
versionCode 3001
packageName: your packageName0
minSdkVersion 2500
packageName: your package name1
注意事项。有时我们会在代码中通过如下方式动态获取资源文件的id来加载资源文件。
int resId = getResources().getIdentifier(resName, "drawable", getPackageName());
这里的getPackageName会在编辑java代码时被编辑成Manifest文件中指定的package名字,导致我们在打包是改了包名以后出现运行时错误,找不到对应的资源文件。这时我们需要通过下面的方式在运行时动态获取pacakge name。
String packageName = getResources().getResourcePackageName(R.string.app_name);//这里的R.string.app_name是一个已经存在的资源。
int resId = getResources().getIdentifier(resName, "drawable", packageName);
原理:应用的包名其实不同于java代码的package名字。他实际上是appt工具在把资源文件编译成二进制时候用来生成资源的唯一标识用的。aapt在打包资源的时候会读取manifest文件中的包名来生成资源标识。所以以上的修改方式也就是通过在编译打包时指定package名字实现的。
浏览: 12889 次
来自: 杭州
感谢分享,又多了一款神器。不知道博主有没有试过基于intel驱 ...
果然,我用intellij的自带模拟器启动半天没出来!用eclipse导入查看mtk android2.36的源码时找不到包名:android.os.Looper 的错误解决办法
以前在eclipse下导入2.1的时很顺利,基本没有错误。今天拿到mtk6573(android2.36)源码,在eclipse中导入时,发现很多地方提示无法引入android.os.Looper 的错误,经查找发现在2.1的源码中, 在framework/.../os目录下是Looper.java文件,而在android2.36中,该文件不存在,但在utils下发现Looper.cpp文件,可能新版已经将Looper改为Navite代码,源码可以在命令行下正确编译,因此确定源码本身是没有问题的,猜想可能是需要引入某个jar库,于是将编译后的Framework的jar引入,问题得到解决。具体操作如下:
在项目上单击右键,选择&属性&,选择 java build path,选中 Libraris 页,执行 Add Jars,从android源码目录下找到如下的jar加入:
out\target\common\obj\JAVA_LIBRARIES\framework_intermediates\classes.jar
注意:以上操作的前提是必须先在linux中成功编译全部源码,否则找不到上述jar文件。
摘自 勇敢的心_求教:源码中引入了android.jar包中没有的类 - ITeye问答
我在看2.2的gallery源码,我新建了一个gallery项目,然后把Java文件、配置文件和资源文件都粘了进去,想运行一下这个项目,看看他的运行流程(这里先请问下高手,可以这样建项目不?呵呵)
可是Java文件中出现了好多引入的包找不到的错误,
import android.media.MediaMetadataR//这个前面打×说没有这个包,我去android.jar包里看了看,果然没有,那为什么源码里就会引入这个类呢,源码总不会出错吧。
还有好多Java文件都是这样呢,找不到引入的包如下;
import android.provider.DrmS
问题补充:bywyu 写道1.认为作为一个初学者没有必要就直接看比较复杂的代码
2.创建android项目的时候有三个选项
&&& 1.就是直接创建一个项目
&&& 2.导入源码创建项目,(如果你有源码的话推荐你使用这种)
&&& 3.运行SDK中自带的demo,根据选择的不同的target来运行不同的demo
1.俺是新手,但这是工作需要。
2.我试过了,导入源代码项目出的问题跟这个一模一样
问题仍待解决,纠结中。。
楼主问题解决了没?我现在也遇到这个问题!android.provider.DrmStore没发现!尝试了好几个sdk都存在这样子的问题,求指教!
/sdk/platform/XX/data/layoutlib.jar 导入看看
忘告诉你了
&&&& 你那是没有导包,你把Analytics_Android_SDK_1.0.jar这个包导进去
1.认为作为一个初学者没有必要就直接看比较复杂的代码
2.创建android项目的时候有三个选项
&&& 1.就是直接创建一个项目
&&& 2.导入源码创建项目,(如果你有源码的话推荐你使用这种)
&&& 3.运行SDK中自带的demo,根据选择的不同的target来运行不同的demo
已解决问题
未解决问题Android 在一个程序中启动另一个程序(包名,或者类名) - 海王 - 博客园
随笔 - 548
Android 开发有时需要在一个应用中启动另一个应用,比如Launcher加载所有的已安装的程序的列表,当点击图标时可以启动另一个应用。一般我们知道了另一个应用的包名和MainActivity的名字之后便可以直接通过如下代码来启动:Intent intent = new Intent(Intent.ACTION_MAIN);intent.addCategory(Intent.CATEGORY_LAUNCHER);&&& &&& &&&&ComponentName cn = new ComponentName(packageName, className);&&& &&& &&&&intent.setComponent(cn);startActivity(intent);但是更多的时候,我们一般都不知道应用程序的启动Activity的类名,而只知道包名,我们可以通过ResolveInfo类来取得启动Acitivty的类名。下面是实现代码:private void openApp(String packageName) {PackageInfo pi = getPackageManager().getPackageInfo(packageName, 0);Intent resolveIntent = new Intent(Intent.ACTION_MAIN, null);resolveIntent.addCategory(Intent.CATEGORY_LAUNCHER);resolveIntent.setPackage(pi.packageName);List&ResolveInfo& apps = pm.queryIntentActivities(resolveIntent, 0);ResolveInfo ri = apps.iterator().next();if (ri != null ) {String packageName = ri.activityInfo.packageNString className = ri.activityInfo.Intent intent = new Intent(Intent.ACTION_MAIN);intent.addCategory(Intent.CATEGORY_LAUNCHER);ComponentName cn = new ComponentName(packageName, className);intent.setComponent(cn);startActivity(intent);}}
阅读(...) 评论()
Copyright & 海王
Powered by:
模板提供:

我要回帖

更多关于 recovery找不到刷机包 的文章

 

随机推荐